adams-visiona 1.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 (1783) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.txt +50 -0
  3. data/Dockerfile +71 -0
  4. data/Gemfile +11 -0
  5. data/Guardfile +27 -0
  6. data/LICENSE.txt +879 -0
  7. data/Manifest.txt +1781 -0
  8. data/README.md +15 -0
  9. data/Rakefile +345 -0
  10. data/adams-visiona.gemspec +107 -0
  11. data/appveyor.yml +32 -0
  12. data/autohotkey/config/data/attitude.bin +0 -0
  13. data/autohotkey/config/data/diamond.STL +58 -0
  14. data/autohotkey/config/data/groundoff.gif +0 -0
  15. data/autohotkey/config/data/groundon.gif +0 -0
  16. data/autohotkey/config/data/position.bin +0 -0
  17. data/autohotkey/config/data/satellite.gif +0 -0
  18. data/autohotkey/config/data/tada.wav +0 -0
  19. data/autohotkey/config/system/system.txt +29 -0
  20. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +126 -0
  21. data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +270 -0
  22. data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -0
  23. data/autohotkey/config/targets/INST/doc/README.txt +1 -0
  24. data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -0
  25. data/autohotkey/config/targets/INST/lib/sim_inst.rb +307 -0
  26. data/autohotkey/config/targets/INST/screens/_footer.txt +4 -0
  27. data/autohotkey/config/targets/INST/screens/adcs.txt +46 -0
  28. data/autohotkey/config/targets/INST/screens/array.txt +7 -0
  29. data/autohotkey/config/targets/INST/screens/block.txt +8 -0
  30. data/autohotkey/config/targets/INST/screens/commanding.txt +30 -0
  31. data/autohotkey/config/targets/INST/screens/extra.txt +19 -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 +46 -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/sequences/run_sequence.txt +1 -0
  43. data/autohotkey/config/targets/INST/target.txt +27 -0
  44. data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -0
  45. data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -0
  46. data/autohotkey/config/targets/META/screens/data.txt +12 -0
  47. data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -0
  48. data/autohotkey/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
  49. data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
  50. data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  51. data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -0
  52. data/autohotkey/config/targets/SYSTEM/screens/limits_change.txt +14 -0
  53. data/autohotkey/config/targets/SYSTEM/screens/meta.txt +14 -0
  54. data/autohotkey/config/targets/SYSTEM/target.txt +12 -0
  55. data/autohotkey/config/tools/cmd_sender/cmd_sender.txt +1 -0
  56. data/autohotkey/config/tools/cmd_sequence/cmd_sequence.txt +2 -0
  57. data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -0
  58. data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -0
  59. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  60. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  61. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  62. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  63. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  64. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  65. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  66. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  67. data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  68. data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  69. data/autohotkey/config/tools/handbook_creator/default_toc.xsl +59 -0
  70. data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -0
  71. data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  72. data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  73. data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  74. data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -0
  75. data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  76. data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  77. data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  78. data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  79. data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  80. data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  81. data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  82. data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  83. data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -0
  84. data/autohotkey/config/tools/launcher/launcher.txt +38 -0
  85. data/autohotkey/config/tools/limits_monitor/README.txt +1 -0
  86. data/autohotkey/config/tools/opengl_builder/error.txt +1 -0
  87. data/autohotkey/config/tools/script_runner/script_runner.txt +3 -0
  88. data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +6 -0
  89. data/autohotkey/config/tools/table_manager/OldOneDimensionalTable_def.txt +19 -0
  90. data/autohotkey/config/tools/table_manager/OldTwoDimensionalTable_def.txt +248 -0
  91. data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +31 -0
  92. data/autohotkey/config/tools/table_manager/SubTables/OneDimensionalSubTable_def.txt +31 -0
  93. data/autohotkey/config/tools/table_manager/SubTables/TwoDimensionalSubTable_def.txt +28 -0
  94. data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +28 -0
  95. data/autohotkey/config/tools/test_runner/test_runner.txt +8 -0
  96. data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -0
  97. data/autohotkey/config/tools/test_runner/test_runner3.txt +7 -0
  98. data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -0
  99. data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +14 -0
  100. data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -0
  101. data/autohotkey/config/tools/tlm_grapher/README.txt +1 -0
  102. data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -0
  103. data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -0
  104. data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -0
  105. data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -0
  106. data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -0
  107. data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -0
  108. data/autohotkey/lib/cmd_sequence_exporter.rb +52 -0
  109. data/autohotkey/lib/example_background_task.rb +42 -0
  110. data/autohotkey/lib/user_version.rb +3 -0
  111. data/autohotkey/outputs/handbooks/README.txt +1 -0
  112. data/autohotkey/outputs/logs/bigtlm.bin +0 -0
  113. data/autohotkey/outputs/logs/cmd.bin +0 -0
  114. data/autohotkey/outputs/logs/tlm.bin +0 -0
  115. data/autohotkey/outputs/saved_config/README.txt +1 -0
  116. data/autohotkey/outputs/sequences/bad_sequence.txt +1 -0
  117. data/autohotkey/outputs/sequences/bad_sequence2.txt +1 -0
  118. data/autohotkey/outputs/sequences/saved_sequence.txt +3 -0
  119. data/autohotkey/outputs/tables/README.txt +1 -0
  120. data/autohotkey/outputs/tmp/README.txt +1 -0
  121. data/autohotkey/procedures/clear_util.rb +7 -0
  122. data/autohotkey/procedures/collect.rb +18 -0
  123. data/autohotkey/procedures/collect_util.rb +14 -0
  124. data/autohotkey/procedures/example_test.rb +71 -0
  125. data/autohotkey/procedures/example_test2.rb +74 -0
  126. data/autohotkey/procedures/script_test.rb +21 -0
  127. data/autohotkey/procedures/syntax_error.rb +18 -0
  128. data/autohotkey/tools/CmdExtractorAHK +16 -0
  129. data/autohotkey/tools/CmdSender +14 -0
  130. data/autohotkey/tools/CmdSenderAHK +18 -0
  131. data/autohotkey/tools/CmdSenderAHK2 +18 -0
  132. data/autohotkey/tools/CmdSequence +14 -0
  133. data/autohotkey/tools/CmdSequenceAHK +23 -0
  134. data/autohotkey/tools/CmdSequenceAHK2 +16 -0
  135. data/autohotkey/tools/CmdTlmServer +14 -0
  136. data/autohotkey/tools/CmdTlmServerAHK +28 -0
  137. data/autohotkey/tools/CmdTlmServerAHK2 +17 -0
  138. data/autohotkey/tools/ConfigEditor +16 -0
  139. data/autohotkey/tools/ConfigEditorAHK +19 -0
  140. data/autohotkey/tools/DataViewer +14 -0
  141. data/autohotkey/tools/DataViewerAHK +17 -0
  142. data/autohotkey/tools/HandbookCreatorAHK +20 -0
  143. data/autohotkey/tools/LauncherAHK +17 -0
  144. data/autohotkey/tools/LimitsMonitorAHK +20 -0
  145. data/autohotkey/tools/OpenGLBuilderAHK +24 -0
  146. data/autohotkey/tools/PacketViewer +14 -0
  147. data/autohotkey/tools/PacketViewerAHK +18 -0
  148. data/autohotkey/tools/PacketViewerAHK2 +17 -0
  149. data/autohotkey/tools/Replay +14 -0
  150. data/autohotkey/tools/ReplayAHK +17 -0
  151. data/autohotkey/tools/ScriptRunner +14 -0
  152. data/autohotkey/tools/ScriptRunnerAHK +20 -0
  153. data/autohotkey/tools/ScriptRunnerAHK2 +17 -0
  154. data/autohotkey/tools/TableManager +14 -0
  155. data/autohotkey/tools/TableManagerAHK +25 -0
  156. data/autohotkey/tools/TableManagerAHK2 +18 -0
  157. data/autohotkey/tools/TableManagerAHK3 +18 -0
  158. data/autohotkey/tools/TableManagerAHK4 +24 -0
  159. data/autohotkey/tools/TestRunner +15 -0
  160. data/autohotkey/tools/TestRunnerAHK +17 -0
  161. data/autohotkey/tools/TestRunnerAHK2 +17 -0
  162. data/autohotkey/tools/TestRunnerAHK3 +17 -0
  163. data/autohotkey/tools/TestRunnerAHK4 +17 -0
  164. data/autohotkey/tools/TestRunnerAHK5 +17 -0
  165. data/autohotkey/tools/TestRunnerAHK6 +17 -0
  166. data/autohotkey/tools/TlmExtractor +15 -0
  167. data/autohotkey/tools/TlmExtractorAHK +19 -0
  168. data/autohotkey/tools/TlmExtractorAHK2 +16 -0
  169. data/autohotkey/tools/TlmExtractorAHK3 +16 -0
  170. data/autohotkey/tools/TlmGrapher +14 -0
  171. data/autohotkey/tools/TlmGrapherAHK +19 -0
  172. data/autohotkey/tools/TlmGrapherAHK2 +23 -0
  173. data/autohotkey/tools/TlmGrapherAHK3 +17 -0
  174. data/autohotkey/tools/TlmGrapherAHK4 +17 -0
  175. data/autohotkey/tools/TlmViewer +14 -0
  176. data/autohotkey/tools/TlmViewerAHK +28 -0
  177. data/autohotkey/tools/TlmViewerAHK2 +22 -0
  178. data/autohotkey/tools/TlmViewerAHK3 +23 -0
  179. data/autohotkey/tools/TlmViewerAHK4 +22 -0
  180. data/autohotkey/tools/TlmViewerAHK5 +18 -0
  181. data/autohotkey/tools/autohotkey.rb +38 -0
  182. data/autohotkey/tools/cmd_extractor.ahk +52 -0
  183. data/autohotkey/tools/cmd_sender.ahk +208 -0
  184. data/autohotkey/tools/cmd_sender2.ahk +4 -0
  185. data/autohotkey/tools/cmd_sequence.ahk +233 -0
  186. data/autohotkey/tools/cmd_sequence2.ahk +23 -0
  187. data/autohotkey/tools/cmd_tlm_server.ahk +90 -0
  188. data/autohotkey/tools/cmd_tlm_server2.ahk +45 -0
  189. data/autohotkey/tools/config_editor.ahk +197 -0
  190. data/autohotkey/tools/data_viewer.ahk +140 -0
  191. data/autohotkey/tools/handbook_creator.ahk +32 -0
  192. data/autohotkey/tools/launcher.ahk +42 -0
  193. data/autohotkey/tools/limits_monitor.ahk +121 -0
  194. data/autohotkey/tools/open_gl_builder.ahk +133 -0
  195. data/autohotkey/tools/packet_viewer.ahk +224 -0
  196. data/autohotkey/tools/packet_viewer2.ahk +9 -0
  197. data/autohotkey/tools/replay.ahk +103 -0
  198. data/autohotkey/tools/script_runner.ahk +602 -0
  199. data/autohotkey/tools/script_runner2.ahk +50 -0
  200. data/autohotkey/tools/table_manager.ahk +291 -0
  201. data/autohotkey/tools/test_runner.ahk +262 -0
  202. data/autohotkey/tools/test_runner2.ahk +49 -0
  203. data/autohotkey/tools/test_runner3.ahk +11 -0
  204. data/autohotkey/tools/test_runner5.ahk +8 -0
  205. data/autohotkey/tools/test_runner6.ahk +5 -0
  206. data/autohotkey/tools/tlm_extractor.ahk +356 -0
  207. data/autohotkey/tools/tlm_grapher.ahk +670 -0
  208. data/autohotkey/tools/tlm_grapher2.ahk +115 -0
  209. data/autohotkey/tools/tlm_grapher3.ahk +23 -0
  210. data/autohotkey/tools/tlm_viewer.ahk +140 -0
  211. data/autohotkey/tools/tlm_viewer2.ahk +49 -0
  212. data/autohotkey/tools/tlm_viewer4.ahk +4 -0
  213. data/autohotkey/tools/tlm_viewer5.ahk +19 -0
  214. data/autohotkey/tools/tool_launch.rb +38 -0
  215. data/bin/cosmos +303 -0
  216. data/bin/cstol_converter +1166 -0
  217. data/bin/dart_import +4 -0
  218. data/bin/dart_util +4 -0
  219. data/bin/exchndl20-x64.dll +0 -0
  220. data/bin/exchndl20.dll +0 -0
  221. data/bin/exchndl21-x64.dll +0 -0
  222. data/bin/exchndl21.dll +0 -0
  223. data/bin/exchndl22-x64.dll +0 -0
  224. data/bin/exchndl22.dll +0 -0
  225. data/bin/mgwhelp-x64.dll +0 -0
  226. data/bin/mgwhelp.dll +0 -0
  227. data/bin/rubysloc +130 -0
  228. data/bin/xtce_converter +83 -0
  229. data/data/COSMOS_64x64.bmp +0 -0
  230. data/data/COSMOS_64x64.ico +0 -0
  231. data/data/COSMOS_64x64.png +0 -0
  232. data/data/COSMOS_Architecture.png +0 -0
  233. data/data/CheckBoxCheck.gif +0 -0
  234. data/data/CheckBoxEmpty.gif +0 -0
  235. data/data/Earthmap1024x512.gif +0 -0
  236. data/data/about.txt +4 -0
  237. data/data/add_database.png +0 -0
  238. data/data/add_plot.png +0 -0
  239. data/data/add_tab.png +0 -0
  240. data/data/blank.png +0 -0
  241. data/data/bug.png +0 -0
  242. data/data/checkmark.png +0 -0
  243. data/data/close.png +0 -0
  244. data/data/cmd_extractor.png +0 -0
  245. data/data/cmd_sender.png +0 -0
  246. data/data/cmd_sequence.png +0 -0
  247. data/data/config/_array_params.yaml +23 -0
  248. data/data/config/_id_items.yaml +24 -0
  249. data/data/config/_id_params.yaml +58 -0
  250. data/data/config/_interfaces.yaml +210 -0
  251. data/data/config/_items.yaml +20 -0
  252. data/data/config/_params.yaml +58 -0
  253. data/data/config/cmd_sequence.yaml +14 -0
  254. data/data/config/cmd_tlm_server.yaml +136 -0
  255. data/data/config/command.yaml +40 -0
  256. data/data/config/command_modifiers.yaml +160 -0
  257. data/data/config/command_telemetry.yaml +3 -0
  258. data/data/config/data_viewer.yaml +43 -0
  259. data/data/config/handbook_creator.yaml +23 -0
  260. data/data/config/housekeeping_params.yaml +85 -0
  261. data/data/config/interface_modifiers.yaml +97 -0
  262. data/data/config/item_modifiers.yaml +221 -0
  263. data/data/config/launcher.yaml +127 -0
  264. data/data/config/limits_monitor.yaml +53 -0
  265. data/data/config/linegraph_params.yaml +30 -0
  266. data/data/config/linegraph_plot.yaml +106 -0
  267. data/data/config/page_modifiers.yaml +128 -0
  268. data/data/config/param_item_modifiers.yaml +51 -0
  269. data/data/config/parameter_modifiers.yaml +200 -0
  270. data/data/config/protocols.yaml +273 -0
  271. data/data/config/screen.yaml +153 -0
  272. data/data/config/script_runner.yaml +24 -0
  273. data/data/config/system.yaml +371 -0
  274. data/data/config/table_manager.yaml +83 -0
  275. data/data/config/table_parameter_modifiers.yaml +9 -0
  276. data/data/config/target.yaml +92 -0
  277. data/data/config/telemetry.yaml +80 -0
  278. data/data/config/telemetry_modifiers.yaml +159 -0
  279. data/data/config/test_runner.yaml +119 -0
  280. data/data/config/tlm_extractor.yaml +109 -0
  281. data/data/config/tlm_grapher.yaml +78 -0
  282. data/data/config/tlm_viewer.yaml +112 -0
  283. data/data/config/unknown.yaml +3 -0
  284. data/data/config/widgets.yaml +1502 -0
  285. data/data/config/xy_params.yaml +50 -0
  286. data/data/config/xy_plot.yaml +12 -0
  287. data/data/config_editor.png +0 -0
  288. data/data/copy.png +0 -0
  289. data/data/cosmos.xcf +0 -0
  290. data/data/cosmos_word.gif +0 -0
  291. data/data/crc.txt +470 -0
  292. data/data/critical.wav +0 -0
  293. data/data/cts.png +0 -0
  294. data/data/cut.png +0 -0
  295. data/data/dart.png +0 -0
  296. data/data/data_viewer.png +0 -0
  297. data/data/delete.png +0 -0
  298. data/data/delete_database.png +0 -0
  299. data/data/delete_plot.png +0 -0
  300. data/data/delete_tab.png +0 -0
  301. data/data/diamond.STL +58 -0
  302. data/data/disconnected.png +0 -0
  303. data/data/edit.png +0 -0
  304. data/data/edit_database.png +0 -0
  305. data/data/edit_plot.png +0 -0
  306. data/data/edit_tab.png +0 -0
  307. data/data/end-26.png +0 -0
  308. data/data/fast_forward-26.png +0 -0
  309. data/data/file.png +0 -0
  310. data/data/handbook_creator.png +0 -0
  311. data/data/help.png +0 -0
  312. data/data/html-32.png +0 -0
  313. data/data/information.wav +0 -0
  314. data/data/input.wav +0 -0
  315. data/data/launcher.png +0 -0
  316. data/data/legal.gif +0 -0
  317. data/data/legal.txt +8 -0
  318. data/data/limits_monitor.png +0 -0
  319. data/data/message.wav +0 -0
  320. data/data/moonmap1k.gif +0 -0
  321. data/data/multi.png +0 -0
  322. data/data/open.png +0 -0
  323. data/data/open_in_browser-32.png +0 -0
  324. data/data/opengl_builder.png +0 -0
  325. data/data/packet_viewer.png +0 -0
  326. data/data/pdf-32.png +0 -0
  327. data/data/play-26.png +0 -0
  328. data/data/question.wav +0 -0
  329. data/data/redo.png +0 -0
  330. data/data/replay.png +0 -0
  331. data/data/reverse-play-26.png +0 -0
  332. data/data/rewind-26.png +0 -0
  333. data/data/running.png +0 -0
  334. data/data/save.png +0 -0
  335. data/data/save_as.png +0 -0
  336. data/data/screenshot.png +0 -0
  337. data/data/script_runner.png +0 -0
  338. data/data/search-14.png +0 -0
  339. data/data/search.png +0 -0
  340. data/data/send_file.png +0 -0
  341. data/data/skip_to_start-26.png +0 -0
  342. data/data/spinner.gif +0 -0
  343. data/data/splash.gif +0 -0
  344. data/data/stop-26.png +0 -0
  345. data/data/table_manager.png +0 -0
  346. data/data/test_runner.png +0 -0
  347. data/data/tlm_extractor.png +0 -0
  348. data/data/tlm_grapher.png +0 -0
  349. data/data/tlm_viewer.png +0 -0
  350. data/data/undo.png +0 -0
  351. data/data/warning.wav +0 -0
  352. data/demo/Gemfile +13 -0
  353. data/demo/Launcher +16 -0
  354. data/demo/Launcher.bat +1 -0
  355. data/demo/Launcher2.bat +1 -0
  356. data/demo/LauncherMini.bat +1 -0
  357. data/demo/Rakefile +83 -0
  358. data/demo/config/dart/Gemfile +49 -0
  359. data/demo/config/data/attitude.bin +0 -0
  360. data/demo/config/data/crc.txt +294 -0
  361. data/demo/config/data/diamond.STL +58 -0
  362. data/demo/config/data/hselectoff.gif +0 -0
  363. data/demo/config/data/hselecton.gif +0 -0
  364. data/demo/config/data/hswitchoff.gif +0 -0
  365. data/demo/config/data/hswitchon.gif +0 -0
  366. data/demo/config/data/meta_init.txt +1 -0
  367. data/demo/config/data/position.bin +0 -0
  368. data/demo/config/data/poweroff.gif +0 -0
  369. data/demo/config/data/poweron.gif +0 -0
  370. data/demo/config/data/satellite.gif +0 -0
  371. data/demo/config/data/tada.wav +0 -0
  372. data/demo/config/data/vswitchoff.gif +0 -0
  373. data/demo/config/data/vswitchon.gif +0 -0
  374. data/demo/config/system/system.txt +90 -0
  375. data/demo/config/system/system2.txt +75 -0
  376. data/demo/config/system/system_alt_ports.txt +80 -0
  377. data/demo/config/targets/DART/cmd_tlm/dart_cmds.txt +2 -0
  378. data/demo/config/targets/DART/cmd_tlm/dart_tlm.txt +40 -0
  379. data/demo/config/targets/DART/cmd_tlm_server.txt +6 -0
  380. data/demo/config/targets/DART/screens/status.txt +54 -0
  381. data/demo/config/targets/DART/target.txt +7 -0
  382. data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -0
  383. data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +5 -0
  384. data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +7 -0
  385. data/demo/config/targets/EXAMPLE/lib/example_interface.rb +18 -0
  386. data/demo/config/targets/EXAMPLE/target.txt +9 -0
  387. data/demo/config/targets/INST/cmd_tlm/_ccsds_cmd.txt +9 -0
  388. data/demo/config/targets/INST/cmd_tlm/_ccsds_tlm.txt +19 -0
  389. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +58 -0
  390. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +169 -0
  391. data/demo/config/targets/INST/cmd_tlm/inst_tlm_override.txt +12 -0
  392. data/demo/config/targets/INST/cmd_tlm_server.txt +8 -0
  393. data/demo/config/targets/INST/cmd_tlm_server2.txt +7 -0
  394. data/demo/config/targets/INST/doc/README.txt +1 -0
  395. data/demo/config/targets/INST/lib/example_limits_response.rb +30 -0
  396. data/demo/config/targets/INST/lib/inst_dump_component.rb +34 -0
  397. data/demo/config/targets/INST/lib/sim_inst.rb +333 -0
  398. data/demo/config/targets/INST/procedures/checks.rb +11 -0
  399. data/demo/config/targets/INST/procedures/collect.rb +18 -0
  400. data/demo/config/targets/INST/procedures/disconnect.rb +29 -0
  401. data/demo/config/targets/INST/procedures/utilities/clear.rb +7 -0
  402. data/demo/config/targets/INST/procedures/utilities/collect.rb +14 -0
  403. data/demo/config/targets/INST/screens/_footer.txt +4 -0
  404. data/demo/config/targets/INST/screens/adcs.txt +71 -0
  405. data/demo/config/targets/INST/screens/array.txt +15 -0
  406. data/demo/config/targets/INST/screens/block.txt +8 -0
  407. data/demo/config/targets/INST/screens/commanding.txt +42 -0
  408. data/demo/config/targets/INST/screens/graphs.txt +14 -0
  409. data/demo/config/targets/INST/screens/ground.txt +47 -0
  410. data/demo/config/targets/INST/screens/ground_error.gif +0 -0
  411. data/demo/config/targets/INST/screens/ground_off.gif +0 -0
  412. data/demo/config/targets/INST/screens/ground_on.gif +0 -0
  413. data/demo/config/targets/INST/screens/hs.txt +43 -0
  414. data/demo/config/targets/INST/screens/latest.txt +23 -0
  415. data/demo/config/targets/INST/screens/limits.txt +81 -0
  416. data/demo/config/targets/INST/screens/other.txt +34 -0
  417. data/demo/config/targets/INST/screens/params.txt +54 -0
  418. data/demo/config/targets/INST/screens/satellite.gif +0 -0
  419. data/demo/config/targets/INST/screens/spacing_box.txt +44 -0
  420. data/demo/config/targets/INST/screens/spacing_grid.txt +78 -0
  421. data/demo/config/targets/INST/screens/tabs.txt +68 -0
  422. data/demo/config/targets/INST/sequences/sequence.tsv +3 -0
  423. data/demo/config/targets/INST/tables/EventAction.csv +9 -0
  424. data/demo/config/targets/INST/tables/EventAction.dat +0 -0
  425. data/demo/config/targets/INST/tables/McConfigTable.csv +20 -0
  426. data/demo/config/targets/INST/tables/McConfigTable.dat +0 -0
  427. data/demo/config/targets/INST/target.txt +38 -0
  428. data/demo/config/targets/INST/tools/data_viewer/data_viewer.txt +2 -0
  429. data/demo/config/targets/INST/tools/data_viewer/data_viewer2.txt +2 -0
  430. data/demo/config/targets/INST/tools/table_manager/EventAction_def.txt +6 -0
  431. data/demo/config/targets/INST/tools/table_manager/McConfigTable_def.txt +38 -0
  432. data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +6 -0
  433. data/demo/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +10 -0
  434. data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -0
  435. data/demo/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
  436. data/demo/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  437. data/demo/config/targets/SYSTEM/cmd_tlm_server.txt +6 -0
  438. data/demo/config/targets/SYSTEM/lib/limits_groups.rb +55 -0
  439. data/demo/config/targets/SYSTEM/screens/status.txt +12 -0
  440. data/demo/config/targets/SYSTEM/target.txt +12 -0
  441. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +13 -0
  442. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -0
  443. data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -0
  444. data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +59 -0
  445. data/demo/config/targets/TEMPLATED/target.txt +8 -0
  446. data/demo/config/tools/cmd_sequence/cmd_sequence.txt +2 -0
  447. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +45 -0
  448. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +42 -0
  449. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server_chain.txt +18 -0
  450. data/demo/config/tools/data_viewer/data_viewer.txt +23 -0
  451. data/demo/config/tools/example_application.css +58 -0
  452. data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  453. data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  454. data/demo/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  455. data/demo/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  456. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  457. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  458. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  459. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  460. data/demo/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  461. data/demo/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  462. data/demo/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  463. data/demo/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  464. data/demo/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  465. data/demo/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  466. data/demo/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  467. data/demo/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  468. data/demo/config/tools/handbook_creator/default_toc.xsl +59 -0
  469. data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -0
  470. data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +88 -0
  471. data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  472. data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  473. data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -0
  474. data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  475. data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  476. data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  477. data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  478. data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  479. data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  480. data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +82 -0
  481. data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  482. data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -0
  483. data/demo/config/tools/launcher/launcher.css +7 -0
  484. data/demo/config/tools/launcher/launcher.txt +49 -0
  485. data/demo/config/tools/launcher/launcher2.css +10 -0
  486. data/demo/config/tools/launcher/launcher2.txt +48 -0
  487. data/demo/config/tools/launcher/launcher_mini.txt +45 -0
  488. data/demo/config/tools/limits_monitor/README.txt +1 -0
  489. data/demo/config/tools/opengl_builder/README.txt +1 -0
  490. data/demo/config/tools/script_runner/script_runner.txt +2 -0
  491. data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -0
  492. data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -0
  493. data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +37 -0
  494. data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +34 -0
  495. data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +9 -0
  496. data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +31 -0
  497. data/demo/config/tools/test_runner/test_runner.css +45 -0
  498. data/demo/config/tools/test_runner/test_runner.txt +19 -0
  499. data/demo/config/tools/tlm_extractor/_adcs_time.txt +2 -0
  500. data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -0
  501. data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -0
  502. data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -0
  503. data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -0
  504. data/demo/config/tools/tlm_grapher/README.txt +1 -0
  505. data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -0
  506. data/demo/lib/cmd_sequence_exporter.rb +52 -0
  507. data/demo/lib/example_background_task.rb +57 -0
  508. data/demo/lib/example_target.rb +103 -0
  509. data/demo/lib/scpi_target.rb +68 -0
  510. data/demo/lib/user_version.rb +3 -0
  511. data/demo/outputs/dart/data/README.txt +1 -0
  512. data/demo/outputs/handbooks/README.txt +1 -0
  513. data/demo/outputs/logs/README.txt +1 -0
  514. data/demo/outputs/saved_config/README.txt +1 -0
  515. data/demo/outputs/sequences/sequence.tsv +4 -0
  516. data/demo/outputs/tables/README.txt +1 -0
  517. data/demo/outputs/tmp/README.txt +1 -0
  518. data/demo/procedures/cosmos_api_test.rb +314 -0
  519. data/demo/procedures/example_test.rb +192 -0
  520. data/demo/procedures/interactive.rb +22 -0
  521. data/demo/procedures/local_screen_example.rb +51 -0
  522. data/demo/procedures/plot_test.rb +8 -0
  523. data/demo/procedures/replay_test.rb +32 -0
  524. data/demo/procedures/run_example_test.rb +3 -0
  525. data/demo/procedures/test.rb +51 -0
  526. data/demo/tools/CmdExtractor +16 -0
  527. data/demo/tools/CmdExtractor.bat +9 -0
  528. data/demo/tools/CmdSender +16 -0
  529. data/demo/tools/CmdSender.bat +9 -0
  530. data/demo/tools/CmdSequence +16 -0
  531. data/demo/tools/CmdSequence.bat +9 -0
  532. data/demo/tools/CmdTlmServer +16 -0
  533. data/demo/tools/CmdTlmServer.bat +9 -0
  534. data/demo/tools/ConfigEditor +16 -0
  535. data/demo/tools/ConfigEditor.bat +9 -0
  536. data/demo/tools/Dart +16 -0
  537. data/demo/tools/Dart.bat +9 -0
  538. data/demo/tools/DataViewer +16 -0
  539. data/demo/tools/DataViewer.bat +9 -0
  540. data/demo/tools/ExampleTarget +16 -0
  541. data/demo/tools/ExampleTarget.bat +9 -0
  542. data/demo/tools/HandbookCreator +16 -0
  543. data/demo/tools/HandbookCreator.bat +9 -0
  544. data/demo/tools/Launcher +16 -0
  545. data/demo/tools/Launcher.bat +9 -0
  546. data/demo/tools/LimitsMonitor +16 -0
  547. data/demo/tools/LimitsMonitor.bat +9 -0
  548. data/demo/tools/OpenGLBuilder +16 -0
  549. data/demo/tools/OpenGLBuilder.bat +9 -0
  550. data/demo/tools/PacketViewer +16 -0
  551. data/demo/tools/PacketViewer.bat +9 -0
  552. data/demo/tools/Replay +16 -0
  553. data/demo/tools/Replay.bat +9 -0
  554. data/demo/tools/ScpiTarget +16 -0
  555. data/demo/tools/ScpiTarget.bat +9 -0
  556. data/demo/tools/ScriptRunner +16 -0
  557. data/demo/tools/ScriptRunner.bat +9 -0
  558. data/demo/tools/TableManager +16 -0
  559. data/demo/tools/TableManager.bat +9 -0
  560. data/demo/tools/TestRunner +16 -0
  561. data/demo/tools/TestRunner.bat +9 -0
  562. data/demo/tools/TlmExtractor +16 -0
  563. data/demo/tools/TlmExtractor.bat +9 -0
  564. data/demo/tools/TlmGrapher +16 -0
  565. data/demo/tools/TlmGrapher.bat +9 -0
  566. data/demo/tools/TlmViewer +16 -0
  567. data/demo/tools/TlmViewer.bat +9 -0
  568. data/demo/tools/ToolLaunch.bat +72 -0
  569. data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
  570. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -0
  571. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -0
  572. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  573. data/demo/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
  574. data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
  575. data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -0
  576. data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -0
  577. data/demo/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -0
  578. data/demo/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
  579. data/demo/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
  580. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
  581. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
  582. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
  583. data/demo/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
  584. data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
  585. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -0
  586. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -0
  587. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -0
  588. data/demo/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
  589. data/demo/tools/mac/ConfigEditor.app/Contents/Info.plist +38 -0
  590. data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/ConfigEditor.rb +16 -0
  591. data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +10 -0
  592. data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/tool_launch.rb +38 -0
  593. data/demo/tools/mac/ConfigEditor.app/Contents/Resources/appIcon.icns +0 -0
  594. data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
  595. data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -0
  596. data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -0
  597. data/demo/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  598. data/demo/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
  599. data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
  600. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -0
  601. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -0
  602. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -0
  603. data/demo/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
  604. data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -0
  605. data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -0
  606. data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -0
  607. data/demo/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -0
  608. data/demo/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
  609. data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
  610. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -0
  611. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -0
  612. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -0
  613. data/demo/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
  614. data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
  615. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -0
  616. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -0
  617. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -0
  618. data/demo/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
  619. data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
  620. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -0
  621. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -0
  622. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  623. data/demo/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
  624. data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -0
  625. data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -0
  626. data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -0
  627. data/demo/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -0
  628. data/demo/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
  629. data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
  630. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -0
  631. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -0
  632. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  633. data/demo/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
  634. data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -0
  635. data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -0
  636. data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -0
  637. data/demo/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -0
  638. data/demo/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
  639. data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
  640. data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -0
  641. data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -0
  642. data/demo/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  643. data/demo/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
  644. data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
  645. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -0
  646. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -0
  647. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  648. data/demo/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
  649. data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
  650. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -0
  651. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -0
  652. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -0
  653. data/demo/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
  654. data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
  655. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -0
  656. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -0
  657. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  658. data/demo/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
  659. data/demo/tools/tool_launch.rb +38 -0
  660. data/ext/cosmos/ext/array/array.c +111 -0
  661. data/ext/cosmos/ext/array/extconf.rb +13 -0
  662. data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -0
  663. data/ext/cosmos/ext/buffered_file/extconf.rb +13 -0
  664. data/ext/cosmos/ext/config_parser/config_parser.c +236 -0
  665. data/ext/cosmos/ext/config_parser/extconf.rb +13 -0
  666. data/ext/cosmos/ext/cosmos_io/cosmos_io.c +145 -0
  667. data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -0
  668. data/ext/cosmos/ext/crc/crc.c +341 -0
  669. data/ext/cosmos/ext/crc/extconf.rb +13 -0
  670. data/ext/cosmos/ext/line_graph/extconf.rb +13 -0
  671. data/ext/cosmos/ext/line_graph/line_graph.c +460 -0
  672. data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +13 -0
  673. data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +265 -0
  674. data/ext/cosmos/ext/packet/extconf.rb +13 -0
  675. data/ext/cosmos/ext/packet/packet.c +273 -0
  676. data/ext/cosmos/ext/platform/extconf.rb +13 -0
  677. data/ext/cosmos/ext/platform/platform.c +136 -0
  678. data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -0
  679. data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +69 -0
  680. data/ext/cosmos/ext/string/extconf.rb +13 -0
  681. data/ext/cosmos/ext/string/string.c +49 -0
  682. data/ext/cosmos/ext/structure/structure.c +1493 -0
  683. data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -0
  684. data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -0
  685. data/ext/cosmos/ext/telemetry/extconf.rb +13 -0
  686. data/ext/cosmos/ext/telemetry/telemetry.c +307 -0
  687. data/ext/mkrf_conf.rb +40 -0
  688. data/extensions/vscode/.gitignore +4 -0
  689. data/extensions/vscode/.vscode/launch.json +32 -0
  690. data/extensions/vscode/.vscode/settings.json +13 -0
  691. data/extensions/vscode/.vscode/tasks.json +79 -0
  692. data/extensions/vscode/License.txt +879 -0
  693. data/extensions/vscode/README.md +9 -0
  694. data/extensions/vscode/client/License.txt +879 -0
  695. data/extensions/vscode/client/README.md +39 -0
  696. data/extensions/vscode/client/cosmos.configuration.json +23 -0
  697. data/extensions/vscode/client/images/icon.png +0 -0
  698. data/extensions/vscode/client/package-lock.json +414 -0
  699. data/extensions/vscode/client/package.json +105 -0
  700. data/extensions/vscode/client/src/extension.ts +132 -0
  701. data/extensions/vscode/client/src/screen_preview.rb +25 -0
  702. data/extensions/vscode/client/syntaxes/cosmos.tmLanguage.json +219 -0
  703. data/extensions/vscode/client/tsconfig.json +17 -0
  704. data/extensions/vscode/package-lock.json +26 -0
  705. data/extensions/vscode/package.json +35 -0
  706. data/extensions/vscode/server/License.txt +879 -0
  707. data/extensions/vscode/server/package-lock.json +236 -0
  708. data/extensions/vscode/server/package.json +29 -0
  709. data/extensions/vscode/server/src/server.ts +59 -0
  710. data/extensions/vscode/server/tsconfig.json +16 -0
  711. data/install/Gemfile +13 -0
  712. data/install/Launcher +16 -0
  713. data/install/Launcher.bat +1 -0
  714. data/install/Rakefile +81 -0
  715. data/install/config/dart/Gemfile +49 -0
  716. data/install/config/data/README.txt +1 -0
  717. data/install/config/data/crc.txt +179 -0
  718. data/install/config/system/system.txt +75 -0
  719. data/install/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +9 -0
  720. data/install/config/targets/SYSTEM/target.txt +12 -0
  721. data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +3 -0
  722. data/install/config/tools/data_viewer/data_viewer.txt +4 -0
  723. data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  724. data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  725. data/install/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  726. data/install/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  727. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  728. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  729. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  730. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  731. data/install/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  732. data/install/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  733. data/install/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  734. data/install/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  735. data/install/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  736. data/install/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  737. data/install/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  738. data/install/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  739. data/install/config/tools/handbook_creator/default_toc.xsl +59 -0
  740. data/install/config/tools/handbook_creator/handbook_creator.txt +49 -0
  741. data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  742. data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  743. data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  744. data/install/config/tools/handbook_creator/templates/header.html.erb +25 -0
  745. data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  746. data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  747. data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  748. data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  749. data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  750. data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  751. data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  752. data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  753. data/install/config/tools/handbook_creator/templates/title.html.erb +1 -0
  754. data/install/config/tools/launcher/launcher.txt +43 -0
  755. data/install/config/tools/limits_monitor/README.txt +1 -0
  756. data/install/config/tools/opengl_builder/README.txt +1 -0
  757. data/install/config/tools/script_runner/script_runner.txt +3 -0
  758. data/install/config/tools/table_manager/README.txt +1 -0
  759. data/install/config/tools/test_runner/test_runner.txt +8 -0
  760. data/install/config/tools/tlm_extractor/README.txt +1 -0
  761. data/install/config/tools/tlm_grapher/README.txt +1 -0
  762. data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -0
  763. data/install/lib/user_version.rb +3 -0
  764. data/install/outputs/dart/data/README.txt +1 -0
  765. data/install/outputs/dart/logs/README.txt +1 -0
  766. data/install/outputs/handbooks/README.txt +1 -0
  767. data/install/outputs/logs/README.txt +1 -0
  768. data/install/outputs/saved_config/README.txt +1 -0
  769. data/install/outputs/tables/README.txt +1 -0
  770. data/install/outputs/tmp/README.txt +1 -0
  771. data/install/procedures/README.txt +1 -0
  772. data/install/tools/CmdExtractor +16 -0
  773. data/install/tools/CmdExtractor.bat +9 -0
  774. data/install/tools/CmdSender +16 -0
  775. data/install/tools/CmdSender.bat +9 -0
  776. data/install/tools/CmdSequence +16 -0
  777. data/install/tools/CmdSequence.bat +9 -0
  778. data/install/tools/CmdTlmServer +16 -0
  779. data/install/tools/CmdTlmServer.bat +9 -0
  780. data/install/tools/ConfigEditor +16 -0
  781. data/install/tools/ConfigEditor.bat +9 -0
  782. data/install/tools/Dart +16 -0
  783. data/install/tools/Dart.bat +9 -0
  784. data/install/tools/DataViewer +16 -0
  785. data/install/tools/DataViewer.bat +9 -0
  786. data/install/tools/HandbookCreator +16 -0
  787. data/install/tools/HandbookCreator.bat +9 -0
  788. data/install/tools/Launcher +16 -0
  789. data/install/tools/Launcher.bat +9 -0
  790. data/install/tools/LimitsMonitor +16 -0
  791. data/install/tools/LimitsMonitor.bat +9 -0
  792. data/install/tools/OpenGLBuilder +16 -0
  793. data/install/tools/OpenGLBuilder.bat +9 -0
  794. data/install/tools/PacketViewer +16 -0
  795. data/install/tools/PacketViewer.bat +9 -0
  796. data/install/tools/Replay +16 -0
  797. data/install/tools/Replay.bat +9 -0
  798. data/install/tools/ScriptRunner +16 -0
  799. data/install/tools/ScriptRunner.bat +9 -0
  800. data/install/tools/TableManager +16 -0
  801. data/install/tools/TableManager.bat +9 -0
  802. data/install/tools/TestRunner +16 -0
  803. data/install/tools/TestRunner.bat +9 -0
  804. data/install/tools/TlmExtractor +16 -0
  805. data/install/tools/TlmExtractor.bat +9 -0
  806. data/install/tools/TlmGrapher +16 -0
  807. data/install/tools/TlmGrapher.bat +9 -0
  808. data/install/tools/TlmViewer +16 -0
  809. data/install/tools/TlmViewer.bat +9 -0
  810. data/install/tools/ToolLaunch.bat +72 -0
  811. data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
  812. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -0
  813. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -0
  814. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  815. data/install/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
  816. data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
  817. data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -0
  818. data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -0
  819. data/install/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -0
  820. data/install/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
  821. data/install/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
  822. data/install/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
  823. data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
  824. data/install/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
  825. data/install/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
  826. data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
  827. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -0
  828. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -0
  829. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -0
  830. data/install/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
  831. data/install/tools/mac/ConfigEditor.app/Contents/Info.plist +38 -0
  832. data/install/tools/mac/ConfigEditor.app/Contents/MacOS/ConfigEditor.rb +16 -0
  833. data/install/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +10 -0
  834. data/install/tools/mac/ConfigEditor.app/Contents/MacOS/tool_launch.rb +38 -0
  835. data/install/tools/mac/ConfigEditor.app/Contents/Resources/appIcon.icns +0 -0
  836. data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
  837. data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -0
  838. data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -0
  839. data/install/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  840. data/install/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
  841. data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
  842. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -0
  843. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -0
  844. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -0
  845. data/install/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
  846. data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -0
  847. data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -0
  848. data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -0
  849. data/install/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -0
  850. data/install/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
  851. data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
  852. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -0
  853. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -0
  854. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -0
  855. data/install/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
  856. data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
  857. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -0
  858. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -0
  859. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -0
  860. data/install/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
  861. data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
  862. data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -0
  863. data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -0
  864. data/install/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  865. data/install/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
  866. data/install/tools/mac/Replay.app/Contents/Info.plist +38 -0
  867. data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -0
  868. data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -0
  869. data/install/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -0
  870. data/install/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
  871. data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
  872. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -0
  873. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -0
  874. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  875. data/install/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
  876. data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -0
  877. data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -0
  878. data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -0
  879. data/install/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -0
  880. data/install/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
  881. data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
  882. data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -0
  883. data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -0
  884. data/install/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  885. data/install/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
  886. data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
  887. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -0
  888. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -0
  889. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  890. data/install/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
  891. data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
  892. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -0
  893. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -0
  894. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -0
  895. data/install/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
  896. data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
  897. data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -0
  898. data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -0
  899. data/install/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  900. data/install/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
  901. data/install/tools/tool_launch.rb +38 -0
  902. data/lib/cosmos/ccsds/ccsds_packet.rb +63 -0
  903. data/lib/cosmos/ccsds/ccsds_parser.rb +143 -0
  904. data/lib/cosmos/config/config_parser.rb +506 -0
  905. data/lib/cosmos/config/meta_config_parser.rb +57 -0
  906. data/lib/cosmos/conversions/conversion.rb +52 -0
  907. data/lib/cosmos/conversions/generic_conversion.rb +67 -0
  908. data/lib/cosmos/conversions/new_packet_log_conversion.rb +52 -0
  909. data/lib/cosmos/conversions/packet_time_formatted_conversion.rb +38 -0
  910. data/lib/cosmos/conversions/packet_time_seconds_conversion.rb +38 -0
  911. data/lib/cosmos/conversions/polynomial_conversion.rb +79 -0
  912. data/lib/cosmos/conversions/processor_conversion.rb +56 -0
  913. data/lib/cosmos/conversions/received_count_conversion.rb +33 -0
  914. data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -0
  915. data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -0
  916. data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +139 -0
  917. data/lib/cosmos/conversions/unix_time_conversion.rb +57 -0
  918. data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -0
  919. data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -0
  920. data/lib/cosmos/conversions.rb +15 -0
  921. data/lib/cosmos/core_ext/array.rb +397 -0
  922. data/lib/cosmos/core_ext/class.rb +63 -0
  923. data/lib/cosmos/core_ext/cosmos_io.rb +46 -0
  924. data/lib/cosmos/core_ext/exception.rb +52 -0
  925. data/lib/cosmos/core_ext/file.rb +76 -0
  926. data/lib/cosmos/core_ext/hash.rb +28 -0
  927. data/lib/cosmos/core_ext/io.rb +122 -0
  928. data/lib/cosmos/core_ext/kernel.rb +33 -0
  929. data/lib/cosmos/core_ext/math.rb +119 -0
  930. data/lib/cosmos/core_ext/matrix.rb +149 -0
  931. data/lib/cosmos/core_ext/objectspace.rb +27 -0
  932. data/lib/cosmos/core_ext/range.rb +18 -0
  933. data/lib/cosmos/core_ext/socket.rb +32 -0
  934. data/lib/cosmos/core_ext/string.rb +351 -0
  935. data/lib/cosmos/core_ext/stringio.rb +24 -0
  936. data/lib/cosmos/core_ext/time.rb +483 -0
  937. data/lib/cosmos/core_ext.rb +18 -0
  938. data/lib/cosmos/dart/.rspec +1 -0
  939. data/lib/cosmos/dart/Rakefile +7 -0
  940. data/lib/cosmos/dart/app/assets/config/manifest.js +4 -0
  941. data/lib/cosmos/dart/app/assets/images/.keep +0 -0
  942. data/lib/cosmos/dart/app/assets/javascripts/application.js +13 -0
  943. data/lib/cosmos/dart/app/assets/javascripts/cable.js +13 -0
  944. data/lib/cosmos/dart/app/assets/stylesheets/application.css.scss +15 -0
  945. data/lib/cosmos/dart/app/channels/application_cable/channel.rb +4 -0
  946. data/lib/cosmos/dart/app/channels/application_cable/connection.rb +4 -0
  947. data/lib/cosmos/dart/app/controllers/application_controller.rb +3 -0
  948. data/lib/cosmos/dart/app/jobs/application_job.rb +2 -0
  949. data/lib/cosmos/dart/app/mailers/application_mailer.rb +4 -0
  950. data/lib/cosmos/dart/app/models/application_record.rb +3 -0
  951. data/lib/cosmos/dart/app/models/item.rb +6 -0
  952. data/lib/cosmos/dart/app/models/item_to_decom_table_mapping.rb +9 -0
  953. data/lib/cosmos/dart/app/models/packet.rb +4 -0
  954. data/lib/cosmos/dart/app/models/packet_config.rb +7 -0
  955. data/lib/cosmos/dart/app/models/packet_log.rb +3 -0
  956. data/lib/cosmos/dart/app/models/packet_log_entry.rb +41 -0
  957. data/lib/cosmos/dart/app/models/status.rb +2 -0
  958. data/lib/cosmos/dart/app/models/system_config.rb +2 -0
  959. data/lib/cosmos/dart/app/models/target.rb +4 -0
  960. data/lib/cosmos/dart/app/views/layouts/application.html.erb +14 -0
  961. data/lib/cosmos/dart/app/views/layouts/mailer.html.erb +13 -0
  962. data/lib/cosmos/dart/app/views/layouts/mailer.text.erb +1 -0
  963. data/lib/cosmos/dart/bin/bundle +3 -0
  964. data/lib/cosmos/dart/bin/rails +4 -0
  965. data/lib/cosmos/dart/bin/rake +4 -0
  966. data/lib/cosmos/dart/bin/setup +34 -0
  967. data/lib/cosmos/dart/bin/update +29 -0
  968. data/lib/cosmos/dart/config/application.rb +29 -0
  969. data/lib/cosmos/dart/config/boot.rb +3 -0
  970. data/lib/cosmos/dart/config/cable.yml +9 -0
  971. data/lib/cosmos/dart/config/database.yml +25 -0
  972. data/lib/cosmos/dart/config/environment.rb +5 -0
  973. data/lib/cosmos/dart/config/environments/development.rb +62 -0
  974. data/lib/cosmos/dart/config/environments/production.rb +84 -0
  975. data/lib/cosmos/dart/config/environments/test.rb +42 -0
  976. data/lib/cosmos/dart/config/initializers/application_controller_renderer.rb +6 -0
  977. data/lib/cosmos/dart/config/initializers/assets.rb +12 -0
  978. data/lib/cosmos/dart/config/initializers/backtrace_silencers.rb +7 -0
  979. data/lib/cosmos/dart/config/initializers/cookies_serializer.rb +5 -0
  980. data/lib/cosmos/dart/config/initializers/filter_parameter_logging.rb +4 -0
  981. data/lib/cosmos/dart/config/initializers/inflections.rb +16 -0
  982. data/lib/cosmos/dart/config/initializers/mime_types.rb +4 -0
  983. data/lib/cosmos/dart/config/initializers/new_framework_defaults.rb +25 -0
  984. data/lib/cosmos/dart/config/initializers/session_store.rb +3 -0
  985. data/lib/cosmos/dart/config/initializers/wrap_parameters.rb +14 -0
  986. data/lib/cosmos/dart/config/locales/en.yml +23 -0
  987. data/lib/cosmos/dart/config/puma.rb +47 -0
  988. data/lib/cosmos/dart/config/routes.rb +3 -0
  989. data/lib/cosmos/dart/config/secrets.yml +22 -0
  990. data/lib/cosmos/dart/config.ru +5 -0
  991. data/lib/cosmos/dart/db/migrate/20170406172907_create_targets.rb +8 -0
  992. data/lib/cosmos/dart/db/migrate/20170406172927_create_packets.rb +10 -0
  993. data/lib/cosmos/dart/db/migrate/20170406172937_create_packet_logs.rb +9 -0
  994. data/lib/cosmos/dart/db/migrate/20170406172943_create_packet_log_entries.rb +16 -0
  995. data/lib/cosmos/dart/db/migrate/20170406183500_change_packet_log_entries_primary_key.rb +5 -0
  996. data/lib/cosmos/dart/db/migrate/20170407153618_add_unique_requirements.rb +7 -0
  997. data/lib/cosmos/dart/db/migrate/20170511155447_add_meta_id_to_packet_log_entries.rb +6 -0
  998. data/lib/cosmos/dart/db/migrate/20170523185056_rename_received_time_and_add_is_tlm_to_packet_log_entries.rb +7 -0
  999. data/lib/cosmos/dart/db/migrate/20170525201157_create_items.rb +10 -0
  1000. data/lib/cosmos/dart/db/migrate/20170525201315_create_system_configs.rb +9 -0
  1001. data/lib/cosmos/dart/db/migrate/20170525201624_create_packet_configs.rb +11 -0
  1002. data/lib/cosmos/dart/db/migrate/20170525201745_create_item_to_decom_table_mappings.rb +12 -0
  1003. data/lib/cosmos/dart/db/migrate/20170525201939_create_decom_tables.rb +12 -0
  1004. data/lib/cosmos/dart/db/migrate/20170525202051_add_decom_state_to_packet_log_entry.rb +5 -0
  1005. data/lib/cosmos/dart/db/migrate/20170913160409_update_items.rb +6 -0
  1006. data/lib/cosmos/dart/db/migrate/20170913160558_update_item_to_decom_table_mapping.rb +11 -0
  1007. data/lib/cosmos/dart/db/migrate/20170913160916_udpate_decom_table.rb +6 -0
  1008. data/lib/cosmos/dart/db/migrate/20170913212026_add_ready_to_packet_configs.rb +5 -0
  1009. data/lib/cosmos/dart/db/migrate/20170913223556_modify_tables.rb +9 -0
  1010. data/lib/cosmos/dart/db/migrate/20170914215744_modify_mapping_table.rb +6 -0
  1011. data/lib/cosmos/dart/db/migrate/20170919201433_add_system_config_id_to_packet_config.rb +11 -0
  1012. data/lib/cosmos/dart/db/migrate/20170919210307_add_max_table_index_to_packet_configs.rb +5 -0
  1013. data/lib/cosmos/dart/db/migrate/20171215225546_add_ready_to_packet_log_entries.rb +5 -0
  1014. data/lib/cosmos/dart/db/migrate/20180116214338_add_index_for_ple_ready_to_packet_log_entries.rb +5 -0
  1015. data/lib/cosmos/dart/db/migrate/20180423205644_create_statuses.rb +22 -0
  1016. data/lib/cosmos/dart/db/migrate/20180425211340_add_decom_state_index.rb +5 -0
  1017. data/lib/cosmos/dart/db/migrate/20180509204705_remove_indexes.rb +29 -0
  1018. data/lib/cosmos/dart/db/migrate/20180510160002_remove_timestamps_from_ples.rb +6 -0
  1019. data/lib/cosmos/dart/db/migrate/20180511194944_add_packet_log_id_to_tables.rb +18 -0
  1020. data/lib/cosmos/dart/db/schema.rb +109 -0
  1021. data/lib/cosmos/dart/db/seeds.rb +15 -0
  1022. data/lib/cosmos/dart/examples/dart_decom_client.rb +45 -0
  1023. data/lib/cosmos/dart/examples/dart_stream_client.rb +97 -0
  1024. data/lib/cosmos/dart/lib/dart_common.rb +755 -0
  1025. data/lib/cosmos/dart/lib/dart_constants.rb +15 -0
  1026. data/lib/cosmos/dart/lib/dart_database_cleaner.rb +223 -0
  1027. data/lib/cosmos/dart/lib/dart_decom_query.rb +285 -0
  1028. data/lib/cosmos/dart/lib/dart_decommutator.rb +304 -0
  1029. data/lib/cosmos/dart/lib/dart_importer.rb +184 -0
  1030. data/lib/cosmos/dart/lib/dart_logging.rb +50 -0
  1031. data/lib/cosmos/dart/lib/dart_master_query.rb +71 -0
  1032. data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +157 -0
  1033. data/lib/cosmos/dart/lib/dart_reducer_manager.rb +116 -0
  1034. data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +305 -0
  1035. data/lib/cosmos/dart/lib/dart_tcpip_server_interface.rb +142 -0
  1036. data/lib/cosmos/dart/processes/dart.rb +148 -0
  1037. data/lib/cosmos/dart/processes/dart_decom_server.rb +40 -0
  1038. data/lib/cosmos/dart/processes/dart_import.rb +64 -0
  1039. data/lib/cosmos/dart/processes/dart_ingester.rb +132 -0
  1040. data/lib/cosmos/dart/processes/dart_master.rb +44 -0
  1041. data/lib/cosmos/dart/processes/dart_reducer.rb +28 -0
  1042. data/lib/cosmos/dart/processes/dart_stream_server.rb +32 -0
  1043. data/lib/cosmos/dart/processes/dart_util.rb +262 -0
  1044. data/lib/cosmos/dart/processes/dart_worker.rb +38 -0
  1045. data/lib/cosmos/dart/spec/dart/dart_common_spec.rb +333 -0
  1046. data/lib/cosmos/dart/spec/dart/dart_database_cleaner_spec.rb +455 -0
  1047. data/lib/cosmos/dart/spec/dart/dart_decom_query_spec.rb +154 -0
  1048. data/lib/cosmos/dart/spec/dart/dart_decommutator_spec.rb +337 -0
  1049. data/lib/cosmos/dart/spec/dart/dart_importer_spec.rb +84 -0
  1050. data/lib/cosmos/dart/spec/dart/dart_logging_spec.rb +30 -0
  1051. data/lib/cosmos/dart/spec/dart/dart_packet_log_writer_spec.rb +152 -0
  1052. data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +290 -0
  1053. data/lib/cosmos/dart/spec/dart/dart_tcpip_server_interface_spec.rb +240 -0
  1054. data/lib/cosmos/dart/spec/rails_helper.rb +60 -0
  1055. data/lib/cosmos/dart/spec/spec_helper.rb +139 -0
  1056. data/lib/cosmos/ext/.keep +0 -0
  1057. data/lib/cosmos/gui/choosers/combobox_chooser.rb +141 -0
  1058. data/lib/cosmos/gui/choosers/file_chooser.rb +85 -0
  1059. data/lib/cosmos/gui/choosers/float_chooser.rb +67 -0
  1060. data/lib/cosmos/gui/choosers/integer_chooser.rb +69 -0
  1061. data/lib/cosmos/gui/choosers/string_chooser.rb +35 -0
  1062. data/lib/cosmos/gui/choosers/telemetry_chooser.rb +326 -0
  1063. data/lib/cosmos/gui/choosers/value_chooser.rb +67 -0
  1064. data/lib/cosmos/gui/dialogs/about_dialog.rb +166 -0
  1065. data/lib/cosmos/gui/dialogs/calendar_dialog.rb +140 -0
  1066. data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +51 -0
  1067. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +167 -0
  1068. data/lib/cosmos/gui/dialogs/dart_dialog.rb +60 -0
  1069. data/lib/cosmos/gui/dialogs/details_dialog.rb +205 -0
  1070. data/lib/cosmos/gui/dialogs/exception_dialog.rb +121 -0
  1071. data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +60 -0
  1072. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +272 -0
  1073. data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +143 -0
  1074. data/lib/cosmos/gui/dialogs/legal_dialog.rb +184 -0
  1075. data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +97 -0
  1076. data/lib/cosmos/gui/dialogs/progress_dialog.rb +313 -0
  1077. data/lib/cosmos/gui/dialogs/pry_dialog.rb +169 -0
  1078. data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +48 -0
  1079. data/lib/cosmos/gui/dialogs/select_dialog.rb +59 -0
  1080. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +159 -0
  1081. data/lib/cosmos/gui/dialogs/splash.rb +145 -0
  1082. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +202 -0
  1083. data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +79 -0
  1084. data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +110 -0
  1085. data/lib/cosmos/gui/line_graph/line_graph.rb +482 -0
  1086. data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +36 -0
  1087. data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +521 -0
  1088. data/lib/cosmos/gui/line_graph/line_graph_popups.rb +112 -0
  1089. data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +452 -0
  1090. data/lib/cosmos/gui/line_graph/line_graph_script.rb +81 -0
  1091. data/lib/cosmos/gui/line_graph/lines.rb +304 -0
  1092. data/lib/cosmos/gui/line_graph/overview_graph.rb +474 -0
  1093. data/lib/cosmos/gui/opengl/earth_model.rb +25 -0
  1094. data/lib/cosmos/gui/opengl/gl_bounds.rb +55 -0
  1095. data/lib/cosmos/gui/opengl/gl_light.rb +38 -0
  1096. data/lib/cosmos/gui/opengl/gl_material.rb +28 -0
  1097. data/lib/cosmos/gui/opengl/gl_scene.rb +78 -0
  1098. data/lib/cosmos/gui/opengl/gl_shape.rb +148 -0
  1099. data/lib/cosmos/gui/opengl/gl_viewer.rb +715 -0
  1100. data/lib/cosmos/gui/opengl/gl_viewport.rb +34 -0
  1101. data/lib/cosmos/gui/opengl/moon_model.rb +25 -0
  1102. data/lib/cosmos/gui/opengl/opengl.rb +14 -0
  1103. data/lib/cosmos/gui/opengl/stl_reader.rb +210 -0
  1104. data/lib/cosmos/gui/opengl/stl_shape.rb +127 -0
  1105. data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +204 -0
  1106. data/lib/cosmos/gui/qt.rb +858 -0
  1107. data/lib/cosmos/gui/qt_tool.rb +524 -0
  1108. data/lib/cosmos/gui/text/completion.rb +403 -0
  1109. data/lib/cosmos/gui/text/completion_line_edit.rb +30 -0
  1110. data/lib/cosmos/gui/text/completion_text_edit.rb +198 -0
  1111. data/lib/cosmos/gui/text/ruby_editor.rb +505 -0
  1112. data/lib/cosmos/gui/utilities/analyze_log.rb +153 -0
  1113. data/lib/cosmos/gui/utilities/classification_banner.rb +60 -0
  1114. data/lib/cosmos/gui/utilities/screenshot.rb +33 -0
  1115. data/lib/cosmos/gui/utilities/script_module_gui.rb +390 -0
  1116. data/lib/cosmos/gui/widgets/dart_frame.rb +142 -0
  1117. data/lib/cosmos/gui/widgets/dart_meta_frame.rb +145 -0
  1118. data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +171 -0
  1119. data/lib/cosmos/gui/widgets/packet_log_frame.rb +374 -0
  1120. data/lib/cosmos/gui/widgets/realtime_button_bar.rb +99 -0
  1121. data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +134 -0
  1122. data/lib/cosmos/interfaces/dart_status_interface.rb +91 -0
  1123. data/lib/cosmos/interfaces/interface.rb +456 -0
  1124. data/lib/cosmos/interfaces/linc_interface.rb +459 -0
  1125. data/lib/cosmos/interfaces/protocols/burst_protocol.rb +183 -0
  1126. data/lib/cosmos/interfaces/protocols/crc_protocol.rb +183 -0
  1127. data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +144 -0
  1128. data/lib/cosmos/interfaces/protocols/ignore_packet_protocol.rb +46 -0
  1129. data/lib/cosmos/interfaces/protocols/length_protocol.rb +154 -0
  1130. data/lib/cosmos/interfaces/protocols/override_protocol.rb +52 -0
  1131. data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +187 -0
  1132. data/lib/cosmos/interfaces/protocols/protocol.rb +73 -0
  1133. data/lib/cosmos/interfaces/protocols/template_protocol.rb +253 -0
  1134. data/lib/cosmos/interfaces/protocols/terminated_protocol.rb +83 -0
  1135. data/lib/cosmos/interfaces/serial_interface.rb +91 -0
  1136. data/lib/cosmos/interfaces/simulated_target_interface.rb +149 -0
  1137. data/lib/cosmos/interfaces/stream_interface.rb +65 -0
  1138. data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -0
  1139. data/lib/cosmos/interfaces/tcpip_server_interface.rb +624 -0
  1140. data/lib/cosmos/interfaces/udp_interface.rb +154 -0
  1141. data/lib/cosmos/interfaces.rb +24 -0
  1142. data/lib/cosmos/io/buffered_file.rb +100 -0
  1143. data/lib/cosmos/io/cosmos_snmp.rb +50 -0
  1144. data/lib/cosmos/io/io_multiplexer.rb +75 -0
  1145. data/lib/cosmos/io/json_drb.rb +307 -0
  1146. data/lib/cosmos/io/json_drb_object.rb +172 -0
  1147. data/lib/cosmos/io/json_drb_rack.rb +99 -0
  1148. data/lib/cosmos/io/json_rpc.rb +394 -0
  1149. data/lib/cosmos/io/posix_serial_driver.rb +187 -0
  1150. data/lib/cosmos/io/raw_logger.rb +170 -0
  1151. data/lib/cosmos/io/raw_logger_pair.rb +71 -0
  1152. data/lib/cosmos/io/serial_driver.rb +101 -0
  1153. data/lib/cosmos/io/stderr.rb +36 -0
  1154. data/lib/cosmos/io/stdout.rb +36 -0
  1155. data/lib/cosmos/io/udp_sockets.rb +196 -0
  1156. data/lib/cosmos/io/win32_serial_driver.rb +187 -0
  1157. data/lib/cosmos/packet_logs/ccsds_log_reader.rb +104 -0
  1158. data/lib/cosmos/packet_logs/packet_log_reader.rb +504 -0
  1159. data/lib/cosmos/packet_logs/packet_log_writer.rb +353 -0
  1160. data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -0
  1161. data/lib/cosmos/packet_logs.rb +6 -0
  1162. data/lib/cosmos/packets/binary_accessor.rb +1201 -0
  1163. data/lib/cosmos/packets/commands.rb +361 -0
  1164. data/lib/cosmos/packets/limits.rb +264 -0
  1165. data/lib/cosmos/packets/limits_response.rb +42 -0
  1166. data/lib/cosmos/packets/packet.rb +1075 -0
  1167. data/lib/cosmos/packets/packet_config.rb +614 -0
  1168. data/lib/cosmos/packets/packet_item.rb +442 -0
  1169. data/lib/cosmos/packets/packet_item_limits.rb +128 -0
  1170. data/lib/cosmos/packets/parsers/format_string_parser.rb +58 -0
  1171. data/lib/cosmos/packets/parsers/limits_parser.rb +147 -0
  1172. data/lib/cosmos/packets/parsers/limits_response_parser.rb +52 -0
  1173. data/lib/cosmos/packets/parsers/macro_parser.rb +121 -0
  1174. data/lib/cosmos/packets/parsers/packet_item_parser.rb +252 -0
  1175. data/lib/cosmos/packets/parsers/packet_parser.rb +124 -0
  1176. data/lib/cosmos/packets/parsers/processor_parser.rb +63 -0
  1177. data/lib/cosmos/packets/parsers/state_parser.rb +118 -0
  1178. data/lib/cosmos/packets/parsers/xtce_converter.rb +428 -0
  1179. data/lib/cosmos/packets/parsers/xtce_parser.rb +694 -0
  1180. data/lib/cosmos/packets/structure.rb +557 -0
  1181. data/lib/cosmos/packets/structure_item.rb +326 -0
  1182. data/lib/cosmos/packets/telemetry.rb +470 -0
  1183. data/lib/cosmos/processors/new_packet_log_processor.rb +39 -0
  1184. data/lib/cosmos/processors/processor.rb +76 -0
  1185. data/lib/cosmos/processors/statistics_processor.rb +72 -0
  1186. data/lib/cosmos/processors/watermark_processor.rb +49 -0
  1187. data/lib/cosmos/processors.rb +6 -0
  1188. data/lib/cosmos/script/api_shared.rb +995 -0
  1189. data/lib/cosmos/script/cmd_tlm_server.rb +216 -0
  1190. data/lib/cosmos/script/commands.rb +177 -0
  1191. data/lib/cosmos/script/extract.rb +141 -0
  1192. data/lib/cosmos/script/limits.rb +120 -0
  1193. data/lib/cosmos/script/replay.rb +60 -0
  1194. data/lib/cosmos/script/script.rb +149 -0
  1195. data/lib/cosmos/script/scripting.rb +146 -0
  1196. data/lib/cosmos/script/telemetry.rb +218 -0
  1197. data/lib/cosmos/script/tools.rb +121 -0
  1198. data/lib/cosmos/script.rb +9 -0
  1199. data/lib/cosmos/streams/serial_stream.rb +160 -0
  1200. data/lib/cosmos/streams/stream.rb +54 -0
  1201. data/lib/cosmos/streams/tcpip_client_stream.rb +113 -0
  1202. data/lib/cosmos/streams/tcpip_socket_stream.rb +186 -0
  1203. data/lib/cosmos/system/system.rb +1029 -0
  1204. data/lib/cosmos/system/target.rb +262 -0
  1205. data/lib/cosmos/system.rb +4 -0
  1206. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +470 -0
  1207. data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +94 -0
  1208. data/lib/cosmos/tools/cmd_sender/cmd_params.rb +382 -0
  1209. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +533 -0
  1210. data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -0
  1211. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +769 -0
  1212. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +221 -0
  1213. data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +206 -0
  1214. data/lib/cosmos/tools/cmd_tlm_server/api.rb +1694 -0
  1215. data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +54 -0
  1216. data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +82 -0
  1217. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +785 -0
  1218. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +294 -0
  1219. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +650 -0
  1220. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +132 -0
  1221. data/lib/cosmos/tools/cmd_tlm_server/connections.rb +175 -0
  1222. data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +216 -0
  1223. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +181 -0
  1224. data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +163 -0
  1225. data/lib/cosmos/tools/cmd_tlm_server/gui/replay_tab.rb +319 -0
  1226. data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +270 -0
  1227. data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +93 -0
  1228. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +292 -0
  1229. data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +153 -0
  1230. data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +124 -0
  1231. data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +161 -0
  1232. data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +511 -0
  1233. data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +71 -0
  1234. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +144 -0
  1235. data/lib/cosmos/tools/config_editor/config_editor.rb +918 -0
  1236. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +686 -0
  1237. data/lib/cosmos/tools/config_editor/system_config_dialog.rb +158 -0
  1238. data/lib/cosmos/tools/data_viewer/data_viewer.rb +789 -0
  1239. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +121 -0
  1240. data/lib/cosmos/tools/data_viewer/dump_component.rb +34 -0
  1241. data/lib/cosmos/tools/data_viewer/text_component.rb +77 -0
  1242. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +182 -0
  1243. data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +380 -0
  1244. data/lib/cosmos/tools/launcher/launcher.rb +195 -0
  1245. data/lib/cosmos/tools/launcher/launcher_config.rb +245 -0
  1246. data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -0
  1247. data/lib/cosmos/tools/launcher/launcher_tool.rb +116 -0
  1248. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +1029 -0
  1249. data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -0
  1250. data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -0
  1251. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +641 -0
  1252. data/lib/cosmos/tools/replay/replay.rb +17 -0
  1253. data/lib/cosmos/tools/script_runner/script_audit.rb +148 -0
  1254. data/lib/cosmos/tools/script_runner/script_runner.rb +1066 -0
  1255. data/lib/cosmos/tools/script_runner/script_runner_config.rb +53 -0
  1256. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1985 -0
  1257. data/lib/cosmos/tools/table_manager/table.rb +61 -0
  1258. data/lib/cosmos/tools/table_manager/table_config.rb +191 -0
  1259. data/lib/cosmos/tools/table_manager/table_item.rb +58 -0
  1260. data/lib/cosmos/tools/table_manager/table_item_parser.rb +48 -0
  1261. data/lib/cosmos/tools/table_manager/table_manager.rb +1152 -0
  1262. data/lib/cosmos/tools/table_manager/table_manager_core.rb +320 -0
  1263. data/lib/cosmos/tools/table_manager/table_parser.rb +75 -0
  1264. data/lib/cosmos/tools/test_runner/results_writer.rb +287 -0
  1265. data/lib/cosmos/tools/test_runner/test.rb +540 -0
  1266. data/lib/cosmos/tools/test_runner/test_runner.rb +1302 -0
  1267. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +353 -0
  1268. data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -0
  1269. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1305 -0
  1270. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +535 -0
  1271. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +131 -0
  1272. data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +92 -0
  1273. data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -0
  1274. data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +95 -0
  1275. data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -0
  1276. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +250 -0
  1277. data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -0
  1278. data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -0
  1279. data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +210 -0
  1280. data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +232 -0
  1281. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +503 -0
  1282. data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +173 -0
  1283. data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +21 -0
  1284. data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +381 -0
  1285. data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +191 -0
  1286. data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -0
  1287. data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -0
  1288. data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -0
  1289. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +173 -0
  1290. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -0
  1291. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -0
  1292. data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +209 -0
  1293. data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -0
  1294. data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -0
  1295. data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -0
  1296. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1291 -0
  1297. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +447 -0
  1298. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +164 -0
  1299. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -0
  1300. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +114 -0
  1301. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -0
  1302. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +79 -0
  1303. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -0
  1304. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1079 -0
  1305. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +104 -0
  1306. data/lib/cosmos/tools/tlm_viewer/screen.rb +590 -0
  1307. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +615 -0
  1308. data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +314 -0
  1309. data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +109 -0
  1310. data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +65 -0
  1311. data/lib/cosmos/tools/tlm_viewer/widgets/backgroundbutton_widget.rb +54 -0
  1312. data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +56 -0
  1313. data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -0
  1314. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_clickable.rb +47 -0
  1315. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +84 -0
  1316. data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +78 -0
  1317. data/lib/cosmos/tools/tlm_viewer/widgets/canvasellipse_widget.rb +40 -0
  1318. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +48 -0
  1319. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +109 -0
  1320. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +45 -0
  1321. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +55 -0
  1322. data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +55 -0
  1323. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +67 -0
  1324. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +131 -0
  1325. data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +40 -0
  1326. data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +32 -0
  1327. data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +31 -0
  1328. data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +32 -0
  1329. data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -0
  1330. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +30 -0
  1331. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +24 -0
  1332. data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +31 -0
  1333. data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +38 -0
  1334. data/lib/cosmos/tools/tlm_viewer/widgets/labelled_widget.rb +58 -0
  1335. data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +37 -0
  1336. data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +36 -0
  1337. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +58 -0
  1338. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +40 -0
  1339. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +36 -0
  1340. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitscolumn_widget.rb +37 -0
  1341. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +36 -0
  1342. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangecolumn_widget.rb +38 -0
  1343. data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +32 -0
  1344. data/lib/cosmos/tools/tlm_viewer/widgets/led_widget.rb +108 -0
  1345. data/lib/cosmos/tools/tlm_viewer/widgets/limits_widget.rb +163 -0
  1346. data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +130 -0
  1347. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolor_widget.rb +108 -0
  1348. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolumn_widget.rb +130 -0
  1349. data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +62 -0
  1350. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +59 -0
  1351. data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +114 -0
  1352. data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +39 -0
  1353. data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +41 -0
  1354. data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +63 -0
  1355. data/lib/cosmos/tools/tlm_viewer/widgets/rangecolumn_widget.rb +63 -0
  1356. data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +35 -0
  1357. data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +34 -0
  1358. data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +32 -0
  1359. data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +53 -0
  1360. data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +25 -0
  1361. data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +27 -0
  1362. data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +56 -0
  1363. data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +25 -0
  1364. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +86 -0
  1365. data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +21 -0
  1366. data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +125 -0
  1367. data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +48 -0
  1368. data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -0
  1369. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +36 -0
  1370. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitscolumn_widget.rb +36 -0
  1371. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +36 -0
  1372. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangecolumn_widget.rb +36 -0
  1373. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +37 -0
  1374. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +40 -0
  1375. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +270 -0
  1376. data/lib/cosmos/tools/tlm_viewer/widgets.rb +65 -0
  1377. data/lib/cosmos/top_level.rb +825 -0
  1378. data/lib/cosmos/utilities/crc.rb +271 -0
  1379. data/lib/cosmos/utilities/csv.rb +190 -0
  1380. data/lib/cosmos/utilities/logger.rb +137 -0
  1381. data/lib/cosmos/utilities/low_fragmentation_array.rb +19 -0
  1382. data/lib/cosmos/utilities/message_log.rb +80 -0
  1383. data/lib/cosmos/utilities/quaternion.rb +258 -0
  1384. data/lib/cosmos/utilities/ruby_lex_utils.rb +312 -0
  1385. data/lib/cosmos/utilities/simulated_target.rb +100 -0
  1386. data/lib/cosmos/utilities/sleeper.rb +44 -0
  1387. data/lib/cosmos/utilities.rb +11 -0
  1388. data/lib/cosmos/version.rb +12 -0
  1389. data/lib/cosmos/win32/excel.rb +123 -0
  1390. data/lib/cosmos/win32/win32.rb +381 -0
  1391. data/lib/cosmos/win32/win32_main.rb +325 -0
  1392. data/lib/cosmos.rb +63 -0
  1393. data/make_gems.sh +10 -0
  1394. data/roodi.yml +24 -0
  1395. data/run_gui_tests.bat +46 -0
  1396. data/spec/ccsds/ccsds_packet_spec.rb +67 -0
  1397. data/spec/ccsds/ccsds_parser_spec.rb +148 -0
  1398. data/spec/config/config_parser_spec.rb +399 -0
  1399. data/spec/conversions/conversion_spec.rb +31 -0
  1400. data/spec/conversions/generic_conversion_spec.rb +45 -0
  1401. data/spec/conversions/new_packet_log_conversion_spec.rb +39 -0
  1402. data/spec/conversions/packet_time_formatted_conversion_spec.rb +58 -0
  1403. data/spec/conversions/packet_time_seconds_conversion_spec.rb +60 -0
  1404. data/spec/conversions/polynomial_conversion_spec.rb +40 -0
  1405. data/spec/conversions/processor_conversion_spec.rb +45 -0
  1406. data/spec/conversions/received_count_conversion_spec.rb +43 -0
  1407. data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -0
  1408. data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -0
  1409. data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -0
  1410. data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -0
  1411. data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -0
  1412. data/spec/core_ext/array_spec.rb +247 -0
  1413. data/spec/core_ext/class_spec.rb +90 -0
  1414. data/spec/core_ext/cosmos_io_spec.rb +77 -0
  1415. data/spec/core_ext/exception_spec.rb +91 -0
  1416. data/spec/core_ext/file_spec.rb +72 -0
  1417. data/spec/core_ext/hash_spec.rb +24 -0
  1418. data/spec/core_ext/io_spec.rb +46 -0
  1419. data/spec/core_ext/kernel_spec.rb +54 -0
  1420. data/spec/core_ext/math_spec.rb +116 -0
  1421. data/spec/core_ext/matrix_spec.rb +127 -0
  1422. data/spec/core_ext/objectspace_spec.rb +32 -0
  1423. data/spec/core_ext/range_spec.rb +21 -0
  1424. data/spec/core_ext/socket_spec.rb +34 -0
  1425. data/spec/core_ext/string_spec.rb +239 -0
  1426. data/spec/core_ext/stringio_spec.rb +21 -0
  1427. data/spec/core_ext/time_spec.rb +222 -0
  1428. data/spec/gui/line_graph/line_clip_spec.rb +324 -0
  1429. data/spec/gui/qt_spec.rb +104 -0
  1430. data/spec/gui/utilities/script_module_gui_spec.rb +83 -0
  1431. data/spec/install/config/data/data.txt +1 -0
  1432. data/spec/install/config/system/system.txt +27 -0
  1433. data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -0
  1434. data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +113 -0
  1435. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -0
  1436. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -0
  1437. data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -0
  1438. data/spec/install/config/targets/INST/lib/sim_inst.rb +305 -0
  1439. data/spec/install/config/targets/INST/screens/hs.txt +42 -0
  1440. data/spec/install/config/targets/INST/target.txt +12 -0
  1441. data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -0
  1442. data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +10 -0
  1443. data/spec/install/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
  1444. data/spec/install/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  1445. data/spec/install/config/targets/SYSTEM/cmd_tlm_server.txt +6 -0
  1446. data/spec/install/config/targets/SYSTEM/screens/status.txt +12 -0
  1447. data/spec/install/config/targets/SYSTEM/target.txt +12 -0
  1448. data/spec/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +4 -0
  1449. data/spec/install/lib/README.txt +1 -0
  1450. data/spec/install/yaml_docs_spec.rb +132 -0
  1451. data/spec/interfaces/cmd_tlm_server_interface_spec.rb +149 -0
  1452. data/spec/interfaces/interface_spec.rb +513 -0
  1453. data/spec/interfaces/linc_interface_spec.rb +243 -0
  1454. data/spec/interfaces/protocols/burst_protocol_spec.rb +318 -0
  1455. data/spec/interfaces/protocols/crc_protocol_spec.rb +825 -0
  1456. data/spec/interfaces/protocols/fixed_protocol_spec.rb +154 -0
  1457. data/spec/interfaces/protocols/ignore_packet_protocol_spec.rb +243 -0
  1458. data/spec/interfaces/protocols/length_protocol_spec.rb +587 -0
  1459. data/spec/interfaces/protocols/override_protocol_spec.rb +162 -0
  1460. data/spec/interfaces/protocols/preidentified_protocol_spec.rb +368 -0
  1461. data/spec/interfaces/protocols/template_protocol_spec.rb +444 -0
  1462. data/spec/interfaces/protocols/terminated_protocol_spec.rb +174 -0
  1463. data/spec/interfaces/serial_interface_spec.rb +66 -0
  1464. data/spec/interfaces/simulated_target_interface_spec.rb +128 -0
  1465. data/spec/interfaces/tcpip_client_interface_spec.rb +60 -0
  1466. data/spec/interfaces/tcpip_server_interface_spec.rb +157 -0
  1467. data/spec/interfaces/udp_interface_spec.rb +249 -0
  1468. data/spec/io/buffered_file_spec.rb +146 -0
  1469. data/spec/io/io_multiplexer_spec.rb +102 -0
  1470. data/spec/io/json_drb_object_spec.rb +106 -0
  1471. data/spec/io/json_drb_rack_spec.rb +166 -0
  1472. data/spec/io/json_drb_spec.rb +251 -0
  1473. data/spec/io/json_rpc_spec.rb +270 -0
  1474. data/spec/io/posix_serial_driver_spec.rb +87 -0
  1475. data/spec/io/raw_logger_pair_spec.rb +76 -0
  1476. data/spec/io/raw_logger_spec.rb +138 -0
  1477. data/spec/io/serial_driver_spec.rb +64 -0
  1478. data/spec/io/stderr_spec.rb +32 -0
  1479. data/spec/io/stdout_spec.rb +32 -0
  1480. data/spec/io/udp_sockets_spec.rb +139 -0
  1481. data/spec/io/win32_serial_driver_spec.rb +129 -0
  1482. data/spec/packet_logs/packet_log_reader_spec.rb +607 -0
  1483. data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -0
  1484. data/spec/packet_logs/packet_log_writer_spec.rb +227 -0
  1485. data/spec/packets/binary_accessor_spec.rb +2323 -0
  1486. data/spec/packets/commands_spec.rb +401 -0
  1487. data/spec/packets/limits_response_spec.rb +25 -0
  1488. data/spec/packets/limits_spec.rb +344 -0
  1489. data/spec/packets/packet_config_spec.rb +862 -0
  1490. data/spec/packets/packet_item_limits_spec.rb +161 -0
  1491. data/spec/packets/packet_item_spec.rb +450 -0
  1492. data/spec/packets/packet_spec.rb +1499 -0
  1493. data/spec/packets/parsers/format_string_parser_spec.rb +122 -0
  1494. data/spec/packets/parsers/limits_parser_spec.rb +293 -0
  1495. data/spec/packets/parsers/limits_response_parser_spec.rb +149 -0
  1496. data/spec/packets/parsers/macro_parser_spec.rb +220 -0
  1497. data/spec/packets/parsers/packet_item_parser_spec.rb +405 -0
  1498. data/spec/packets/parsers/packet_parser_spec.rb +99 -0
  1499. data/spec/packets/parsers/processor_parser_spec.rb +114 -0
  1500. data/spec/packets/parsers/state_parser_spec.rb +247 -0
  1501. data/spec/packets/parsers/xtce_parser_spec.rb +395 -0
  1502. data/spec/packets/structure_item_spec.rb +200 -0
  1503. data/spec/packets/structure_spec.rb +657 -0
  1504. data/spec/packets/telemetry_spec.rb +629 -0
  1505. data/spec/processors/new_packet_log_processor_spec.rb +39 -0
  1506. data/spec/processors/processor_spec.rb +55 -0
  1507. data/spec/processors/statistics_processor_spec.rb +95 -0
  1508. data/spec/processors/watermark_processor_spec.rb +51 -0
  1509. data/spec/script/cmd_tlm_server_spec.rb +194 -0
  1510. data/spec/script/commands_disconnect_spec.rb +258 -0
  1511. data/spec/script/commands_spec.rb +283 -0
  1512. data/spec/script/extract_spec.rb +166 -0
  1513. data/spec/script/limits_spec.rb +133 -0
  1514. data/spec/script/script_spec.rb +80 -0
  1515. data/spec/script/scripting_spec.rb +742 -0
  1516. data/spec/script/telemetry_spec.rb +186 -0
  1517. data/spec/script/tools_spec.rb +111 -0
  1518. data/spec/spec_helper.rb +248 -0
  1519. data/spec/streams/serial_stream_spec.rb +122 -0
  1520. data/spec/streams/stream_spec.rb +30 -0
  1521. data/spec/streams/tcpip_client_stream_spec.rb +65 -0
  1522. data/spec/streams/tcpip_socket_stream_spec.rb +231 -0
  1523. data/spec/system/system_spec.rb +1081 -0
  1524. data/spec/system/target_spec.rb +368 -0
  1525. data/spec/tools/cmd_tlm_server/api_spec.rb +1656 -0
  1526. data/spec/tools/cmd_tlm_server/background_task_spec.rb +44 -0
  1527. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +190 -0
  1528. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +785 -0
  1529. data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +496 -0
  1530. data/spec/tools/cmd_tlm_server/commanding_spec.rb +171 -0
  1531. data/spec/tools/cmd_tlm_server/connections_spec.rb +231 -0
  1532. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +319 -0
  1533. data/spec/tools/cmd_tlm_server/interfaces_spec.rb +248 -0
  1534. data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +153 -0
  1535. data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +139 -0
  1536. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +150 -0
  1537. data/spec/tools/cmd_tlm_server/routers_spec.rb +219 -0
  1538. data/spec/tools/launcher/launcher_config_spec.rb +474 -0
  1539. data/spec/tools/table_manager/table_config_spec.rb +225 -0
  1540. data/spec/tools/table_manager/table_item_parser_spec.rb +61 -0
  1541. data/spec/tools/table_manager/table_item_spec.rb +57 -0
  1542. data/spec/tools/table_manager/table_parser_spec.rb +96 -0
  1543. data/spec/tools/table_manager/table_spec.rb +90 -0
  1544. data/spec/tools/table_manager/tablemanager_core_spec.rb +556 -0
  1545. data/spec/tools/tlm_viewer/tlm_viewer_config_spec.rb +403 -0
  1546. data/spec/top_level/top_level_spec.rb +545 -0
  1547. data/spec/utilities/crc_spec.rb +45 -0
  1548. data/spec/utilities/csv_spec.rb +148 -0
  1549. data/spec/utilities/logger_spec.rb +102 -0
  1550. data/spec/utilities/message_log_spec.rb +84 -0
  1551. data/spec/utilities/quaternion_spec.rb +107 -0
  1552. data/spec/utilities/ruby_lex_utils_spec.rb +86 -0
  1553. data/tasks/gemfile_stats.rake +103 -0
  1554. data/tasks/manifest.rake +22 -0
  1555. data/tasks/spec.rake +23 -0
  1556. data/test/benchmarks/binary_accessor_benchmark.rb +14 -0
  1557. data/test/benchmarks/gsub_benchmark.rb +152 -0
  1558. data/test/benchmarks/is_a_benchmark.rb +34 -0
  1559. data/test/performance/PACKETS.bat +1 -0
  1560. data/test/performance/Rakefile +77 -0
  1561. data/test/performance/THREADS.bat +1 -0
  1562. data/test/performance/config/data/attitude.bin +0 -0
  1563. data/test/performance/config/data/crc.txt +215 -0
  1564. data/test/performance/config/data/diamond.STL +58 -0
  1565. data/test/performance/config/data/groundoff.gif +0 -0
  1566. data/test/performance/config/data/groundon.gif +0 -0
  1567. data/test/performance/config/data/hselectoff.gif +0 -0
  1568. data/test/performance/config/data/hselecton.gif +0 -0
  1569. data/test/performance/config/data/hswitchoff.gif +0 -0
  1570. data/test/performance/config/data/hswitchon.gif +0 -0
  1571. data/test/performance/config/data/meta_init.txt +4 -0
  1572. data/test/performance/config/data/position.bin +0 -0
  1573. data/test/performance/config/data/poweroff.gif +0 -0
  1574. data/test/performance/config/data/poweron.gif +0 -0
  1575. data/test/performance/config/data/satellite.gif +0 -0
  1576. data/test/performance/config/data/tada.wav +0 -0
  1577. data/test/performance/config/data/vswitchoff.gif +0 -0
  1578. data/test/performance/config/data/vswitchon.gif +0 -0
  1579. data/test/performance/config/system/system.txt +0 -0
  1580. data/test/performance/config/system/system_packets.txt +38 -0
  1581. data/test/performance/config/system/system_threads.txt +58 -0
  1582. data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +46 -0
  1583. data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -0
  1584. data/test/performance/config/targets/COSMOS/cmd_tlm_server.txt +6 -0
  1585. data/test/performance/config/targets/COSMOS/screens/limits_change.txt +20 -0
  1586. data/test/performance/config/targets/COSMOS/screens/version.txt +19 -0
  1587. data/test/performance/config/targets/COSMOS/target.txt +11 -0
  1588. data/test/performance/config/targets/PACKET/cmd_tlm/packet_cmds.txt +20 -0
  1589. data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +98 -0
  1590. data/test/performance/config/targets/PACKET/cmd_tlm_server.txt +6 -0
  1591. data/test/performance/config/targets/PACKET/lib/packet_interface.rb +22 -0
  1592. data/test/performance/config/targets/PACKET/lib/packet_limits_response.rb +24 -0
  1593. data/test/performance/config/targets/PACKET/screens/status.txt +25 -0
  1594. data/test/performance/config/targets/PACKET/target.txt +28 -0
  1595. data/test/performance/config/targets/SYSTEM/screens/status.txt +12 -0
  1596. data/test/performance/config/targets/THREAD/cmd_tlm/thread_cmds.txt +17 -0
  1597. data/test/performance/config/targets/THREAD/cmd_tlm/thread_tlm.txt +18 -0
  1598. data/test/performance/config/targets/THREAD/cmd_tlm_server.txt +6 -0
  1599. data/test/performance/config/targets/THREAD/lib/thread_interface.rb +22 -0
  1600. data/test/performance/config/targets/THREAD/screens/status.txt +25 -0
  1601. data/test/performance/config/targets/THREAD/target.txt +7 -0
  1602. data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt +28 -0
  1603. data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt +68 -0
  1604. data/test/performance/config/tools/data_viewer/data_viewer.txt +11 -0
  1605. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  1606. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  1607. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  1608. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  1609. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  1610. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  1611. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  1612. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  1613. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  1614. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  1615. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  1616. data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  1617. data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  1618. data/test/performance/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  1619. data/test/performance/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  1620. data/test/performance/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  1621. data/test/performance/config/tools/handbook_creator/default_toc.xsl +59 -0
  1622. data/test/performance/config/tools/handbook_creator/handbook_creator.txt +66 -0
  1623. data/test/performance/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  1624. data/test/performance/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  1625. data/test/performance/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  1626. data/test/performance/config/tools/handbook_creator/templates/header.html.erb +25 -0
  1627. data/test/performance/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  1628. data/test/performance/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  1629. data/test/performance/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  1630. data/test/performance/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  1631. data/test/performance/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  1632. data/test/performance/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  1633. data/test/performance/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  1634. data/test/performance/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  1635. data/test/performance/config/tools/handbook_creator/templates/title.html.erb +1 -0
  1636. data/test/performance/config/tools/launcher/launcher_packets.txt +34 -0
  1637. data/test/performance/config/tools/launcher/launcher_threads.txt +83 -0
  1638. data/test/performance/config/tools/limits_monitor/README.txt +1 -0
  1639. data/test/performance/config/tools/opengl_builder/README.txt +1 -0
  1640. data/test/performance/config/tools/script_runner/script_runner.txt +3 -0
  1641. data/test/performance/config/tools/table_manager/ConfigTables_def.txt +8 -0
  1642. data/test/performance/config/tools/table_manager/ExampleTableDefinition.txt +24 -0
  1643. data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -0
  1644. data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -0
  1645. data/test/performance/config/tools/table_manager/PPSSelectionTable_def.txt +8 -0
  1646. data/test/performance/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -0
  1647. data/test/performance/config/tools/test_runner/test_runner.txt +17 -0
  1648. data/test/performance/config/tools/tlm_extractor/tlm_extractor.txt +13 -0
  1649. data/test/performance/config/tools/tlm_extractor/tlm_extractor2.txt +2 -0
  1650. data/test/performance/config/tools/tlm_extractor/tlm_extractor3.txt +2 -0
  1651. data/test/performance/config/tools/tlm_extractor/tlm_extractor4.txt +2 -0
  1652. data/test/performance/config/tools/tlm_grapher/README.txt +1 -0
  1653. data/test/performance/config/tools/tlm_grapher/tlm_grapher.txt +204 -0
  1654. data/test/performance/config/tools/tlm_viewer/tlm_viewer.txt +13 -0
  1655. data/test/performance/lib/packet_target.rb +126 -0
  1656. data/test/performance/lib/thread_target.rb +120 -0
  1657. data/test/performance/lib/user_version.rb +3 -0
  1658. data/test/performance/outputs/handbooks/README.txt +1 -0
  1659. data/test/performance/outputs/logs/README.txt +1 -0
  1660. data/test/performance/outputs/saved_config/README.txt +1 -0
  1661. data/test/performance/outputs/tables/README.txt +1 -0
  1662. data/test/performance/outputs/tmp/README.txt +1 -0
  1663. data/test/performance/procedures/checks.rb +11 -0
  1664. data/test/performance/procedures/clear_util.rb +7 -0
  1665. data/test/performance/procedures/collect.rb +18 -0
  1666. data/test/performance/procedures/collect_util.rb +14 -0
  1667. data/test/performance/procedures/cosmos_api_test.rb +293 -0
  1668. data/test/performance/procedures/disconnect.rb +29 -0
  1669. data/test/performance/procedures/example_test.rb +182 -0
  1670. data/test/performance/procedures/plot_test.rb +8 -0
  1671. data/test/performance/procedures/procedure.rb +3 -0
  1672. data/test/performance/procedures/run_example_test.rb +3 -0
  1673. data/test/performance/procedures/test.rb +51 -0
  1674. data/test/performance/tools/CmdExtractor +14 -0
  1675. data/test/performance/tools/CmdExtractor.bat +59 -0
  1676. data/test/performance/tools/CmdSender +14 -0
  1677. data/test/performance/tools/CmdSender.bat +59 -0
  1678. data/test/performance/tools/CmdTlmServer +16 -0
  1679. data/test/performance/tools/CmdTlmServer.bat +59 -0
  1680. data/test/performance/tools/CmdTlmServerMemProf +20 -0
  1681. data/test/performance/tools/CmdTlmServerMemProf.bat +59 -0
  1682. data/test/performance/tools/DataViewer +14 -0
  1683. data/test/performance/tools/DataViewer.bat +59 -0
  1684. data/test/performance/tools/HandbookCreator +14 -0
  1685. data/test/performance/tools/HandbookCreator.bat +61 -0
  1686. data/test/performance/tools/Launcher +14 -0
  1687. data/test/performance/tools/Launcher.bat +59 -0
  1688. data/test/performance/tools/LimitsMonitor +14 -0
  1689. data/test/performance/tools/LimitsMonitor.bat +59 -0
  1690. data/test/performance/tools/OpenGLBuilder +14 -0
  1691. data/test/performance/tools/OpenGLBuilder.bat +59 -0
  1692. data/test/performance/tools/PacketTarget +14 -0
  1693. data/test/performance/tools/PacketTarget.bat +59 -0
  1694. data/test/performance/tools/PacketViewer +14 -0
  1695. data/test/performance/tools/PacketViewer.bat +59 -0
  1696. data/test/performance/tools/Replay +14 -0
  1697. data/test/performance/tools/Replay.bat +59 -0
  1698. data/test/performance/tools/ScpiTarget +14 -0
  1699. data/test/performance/tools/ScpiTarget.bat +59 -0
  1700. data/test/performance/tools/ScriptRunner +14 -0
  1701. data/test/performance/tools/ScriptRunner.bat +59 -0
  1702. data/test/performance/tools/TableManager +14 -0
  1703. data/test/performance/tools/TableManager.bat +59 -0
  1704. data/test/performance/tools/TestRunner +14 -0
  1705. data/test/performance/tools/TestRunner.bat +59 -0
  1706. data/test/performance/tools/ThreadTarget +14 -0
  1707. data/test/performance/tools/ThreadTarget.bat +59 -0
  1708. data/test/performance/tools/TlmExtractor +14 -0
  1709. data/test/performance/tools/TlmExtractor.bat +59 -0
  1710. data/test/performance/tools/TlmGrapher +14 -0
  1711. data/test/performance/tools/TlmGrapher.bat +59 -0
  1712. data/test/performance/tools/TlmGrapherMemProf +19 -0
  1713. data/test/performance/tools/TlmGrapherMemProf.bat +59 -0
  1714. data/test/performance/tools/TlmViewer +14 -0
  1715. data/test/performance/tools/TlmViewer.bat +59 -0
  1716. data/test/performance/tools/TlmViewerMemProf +19 -0
  1717. data/test/performance/tools/TlmViewerMemProf.bat +59 -0
  1718. data/test/performance/tools/identify_performance.rb +82 -0
  1719. data/test/performance/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
  1720. data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -0
  1721. data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -0
  1722. data/test/performance/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
  1723. data/test/performance/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
  1724. data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -0
  1725. data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -0
  1726. data/test/performance/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
  1727. data/test/performance/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
  1728. data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -0
  1729. data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -0
  1730. data/test/performance/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
  1731. data/test/performance/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
  1732. data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -0
  1733. data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -0
  1734. data/test/performance/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
  1735. data/test/performance/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
  1736. data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -0
  1737. data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -0
  1738. data/test/performance/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
  1739. data/test/performance/tools/mac/Launcher.app/Contents/Info.plist +38 -0
  1740. data/test/performance/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -0
  1741. data/test/performance/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -0
  1742. data/test/performance/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
  1743. data/test/performance/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
  1744. data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -0
  1745. data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -0
  1746. data/test/performance/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
  1747. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
  1748. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -0
  1749. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -0
  1750. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
  1751. data/test/performance/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
  1752. data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -0
  1753. data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -0
  1754. data/test/performance/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
  1755. data/test/performance/tools/mac/Replay.app/Contents/Info.plist +38 -0
  1756. data/test/performance/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -0
  1757. data/test/performance/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -0
  1758. data/test/performance/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
  1759. data/test/performance/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
  1760. data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -0
  1761. data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -0
  1762. data/test/performance/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
  1763. data/test/performance/tools/mac/TableManager.app/Contents/Info.plist +38 -0
  1764. data/test/performance/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -0
  1765. data/test/performance/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -0
  1766. data/test/performance/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
  1767. data/test/performance/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
  1768. data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -0
  1769. data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -0
  1770. data/test/performance/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
  1771. data/test/performance/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
  1772. data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -0
  1773. data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -0
  1774. data/test/performance/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
  1775. data/test/performance/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
  1776. data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -0
  1777. data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -0
  1778. data/test/performance/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
  1779. data/test/performance/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
  1780. data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -0
  1781. data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -0
  1782. data/test/performance/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
  1783. metadata +2286 -0
@@ -0,0 +1,1656 @@
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
+ # Save cmd_tlm_server.txt
22
+ @cts = File.join(Cosmos::USERPATH,'config','tools','cmd_tlm_server','cmd_tlm_server.txt')
23
+ FileUtils.mv @cts, Cosmos::USERPATH
24
+
25
+ FileUtils.mkdir_p(File.dirname(@cts))
26
+ File.open(@cts,'w') do |file|
27
+ file.puts 'INTERFACE INST_INT interface.rb'
28
+ file.puts ' TARGET INST'
29
+ file.puts ' PROTOCOL READ_WRITE OverrideProtocol'
30
+ file.puts 'ROUTER ROUTE interface.rb'
31
+ file.puts 'BACKGROUND_TASK example_background_task1.rb'
32
+ file.puts 'BACKGROUND_TASK example_background_task2.rb'
33
+ end
34
+ @background1 = File.join(Cosmos::USERPATH,'lib','example_background_task1.rb')
35
+ File.open(@background1,'w') do |file|
36
+ file.write <<-DOC
37
+ require 'cosmos/tools/cmd_tlm_server/background_task'
38
+ module Cosmos
39
+ class ExampleBackgroundTask1 < BackgroundTask
40
+ def initialize
41
+ super()
42
+ @name = 'Example Background Task1'
43
+ @status = "This is example one"
44
+ @sleeper = Sleeper.new
45
+ end
46
+ def call
47
+ return if @sleeper.sleep(0.3)
48
+ end
49
+ def stop
50
+ @sleeper.cancel
51
+ end
52
+ end
53
+ end
54
+ DOC
55
+ end
56
+ @background2 = File.join(Cosmos::USERPATH,'lib','example_background_task2.rb')
57
+ File.open(@background2,'w') do |file|
58
+ file.write <<-DOC
59
+ require 'cosmos/tools/cmd_tlm_server/background_task'
60
+ module Cosmos
61
+ class ExampleBackgroundTask2 < BackgroundTask
62
+ def initialize
63
+ super()
64
+ @name = 'Example Background Task2'
65
+ @status = "This is example two"
66
+ @sleeper = Sleeper.new
67
+ end
68
+ def call
69
+ loop do
70
+ return if @sleeper.sleep(1)
71
+ end
72
+ end
73
+ def stop
74
+ @sleeper.cancel
75
+ end
76
+ end
77
+ end
78
+ DOC
79
+ end
80
+ end
81
+
82
+ after(:all) do
83
+ FileUtils.rm_rf @background1
84
+ FileUtils.rm_rf @background2
85
+ # Restore cmd_tlm_server.txt
86
+ FileUtils.mv File.join(Cosmos::USERPATH, 'cmd_tlm_server.txt'),
87
+ File.join(Cosmos::USERPATH,'config','tools','cmd_tlm_server')
88
+ end
89
+
90
+ before(:each) do
91
+ allow_any_instance_of(Interface).to receive(:connected?)
92
+ allow_any_instance_of(Interface).to receive(:connect)
93
+ allow_any_instance_of(Interface).to receive(:disconnect)
94
+ allow_any_instance_of(Interface).to receive(:write_raw)
95
+ allow_any_instance_of(Interface).to receive(:read)
96
+ allow_any_instance_of(Interface).to receive(:write)
97
+ @api = CmdTlmServer.new
98
+ end
99
+
100
+ after(:each) do
101
+ @api.stop
102
+ end
103
+
104
+ def test_cmd_unknown(method)
105
+ expect { @api.public_send(method,"BLAH COLLECT with TYPE NORMAL") }.to raise_error(/does not exist/)
106
+ expect { @api.public_send(method,"INST UNKNOWN with TYPE NORMAL") }.to raise_error(/does not exist/)
107
+ expect { @api.public_send(method,"INST COLLECT with BLAH NORMAL") }.to raise_error(/does not exist/)
108
+ expect { @api.public_send(method,"BLAH","COLLECT","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
109
+ expect { @api.public_send(method,"INST","UNKNOWN","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
110
+ expect { @api.public_send(method,"INST","COLLECT","BLAH"=>"NORMAL") }.to raise_error(/does not exist/)
111
+ end
112
+
113
+ describe "cmd" do
114
+ it "complains about unknown targets, commands, and parameters" do
115
+ test_cmd_unknown(:cmd)
116
+ sleep(0.5)
117
+ end
118
+
119
+ it "processes a string" do
120
+ target_name, cmd_name, params = @api.cmd("INST COLLECT with TYPE NORMAL, DURATION 5")
121
+ expect(target_name).to eql 'INST'
122
+ expect(cmd_name).to eql 'COLLECT'
123
+ expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
124
+ end
125
+
126
+ it "complains if parameters are not separated by commas" do
127
+ expect { @api.cmd("INST COLLECT with TYPE NORMAL DURATION 5") }.to raise_error(/Missing comma/)
128
+ end
129
+
130
+ it "complains if parameters don't have values" do
131
+ expect { @api.cmd("INST COLLECT with TYPE") }.to raise_error(/Missing value/)
132
+ end
133
+
134
+ it "processes parameters" do
135
+ target_name, cmd_name, params = @api.cmd("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
136
+ expect(target_name).to eql 'INST'
137
+ expect(cmd_name).to eql 'COLLECT'
138
+ expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
139
+ end
140
+
141
+ it "processes commands without parameters" do
142
+ target_name, cmd_name, params = @api.cmd("INST","ABORT")
143
+ expect(target_name).to eql 'INST'
144
+ expect(cmd_name).to eql 'ABORT'
145
+ expect(params).to be {}
146
+ end
147
+
148
+ it "complains about too many parameters" do
149
+ expect { @api.cmd("INST","COLLECT","TYPE","DURATION") }.to raise_error(/Invalid number of arguments/)
150
+ end
151
+
152
+ it "warns about required parameters" do
153
+ expect { @api.cmd("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
154
+ end
155
+
156
+ it "warns about out of range parameters" do
157
+ expect { @api.cmd("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to raise_error(/not in valid range/)
158
+ end
159
+
160
+ it "warns about hazardous parameters" do
161
+ expect { @api.cmd("INST COLLECT with TYPE SPECIAL") }.to raise_error(/Hazardous/)
162
+ end
163
+
164
+ it "warns about hazardous commands" do
165
+ expect { @api.cmd("INST CLEAR") }.to raise_error(/Hazardous/)
166
+ end
167
+ end
168
+
169
+ describe "cmd_no_range_check" do
170
+ it "complains about unknown targets, commands, and parameters" do
171
+ test_cmd_unknown(:cmd_no_range_check)
172
+ end
173
+
174
+ it "processes a string" do
175
+ target_name, cmd_no_range_check_name, params = @api.cmd_no_range_check("INST COLLECT with TYPE NORMAL, DURATION 5")
176
+ expect(target_name).to eql 'INST'
177
+ expect(cmd_no_range_check_name).to eql 'COLLECT'
178
+ expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
179
+ end
180
+
181
+ it "processes parameters" do
182
+ target_name, cmd_no_range_check_name, params = @api.cmd_no_range_check("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
183
+ expect(target_name).to eql 'INST'
184
+ expect(cmd_no_range_check_name).to eql 'COLLECT'
185
+ expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
186
+ end
187
+
188
+ it "warns about required parameters" do
189
+ expect { @api.cmd_no_range_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
190
+ end
191
+
192
+ it "does not warn about out of range parameters" do
193
+ expect { @api.cmd_no_range_check("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to_not raise_error
194
+ end
195
+
196
+ it "warns about hazardous parameters" do
197
+ expect { @api.cmd_no_range_check("INST COLLECT with TYPE SPECIAL") }.to raise_error(/Hazardous/)
198
+ end
199
+
200
+ it "warns about hazardous commands" do
201
+ expect { @api.cmd_no_range_check("INST CLEAR") }.to raise_error(/Hazardous/)
202
+ end
203
+ end
204
+
205
+ describe "cmd_no_hazardous_check" do
206
+ it "complains about unknown targets, commands, and parameters" do
207
+ test_cmd_unknown(:cmd_no_hazardous_check)
208
+ end
209
+
210
+ it "processes a string" do
211
+ target_name, cmd_no_hazardous_check_name, params = @api.cmd_no_hazardous_check("INST COLLECT with TYPE NORMAL, DURATION 5")
212
+ expect(target_name).to eql 'INST'
213
+ expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
214
+ expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
215
+ end
216
+
217
+ it "processes parameters" do
218
+ target_name, cmd_no_hazardous_check_name, params = @api.cmd_no_hazardous_check("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
219
+ expect(target_name).to eql 'INST'
220
+ expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
221
+ expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
222
+ end
223
+
224
+ it "processes parameters that are strings" do
225
+ target_name, cmd_name, params = @api.cmd_no_hazardous_check("INST ASCIICMD with STRING 'ARM LASER'")
226
+ expect(target_name).to eql 'INST'
227
+ expect(cmd_name).to eql 'ASCIICMD'
228
+ expect(params).to include('STRING'=>'ARM LASER')
229
+ end
230
+
231
+ it "warns about required parameters" do
232
+ expect { @api.cmd_no_hazardous_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
233
+ end
234
+
235
+ it "warns about out of range parameters" do
236
+ expect { @api.cmd_no_hazardous_check("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to raise_error(/not in valid range/)
237
+ end
238
+
239
+ it "does not warn about hazardous parameters" do
240
+ expect { @api.cmd_no_hazardous_check("INST COLLECT with TYPE SPECIAL") }.to_not raise_error
241
+ end
242
+
243
+ it "does not warn about hazardous commands" do
244
+ expect { @api.cmd_no_hazardous_check("INST CLEAR") }.to_not raise_error
245
+ end
246
+ end
247
+
248
+ describe "cmd_no_checks" do
249
+ it "complains about unknown targets, commands, and parameters" do
250
+ test_cmd_unknown(:cmd_no_checks)
251
+ end
252
+
253
+ it "processes a string" do
254
+ target_name, cmd_no_checks_name, params = @api.cmd_no_checks("INST COLLECT with TYPE NORMAL, DURATION 5")
255
+ expect(target_name).to eql 'INST'
256
+ expect(cmd_no_checks_name).to eql 'COLLECT'
257
+ expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
258
+ end
259
+
260
+ it "processes parameters" do
261
+ target_name, cmd_no_checks_name, params = @api.cmd_no_checks("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
262
+ expect(target_name).to eql 'INST'
263
+ expect(cmd_no_checks_name).to eql 'COLLECT'
264
+ expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
265
+ end
266
+
267
+ it "warns about required parameters" do
268
+ expect { @api.cmd_no_checks("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
269
+ end
270
+
271
+ it "does not warn about out of range parameters" do
272
+ expect { @api.cmd_no_checks("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to_not raise_error
273
+ end
274
+
275
+ it "does not warn about hazardous parameters" do
276
+ expect { @api.cmd_no_checks("INST COLLECT with TYPE SPECIAL") }.to_not raise_error
277
+ end
278
+
279
+ it "does not warn about hazardous commands" do
280
+ expect { @api.cmd_no_checks("INST CLEAR") }.to_not raise_error
281
+ end
282
+ end
283
+
284
+ describe "cmd_raw" do
285
+ it "complains about unknown targets, commands, and parameters" do
286
+ test_cmd_unknown(:cmd_raw)
287
+ end
288
+
289
+ it "processes a string" do
290
+ target_name, cmd_name, params = @api.cmd_raw("INST COLLECT with TYPE 0, DURATION 5")
291
+ expect(target_name).to eql 'INST'
292
+ expect(cmd_name).to eql 'COLLECT'
293
+ expect(params).to include('TYPE'=>0, 'DURATION'=>5)
294
+ end
295
+
296
+ it "complains if parameters are not separated by commas" do
297
+ expect { @api.cmd_raw("INST COLLECT with TYPE 0 DURATION 5") }.to raise_error(/Missing comma/)
298
+ end
299
+
300
+ it "complains if parameters don't have values" do
301
+ expect { @api.cmd_raw("INST COLLECT with TYPE") }.to raise_error(/Missing value/)
302
+ end
303
+
304
+ it "processes parameters" do
305
+ target_name, cmd_name, params = @api.cmd_raw("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
306
+ expect(target_name).to eql 'INST'
307
+ expect(cmd_name).to eql 'COLLECT'
308
+ expect(params).to include('TYPE'=>0, 'DURATION'=>5)
309
+ end
310
+
311
+ it "processes commands without parameters" do
312
+ target_name, cmd_name, params = @api.cmd_raw("INST","ABORT")
313
+ expect(target_name).to eql 'INST'
314
+ expect(cmd_name).to eql 'ABORT'
315
+ expect(params).to be {}
316
+ end
317
+
318
+ it "complains about too many parameters" do
319
+ expect { @api.cmd_raw("INST","COLLECT","TYPE","DURATION") }.to raise_error(/Invalid number of arguments/)
320
+ end
321
+
322
+ it "warns about required parameters" do
323
+ expect { @api.cmd_raw("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
324
+ end
325
+
326
+ it "warns about out of range parameters" do
327
+ expect { @api.cmd_raw("INST COLLECT with TYPE 0, DURATION 1000") }.to raise_error(/not in valid range/)
328
+ end
329
+
330
+ it "warns about hazardous parameters" do
331
+ expect { @api.cmd_raw("INST COLLECT with TYPE 1") }.to raise_error(/Hazardous/)
332
+ end
333
+
334
+ it "warns about hazardous commands" do
335
+ expect { @api.cmd_raw("INST CLEAR") }.to raise_error(/Hazardous/)
336
+ end
337
+ end
338
+
339
+ describe "cmd_no_range_check" do
340
+ it "complains about unknown targets, commands, and parameters" do
341
+ test_cmd_unknown(:cmd_raw_no_range_check)
342
+ end
343
+
344
+ it "processes a string" do
345
+ target_name, cmd_no_range_check_name, params = @api.cmd_raw_no_range_check("INST COLLECT with TYPE 0, DURATION 5")
346
+ expect(target_name).to eql 'INST'
347
+ expect(cmd_no_range_check_name).to eql 'COLLECT'
348
+ expect(params).to include('TYPE'=>0, 'DURATION'=>5)
349
+ end
350
+
351
+ it "processes parameters" do
352
+ target_name, cmd_no_range_check_name, params = @api.cmd_raw_no_range_check("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
353
+ expect(target_name).to eql 'INST'
354
+ expect(cmd_no_range_check_name).to eql 'COLLECT'
355
+ expect(params).to include('TYPE'=>0, 'DURATION'=>5)
356
+ end
357
+
358
+ it "warns about required parameters" do
359
+ expect { @api.cmd_raw_no_range_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
360
+ end
361
+
362
+ it "does not warn about out of range parameters" do
363
+ expect { @api.cmd_raw_no_range_check("INST COLLECT with TYPE 0, DURATION 1000") }.to_not raise_error
364
+ end
365
+
366
+ it "warns about hazardous parameters" do
367
+ expect { @api.cmd_raw_no_range_check("INST COLLECT with TYPE 1") }.to raise_error(/Hazardous/)
368
+ end
369
+
370
+ it "warns about hazardous commands" do
371
+ expect { @api.cmd_raw_no_range_check("INST CLEAR") }.to raise_error(/Hazardous/)
372
+ end
373
+ end
374
+
375
+ describe "cmd_raw_no_hazardous_check" do
376
+ it "complains about unknown targets, commands, and parameters" do
377
+ test_cmd_unknown(:cmd_raw_no_hazardous_check)
378
+ end
379
+
380
+ it "processes a string" do
381
+ target_name, cmd_no_hazardous_check_name, params = @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 0, DURATION 5")
382
+ expect(target_name).to eql 'INST'
383
+ expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
384
+ expect(params).to include('TYPE'=>0, 'DURATION'=>5)
385
+ end
386
+
387
+ it "processes parameters" do
388
+ target_name, cmd_no_hazardous_check_name, params = @api.cmd_raw_no_hazardous_check("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
389
+ expect(target_name).to eql 'INST'
390
+ expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
391
+ expect(params).to include('TYPE'=>0, 'DURATION'=>5)
392
+ end
393
+
394
+ it "processes parameters that are strings" do
395
+ target_name, cmd_name, params = @api.cmd_raw_no_hazardous_check("INST ASCIICMD with STRING 'ARM LASER'")
396
+ expect(target_name).to eql 'INST'
397
+ expect(cmd_name).to eql 'ASCIICMD'
398
+ expect(params).to include('STRING'=>'ARM LASER')
399
+ end
400
+
401
+ it "warns about required parameters" do
402
+ expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
403
+ end
404
+
405
+ it "warns about out of range parameters" do
406
+ expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 0, DURATION 1000") }.to raise_error(/not in valid range/)
407
+ end
408
+
409
+ it "does not warn about hazardous parameters" do
410
+ expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 1") }.to_not raise_error
411
+ end
412
+
413
+ it "does not warn about hazardous commands" do
414
+ expect { @api.cmd_raw_no_hazardous_check("INST CLEAR") }.to_not raise_error
415
+ end
416
+ end
417
+
418
+ describe "cmd_raw_no_checks" do
419
+ it "complains about unknown targets, commands, and parameters" do
420
+ test_cmd_unknown(:cmd_raw_no_checks)
421
+ end
422
+
423
+ it "processes a string" do
424
+ target_name, cmd_no_checks_name, params = @api.cmd_raw_no_checks("INST COLLECT with TYPE 0, DURATION 5")
425
+ expect(target_name).to eql 'INST'
426
+ expect(cmd_no_checks_name).to eql 'COLLECT'
427
+ expect(params).to include('TYPE'=>0, 'DURATION'=>5)
428
+ end
429
+
430
+ it "processes parameters" do
431
+ target_name, cmd_no_checks_name, params = @api.cmd_raw_no_checks("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
432
+ expect(target_name).to eql 'INST'
433
+ expect(cmd_no_checks_name).to eql 'COLLECT'
434
+ expect(params).to include('TYPE'=>0, 'DURATION'=>5)
435
+ end
436
+
437
+ it "warns about required parameters" do
438
+ expect { @api.cmd_raw_no_checks("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
439
+ end
440
+
441
+ it "does not warn about out of range parameters" do
442
+ expect { @api.cmd_raw_no_checks("INST COLLECT with TYPE 0, DURATION 1000") }.to_not raise_error
443
+ end
444
+
445
+ it "does not warn about hazardous parameters" do
446
+ expect { @api.cmd_raw_no_checks("INST COLLECT with TYPE 1") }.to_not raise_error
447
+ end
448
+
449
+ it "does not warn about hazardous commands" do
450
+ expect { @api.cmd_raw_no_checks("INST CLEAR") }.to_not raise_error
451
+ end
452
+ end
453
+
454
+ describe "get_cmd_buffer" do
455
+ it "returns a command packet buffer" do
456
+ @api.cmd("INST ABORT")
457
+ expect(@api.get_cmd_buffer("INST", "ABORT")[6..7].unpack("n")[0]).to eq 2
458
+ @api.cmd("INST COLLECT with TYPE NORMAL, DURATION 5")
459
+ expect(@api.get_cmd_buffer("INST", "COLLECT")[6..7].unpack("n")[0]).to eq 1
460
+ end
461
+ end
462
+
463
+ describe "get_cmd_list" do
464
+ it "returns command names sorted" do
465
+ result = @api.get_cmd_list("INST")
466
+ expect(result.sort).to eql result
467
+ end
468
+
469
+ it "complains with a unknown target" do
470
+ expect { @api.get_cmd_list("BLAH") }.to raise_error(/does not exist/)
471
+ end
472
+
473
+ it "returns command names and descriptions for a given target" do
474
+ result = @api.get_cmd_list("INST")
475
+ expect(result[0][0]).to eql "ABORT"
476
+ # The second parameter is the description ... only test one
477
+ expect(result[0][1]).to eql "Aborts a collect on the instrument"
478
+ expect(result[1][0]).to eql "ARYCMD"
479
+ expect(result[2][0]).to eql "ASCIICMD"
480
+ expect(result[3][0]).to eql "CLEAR"
481
+ expect(result[4][0]).to eql "COLLECT"
482
+ expect(result[5][0]).to eql "COSMOS_ERROR_HANDLE"
483
+ expect(result[6][0]).to eql "COSMOS_ERROR_IGNORE"
484
+ expect(result[7][0]).to eql "COSMOS_HANDSHAKE_DS"
485
+ expect(result[8][0]).to eql "COSMOS_HANDSHAKE_EN"
486
+ expect(result[9][0]).to eql "FLTCMD"
487
+ expect(result[10][0]).to eql "LINC_COMMAND"
488
+ expect(result[11][0]).to eql "SETPARAMS"
489
+ expect(result[12][0]).to eql "SLRPNLDEPLOY"
490
+ expect(result[13][0]).to eql "SLRPNLRESET"
491
+ end
492
+ end
493
+
494
+ describe "get_cmd_param_list" do
495
+ it "returns parameters for the command" do
496
+ result = @api.get_cmd_param_list("INST","COLLECT")
497
+ # Each element in the results array contains:
498
+ # name, default, states, description, full units, units, required
499
+ expect(result).to include ['TYPE',0,{"NORMAL"=>0,"SPECIAL"=>1},'Collect type',nil,nil,true,"UINT"]
500
+ expect(result).to include ['TEMP',0.0,nil,'Collect temperature','Celsius','C',false,"FLOAT"]
501
+ end
502
+
503
+ it "returns array parameters for the command" do
504
+ result = @api.get_cmd_param_list("INST","ARYCMD")
505
+ # Each element in the results array contains:
506
+ # name, default, states, description, full units, units, required
507
+ expect(result).to include ['ARRAY',[],nil,'Array parameter',nil,nil,false,"FLOAT"]
508
+ # Since ARRAY2 has a format string the default is in quotes
509
+ expect(result).to include ['ARRAY2',"[]",nil,'Array parameter',nil,nil,false,"UINT"]
510
+ end
511
+ end
512
+
513
+ describe "get_cmd_hazardous" do
514
+ it "returns whether the command with parameters is hazardous" do
515
+ expect(@api.get_cmd_hazardous("INST","COLLECT",{"TYPE"=>"NORMAL"})).to be false
516
+ expect(@api.get_cmd_hazardous("INST","COLLECT",{"TYPE"=>"SPECIAL"})).to be true
517
+ end
518
+
519
+ it "returns whether the command is hazardous" do
520
+ expect(@api.get_cmd_hazardous("INST","CLEAR")).to be true
521
+ end
522
+ end
523
+
524
+ describe "get_cmd_value" do
525
+ it "returns command values" do
526
+ time = Time.now
527
+ packet = System.commands.packet("INST", "COLLECT")
528
+ packet.received_time = time
529
+ packet.restore_defaults
530
+ packet.received_count = 5
531
+ expect(@api.get_cmd_value("INST", "COLLECT", "TYPE")).to eql 'NORMAL'
532
+ expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_TIMEFORMATTED")).to eql time.formatted
533
+ expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_TIMESECONDS")).to eql time.to_f
534
+ expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_COUNT")).to eql 5
535
+ end
536
+
537
+ it "returns special values for time if time isn't set" do
538
+ packet = System.commands.packet("INST", "COLLECT")
539
+ packet.received_time = nil
540
+ packet.restore_defaults
541
+ packet.received_count = 5
542
+ expect(@api.get_cmd_value("INST", "COLLECT", "TYPE")).to eql 'NORMAL'
543
+ expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_TIMEFORMATTED")).to eql "No Packet Received Time"
544
+ expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_TIMESECONDS")).to eql 0.0
545
+ expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_COUNT")).to eql 5
546
+ end
547
+ end
548
+
549
+ describe "get_cmd_time" do
550
+ it "returns command times" do
551
+ time = Time.now
552
+ time2 = Time.now + 2
553
+ collect_cmd = System.commands.packet("INST", "COLLECT")
554
+ collect_cmd.received_time = time
555
+ abort_cmd = System.commands.packet("INST", "ABORT")
556
+ abort_cmd.received_time = time + 1
557
+ packet2 = System.commands.packet("SYSTEM", "STARTLOGGING")
558
+ packet2.received_time = time2
559
+ expect(@api.get_cmd_time()).to eql ['SYSTEM', 'STARTLOGGING', time2.tv_sec, time2.tv_usec]
560
+ expect(@api.get_cmd_time('INST')).to eql ['INST', 'ABORT', time.tv_sec + 1, time.tv_usec]
561
+ expect(@api.get_cmd_time('SYSTEM')).to eql ['SYSTEM', 'STARTLOGGING', time2.tv_sec, time2.tv_usec]
562
+ expect(@api.get_cmd_time('INST', 'COLLECT')).to eql ['INST', 'COLLECT', time.tv_sec, time.tv_usec]
563
+ expect(@api.get_cmd_time('SYSTEM', 'STARTLOGGING')).to eql ['SYSTEM', 'STARTLOGGING', time2.tv_sec, time2.tv_usec]
564
+ end
565
+
566
+ it "returns nil if no times are set" do
567
+ System.commands.packets("INST").each { |name, pkt| pkt.received_time = nil }
568
+ expect(@api.get_cmd_time("INST")).to eql [nil, nil, nil, nil]
569
+ expect(@api.get_cmd_time("INST", "ABORT")).to eql ["INST", "ABORT", nil, nil]
570
+ end
571
+ end
572
+
573
+ def test_tlm_unknown(method)
574
+ expect { @api.public_send(method,"BLAH HEALTH_STATUS COLLECTS") }.to raise_error(/does not exist/)
575
+ expect { @api.public_send(method,"INST UNKNOWN COLLECTS") }.to raise_error(/does not exist/)
576
+ expect { @api.public_send(method,"INST HEALTH_STATUS BLAH") }.to raise_error(/does not exist/)
577
+ expect { @api.public_send(method,"BLAH","HEALTH_STATUS","COLLECTS") }.to raise_error(/does not exist/)
578
+ expect { @api.public_send(method,"INST","UNKNOWN","COLLECTS") }.to raise_error(/does not exist/)
579
+ expect { @api.public_send(method,"INST","HEALTH_STATUS","BLAH") }.to raise_error(/does not exist/)
580
+ end
581
+
582
+ describe "tlm" do
583
+ it "complains about unknown targets, commands, and parameters" do
584
+ test_tlm_unknown(:tlm)
585
+ end
586
+
587
+ it "processes a string" do
588
+ expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to eql -100.0
589
+ end
590
+
591
+ it "processes parameters" do
592
+ expect(@api.tlm("INST","HEALTH_STATUS","TEMP1")).to eql -100.0
593
+ end
594
+
595
+ it "complains if too many parameters" do
596
+ expect { @api.tlm("INST","HEALTH_STATUS","TEMP1","TEMP2") }.to raise_error(/Invalid number of arguments/)
597
+ end
598
+ end
599
+
600
+ describe "tlm_raw" do
601
+ it "complains about unknown targets, commands, and parameters" do
602
+ test_tlm_unknown(:tlm_raw)
603
+ end
604
+
605
+ it "processes a string" do
606
+ expect(@api.tlm_raw("INST HEALTH_STATUS TEMP1")).to eql 0
607
+ end
608
+
609
+ it "returns the value using LATEST" do
610
+ expect(@api.tlm_raw("INST LATEST TEMP1")).to eql 0
611
+ end
612
+
613
+ it "processes parameters" do
614
+ expect(@api.tlm_raw("INST","HEALTH_STATUS","TEMP1")).to eql 0
615
+ end
616
+ end
617
+
618
+ describe "tlm_formatted" do
619
+ it "complains about unknown targets, commands, and parameters" do
620
+ test_tlm_unknown(:tlm_formatted)
621
+ end
622
+
623
+ it "processes a string" do
624
+ expect(@api.tlm_formatted("INST HEALTH_STATUS TEMP1")).to eql "-100.000"
625
+ end
626
+
627
+ it "returns the value using LATEST" do
628
+ expect(@api.tlm_formatted("INST LATEST TEMP1")).to eql "-100.000"
629
+ end
630
+
631
+ it "processes parameters" do
632
+ expect(@api.tlm_formatted("INST","HEALTH_STATUS","TEMP1")).to eql "-100.000"
633
+ end
634
+ end
635
+
636
+ describe "tlm_with_units" do
637
+ it "complains about unknown targets, commands, and parameters" do
638
+ test_tlm_unknown(:tlm_with_units)
639
+ end
640
+
641
+ it "processes a string" do
642
+ expect(@api.tlm_with_units("INST HEALTH_STATUS TEMP1")).to eql "-100.000 C"
643
+ end
644
+
645
+ it "returns the value using LATEST" do
646
+ expect(@api.tlm_with_units("INST LATEST TEMP1")).to eql "-100.000 C"
647
+ end
648
+
649
+ it "processes parameters" do
650
+ expect(@api.tlm_with_units("INST","HEALTH_STATUS","TEMP1")).to eql "-100.000 C"
651
+ end
652
+ end
653
+
654
+ describe "tlm_variable" do
655
+ it "complains about unknown targets, commands, and parameters" do
656
+ expect { @api.tlm_variable("BLAH HEALTH_STATUS COLLECTS",:RAW) }.to raise_error(/does not exist/)
657
+ expect { @api.tlm_variable("INST UNKNOWN COLLECTS",:RAW) }.to raise_error(/does not exist/)
658
+ expect { @api.tlm_variable("INST HEALTH_STATUS BLAH",:RAW) }.to raise_error(/does not exist/)
659
+ expect { @api.tlm_variable("BLAH","HEALTH_STATUS","COLLECTS",:RAW) }.to raise_error(/does not exist/)
660
+ expect { @api.tlm_variable("INST","UNKNOWN","COLLECTS",:RAW) }.to raise_error(/does not exist/)
661
+ expect { @api.tlm_variable("INST","HEALTH_STATUS","BLAH",:RAW) }.to raise_error(/does not exist/)
662
+ end
663
+
664
+ it "processes a string" do
665
+ expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:CONVERTED)).to eql -100.0
666
+ expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:RAW)).to eql 0
667
+ expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:FORMATTED)).to eql "-100.000"
668
+ expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:WITH_UNITS)).to eql "-100.000 C"
669
+ end
670
+
671
+ it "returns the value using LATEST" do
672
+ expect(@api.tlm_variable("INST LATEST TEMP1",:CONVERTED)).to eql -100.0
673
+ expect(@api.tlm_variable("INST LATEST TEMP1",:RAW)).to eql 0
674
+ expect(@api.tlm_variable("INST LATEST TEMP1",:FORMATTED)).to eql "-100.000"
675
+ expect(@api.tlm_variable("INST LATEST TEMP1",:WITH_UNITS)).to eql "-100.000 C"
676
+ end
677
+
678
+ it "processes parameters" do
679
+ expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:CONVERTED)).to eql -100.0
680
+ expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:RAW)).to eql 0
681
+ expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:FORMATTED)).to eql "-100.000"
682
+ expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:WITH_UNITS)).to eql "-100.000 C"
683
+ end
684
+
685
+ it "complains with too many parameters" do
686
+ expect { @api.tlm_variable("INST","HEALTH_STATUS","TEMP1","TEMP2",:CONVERTED) }.to raise_error(/Invalid number of arguments/)
687
+ end
688
+ end
689
+
690
+ describe "set_tlm" do
691
+ it "complains about unknown targets, packets, and parameters" do
692
+ expect { @api.set_tlm("BLAH HEALTH_STATUS COLLECTS = 1") }.to raise_error(/does not exist/)
693
+ expect { @api.set_tlm("INST UNKNOWN COLLECTS = 1") }.to raise_error(/does not exist/)
694
+ expect { @api.set_tlm("INST HEALTH_STATUS BLAH = 1") }.to raise_error(/does not exist/)
695
+ expect { @api.set_tlm("BLAH","HEALTH_STATUS","COLLECTS",1) }.to raise_error(/does not exist/)
696
+ expect { @api.set_tlm("INST","UNKNOWN","COLLECTS",1) }.to raise_error(/does not exist/)
697
+ expect { @api.set_tlm("INST","HEALTH_STATUS","BLAH",1) }.to raise_error(/does not exist/)
698
+ end
699
+
700
+ it "doesn't allow SYSTEM META PKTID or CONFIG" do
701
+ expect { @api.set_tlm("SYSTEM META PKTID = 1") }.to raise_error(/set_tlm not allowed/)
702
+ expect { @api.set_tlm("SYSTEM META CONFIG = 1") }.to raise_error(/set_tlm not allowed/)
703
+ end
704
+
705
+ it "sets SYSTEM META command as well as tlm" do
706
+ cmd = System.commands.packet("SYSTEM", "META")
707
+ tlm = System.telemetry.packet("SYSTEM", "META")
708
+ @api.set_tlm("SYSTEM META RUBY_VERSION = 1.8.0")
709
+ expect(cmd.read("RUBY_VERSION")).to eq("1.8.0")
710
+ expect(tlm.read("RUBY_VERSION")).to eq("1.8.0")
711
+ end
712
+
713
+ it "processes a string" do
714
+ @api.set_tlm("INST HEALTH_STATUS TEMP1 = 0.0")
715
+ expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to be_within(0.00001).of(-0.05759)
716
+ end
717
+
718
+ it "processes parameters" do
719
+ @api.set_tlm("INST","HEALTH_STATUS","TEMP1", 0.0)
720
+ expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to be_within(0.00001).of(-0.05759)
721
+ end
722
+
723
+ it "complains with too many parameters" do
724
+ expect { @api.set_tlm("INST","HEALTH_STATUS","TEMP1","TEMP2",0.0) }.to raise_error(/Invalid number of arguments/)
725
+ end
726
+ end
727
+
728
+ describe "set_tlm_raw" do
729
+ it "complains about unknown targets, packets, and parameters" do
730
+ expect { @api.set_tlm_raw("BLAH HEALTH_STATUS COLLECTS = 1") }.to raise_error(/does not exist/)
731
+ expect { @api.set_tlm_raw("INST UNKNOWN COLLECTS = 1") }.to raise_error(/does not exist/)
732
+ expect { @api.set_tlm_raw("INST HEALTH_STATUS BLAH = 1") }.to raise_error(/does not exist/)
733
+ expect { @api.set_tlm_raw("BLAH","HEALTH_STATUS","COLLECTS",1) }.to raise_error(/does not exist/)
734
+ expect { @api.set_tlm_raw("INST","UNKNOWN","COLLECTS",1) }.to raise_error(/does not exist/)
735
+ expect { @api.set_tlm_raw("INST","HEALTH_STATUS","BLAH",1) }.to raise_error(/does not exist/)
736
+ end
737
+
738
+ it "processes a string" do
739
+ @api.set_tlm_raw("INST HEALTH_STATUS TEMP1 = 0.0")
740
+ expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to eql -100.0
741
+ end
742
+
743
+ it "processes parameters" do
744
+ @api.set_tlm_raw("INST","HEALTH_STATUS","TEMP1", 0.0)
745
+ expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to eql -100.0
746
+ end
747
+ end
748
+
749
+ describe "inject_tlm" do
750
+ it "complains about non-existant targets" do
751
+ expect { @api.inject_tlm("BLAH","HEALTH_STATUS") }.to raise_error(RuntimeError, "Unknown target: BLAH")
752
+ end
753
+
754
+ it "complains about non-existant packets" do
755
+ expect { @api.inject_tlm("INST","BLAH") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
756
+ end
757
+
758
+ it "complains about non-existant items" do
759
+ expect { @api.inject_tlm("INST","HEALTH_STATUS",{BLAH: 0}) }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
760
+ end
761
+
762
+ it "logs errors writing routers" do
763
+ @api.inject_tlm("INST","HEALTH_STATUS",{TEMP1: 50, TEMP2: 50, TEMP3: 50, TEMP4: 50}, :CONVERTED)
764
+ allow_any_instance_of(Interface).to receive(:write_allowed?).and_raise("PROBLEM!")
765
+ expect(Logger).to receive(:error) do |msg|
766
+ expect(msg).to match(/Problem writing to router/)
767
+ end
768
+ @api.inject_tlm("INST","HEALTH_STATUS")
769
+ end
770
+
771
+ it "injects a packet into the system" do
772
+ @api.inject_tlm("INST","HEALTH_STATUS",{TEMP1: 10, TEMP2: 20}, :CONVERTED, true, true, false)
773
+ expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to be_within(0.1).of(10.0)
774
+ expect(@api.tlm("INST HEALTH_STATUS TEMP2")).to be_within(0.1).of(20.0)
775
+ @api.inject_tlm("INST","HEALTH_STATUS",{TEMP1: 0, TEMP2: 0}, :RAW, true, true, false)
776
+ expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to eql -100.0
777
+ expect(@api.tlm("INST HEALTH_STATUS TEMP2")).to eql -100.0
778
+ end
779
+
780
+ it "writes to routers and logs even if the packet has no interface" do
781
+ sys = System.targets["SYSTEM"]
782
+ interface = sys.interface
783
+ sys.interface = nil
784
+
785
+ allow_any_instance_of(Interface).to receive(:write_allowed?).and_raise("PROBLEM!")
786
+ expect(Logger).to receive(:error) do |msg|
787
+ expect(msg).to match(/Problem writing to router/)
788
+ end
789
+
790
+ @api.inject_tlm("SYSTEM","LIMITS_CHANGE")
791
+ sys.interface = interface
792
+ end
793
+ end
794
+
795
+ describe "override_tlm" do
796
+ it "complains about unknown targets, packets, and parameters" do
797
+ expect { @api.override_tlm("BLAH HEALTH_STATUS COLLECTS = 1") }.to raise_error(/does not exist/)
798
+ expect { @api.override_tlm("INST UNKNOWN COLLECTS = 1") }.to raise_error(/does not exist/)
799
+ expect { @api.override_tlm("INST HEALTH_STATUS BLAH = 1") }.to raise_error(/does not exist/)
800
+ expect { @api.override_tlm("BLAH","HEALTH_STATUS","COLLECTS",1) }.to raise_error(/does not exist/)
801
+ expect { @api.override_tlm("INST","UNKNOWN","COLLECTS",1) }.to raise_error(/does not exist/)
802
+ expect { @api.override_tlm("INST","HEALTH_STATUS","BLAH",1) }.to raise_error(/does not exist/)
803
+ end
804
+
805
+ it "complains if the target has no interface" do
806
+ expect { @api.override_tlm("SYSTEM META PKTID = 1") }.to raise_error(/Target 'SYSTEM' has no interface/)
807
+ end
808
+
809
+ it "complains if the target doesn't have OVERRIDE protocol" do
810
+ interface = OpenStruct.new
811
+ interface.name = "SYSTEM_INT"
812
+ System.targets["SYSTEM"].interface = interface # Set a dummy interface
813
+ expect { @api.override_tlm("SYSTEM META PKTID = 1") }.to raise_error(/Interface SYSTEM_INT does not have override/)
814
+ System.targets["SYSTEM"].interface = nil
815
+ end
816
+
817
+ it "complains with too many parameters" do
818
+ expect { @api.override_tlm("INST","HEALTH_STATUS","TEMP1","TEMP2",0.0) }.to raise_error(/Invalid number of arguments/)
819
+ end
820
+
821
+ it "calls _override_tlm in the interface" do
822
+ int = System.targets["INST"].interface
823
+ expect(int).to receive("_override_tlm").with("INST","HEALTH_STATUS","TEMP1",100.0)
824
+ @api.override_tlm("INST HEALTH_STATUS TEMP1 = 100.0")
825
+ expect(int).to receive("_override_tlm").with("INST","HEALTH_STATUS","TEMP2",50.0)
826
+ @api.override_tlm("INST","HEALTH_STATUS","TEMP2", 50.0)
827
+ end
828
+ end
829
+
830
+ describe "override_tlm_raw" do
831
+ it "complains about unknown targets, commands, and parameters" do
832
+ expect { @api.override_tlm_raw("BLAH HEALTH_STATUS COLLECTS = 1") }.to raise_error(/does not exist/)
833
+ expect { @api.override_tlm_raw("INST UNKNOWN COLLECTS = 1") }.to raise_error(/does not exist/)
834
+ expect { @api.override_tlm_raw("INST HEALTH_STATUS BLAH = 1") }.to raise_error(/does not exist/)
835
+ expect { @api.override_tlm_raw("BLAH","HEALTH_STATUS","COLLECTS",1) }.to raise_error(/does not exist/)
836
+ expect { @api.override_tlm_raw("INST","UNKNOWN","COLLECTS",1) }.to raise_error(/does not exist/)
837
+ expect { @api.override_tlm_raw("INST","HEALTH_STATUS","BLAH",1) }.to raise_error(/does not exist/)
838
+ end
839
+
840
+ it "complains if the target has no interface" do
841
+ expect { @api.override_tlm_raw("SYSTEM META PKTID = 1") }.to raise_error(/Target 'SYSTEM' has no interface/)
842
+ end
843
+
844
+ it "complains with too many parameters" do
845
+ expect { @api.override_tlm_raw("INST","HEALTH_STATUS","TEMP1","TEMP2",0.0) }.to raise_error(/Invalid number of arguments/)
846
+ end
847
+
848
+ it "calls _override_tlm_raw in the interface" do
849
+ int = System.targets["INST"].interface
850
+ expect(int).to receive("_override_tlm_raw").with("INST","HEALTH_STATUS","TEMP1",100.0)
851
+ @api.override_tlm_raw("INST HEALTH_STATUS TEMP1 = 100.0")
852
+ expect(int).to receive("_override_tlm_raw").with("INST","HEALTH_STATUS","TEMP2",50.0)
853
+ @api.override_tlm_raw("INST","HEALTH_STATUS","TEMP2", 50.0)
854
+ end
855
+ end
856
+
857
+ describe "normalize_tlm" do
858
+ it "complains about unknown targets, commands, and parameters" do
859
+ expect { @api.normalize_tlm("BLAH HEALTH_STATUS COLLECTS") }.to raise_error(/does not exist/)
860
+ expect { @api.normalize_tlm("INST UNKNOWN COLLECTS") }.to raise_error(/does not exist/)
861
+ expect { @api.normalize_tlm("INST HEALTH_STATUS BLAH") }.to raise_error(/does not exist/)
862
+ expect { @api.normalize_tlm("BLAH","HEALTH_STATUS","COLLECTS") }.to raise_error(/does not exist/)
863
+ expect { @api.normalize_tlm("INST","UNKNOWN","COLLECTS") }.to raise_error(/does not exist/)
864
+ expect { @api.normalize_tlm("INST","HEALTH_STATUS","BLAH") }.to raise_error(/does not exist/)
865
+ end
866
+
867
+ it "complains if the target has no interface" do
868
+ expect { @api.normalize_tlm("SYSTEM META PKTID") }.to raise_error(/Target 'SYSTEM' has no interface/)
869
+ end
870
+
871
+ it "complains with too many parameters" do
872
+ expect { @api.normalize_tlm("INST","HEALTH_STATUS","TEMP1",0.0) }.to raise_error(/Invalid number of arguments/)
873
+ end
874
+
875
+ it "calls _normalize_tlm in the interface" do
876
+ int = System.targets["INST"].interface
877
+ expect(int).to receive("_normalize_tlm").with("INST","HEALTH_STATUS","TEMP1")
878
+ @api.normalize_tlm("INST HEALTH_STATUS TEMP1")
879
+ expect(int).to receive("_normalize_tlm").with("INST","HEALTH_STATUS","TEMP2")
880
+ @api.normalize_tlm("INST","HEALTH_STATUS","TEMP2")
881
+ end
882
+ end
883
+
884
+ describe "get_tlm_buffer" do
885
+ it "returns a telemetry packet buffer" do
886
+ @api.inject_tlm("INST","HEALTH_STATUS",{TIMESEC: 0xDEADBEEF})
887
+ expect(@api.get_tlm_buffer("INST", "HEALTH_STATUS")[6..10].unpack("N")[0]).to eq 0xDEADBEEF
888
+ end
889
+ end
890
+
891
+ describe "get_tlm_packet" do
892
+ it "complains about non-existant targets" do
893
+ expect { @api.get_tlm_packet("BLAH","HEALTH_STATUS") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
894
+ end
895
+
896
+ it "complains about non-existant packets" do
897
+ expect { @api.get_tlm_packet("INST","BLAH") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
898
+ end
899
+
900
+ it "complains using LATEST" do
901
+ expect { @api.get_tlm_packet("INST","LATEST") }.to raise_error(RuntimeError, "Telemetry packet 'INST LATEST' does not exist")
902
+ end
903
+
904
+ it "complains about non-existant value_types" do
905
+ expect { @api.get_tlm_packet("INST","HEALTH_STATUS",:MINE) }.to raise_error(ArgumentError, "Unknown value type on read: MINE")
906
+ end
907
+
908
+ it "reads all telemetry items with their limits states" do
909
+ # Call inject_tlm to ensure the limits are set
910
+ @api.inject_tlm("INST","HEALTH_STATUS",{TEMP1: 0, TEMP2: 0, TEMP3: 0, TEMP4: 0}, :RAW)
911
+
912
+ vals = @api.get_tlm_packet("INST","HEALTH_STATUS")
913
+ expect(vals[0][0]).to eql "PACKET_TIMESECONDS"
914
+ expect(vals[0][1]).to be > 0
915
+ expect(vals[0][2]).to be_nil
916
+ expect(vals[1][0]).to eql "PACKET_TIMEFORMATTED"
917
+ expect(vals[1][1].split(' ')[0]).to eql Time.now.formatted.split(' ')[0]
918
+ expect(vals[1][2]).to be_nil
919
+ expect(vals[2][0]).to eql "RECEIVED_TIMESECONDS"
920
+ expect(vals[2][1]).to be > 0
921
+ expect(vals[2][2]).to be_nil
922
+ expect(vals[3][0]).to eql "RECEIVED_TIMEFORMATTED"
923
+ expect(vals[3][1].split(' ')[0]).to eql Time.now.formatted.split(' ')[0]
924
+ expect(vals[3][2]).to be_nil
925
+ expect(vals[4][0]).to eql "RECEIVED_COUNT"
926
+ expect(vals[4][1]).to be > 0
927
+ expect(vals[4][2]).to be_nil
928
+ # Spot check a few more
929
+ expect(vals[24][0]).to eql "TEMP1"
930
+ expect(vals[24][1]).to eql -100.0
931
+ expect(vals[24][2]).to eql :RED_LOW
932
+ expect(vals[25][0]).to eql "TEMP2"
933
+ expect(vals[25][1]).to eql -100.0
934
+ expect(vals[25][2]).to eql :RED_LOW
935
+ expect(vals[26][0]).to eql "TEMP3"
936
+ expect(vals[26][1]).to eql -100.0
937
+ expect(vals[26][2]).to eql :RED_LOW
938
+ expect(vals[27][0]).to eql "TEMP4"
939
+ expect(vals[27][1]).to eql -100.0
940
+ expect(vals[27][2]).to eql :RED_LOW
941
+ end
942
+ end
943
+
944
+ describe "get_tlm_values" do
945
+ it "handles an empty request" do
946
+ expect(@api.get_tlm_values([])).to eql [[], [], [], :DEFAULT]
947
+ end
948
+
949
+ it "complains about non-existant targets" do
950
+ expect { @api.get_tlm_values([["BLAH","HEALTH_STATUS","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
951
+ end
952
+
953
+ it "complains about non-existant packets" do
954
+ expect { @api.get_tlm_values([["INST","BLAH","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
955
+ end
956
+
957
+ it "complains about non-existant items" do
958
+ expect { @api.get_tlm_values([["INST","LATEST","BLAH"]]) }.to raise_error(RuntimeError, "Telemetry item 'INST LATEST BLAH' does not exist")
959
+ end
960
+
961
+ it "complains about non-existant value_types" do
962
+ expect { @api.get_tlm_values([["INST","HEALTH_STATUS","TEMP1"]],:MINE) }.to raise_error(ArgumentError, "Unknown value type on read: MINE")
963
+ end
964
+
965
+ it "complains about bad arguments" do
966
+ expect { @api.get_tlm_values("INST",:MINE) }.to raise_error(ArgumentError, /item_array must be nested array/)
967
+ expect { @api.get_tlm_values(["INST","HEALTH_STATUS","TEMP1"],:MINE) }.to raise_error(ArgumentError, /item_array must be nested array/)
968
+ 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/)
969
+ 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/)
970
+ end
971
+
972
+ it "reads all the specified items" do
973
+ items = []
974
+ items << %w(INST HEALTH_STATUS TEMP1)
975
+ items << %w(INST HEALTH_STATUS TEMP2)
976
+ items << %w(INST HEALTH_STATUS TEMP3)
977
+ items << %w(INST HEALTH_STATUS TEMP4)
978
+ vals = @api.get_tlm_values(items)
979
+ expect(vals[0][0]).to eql -100.0
980
+ expect(vals[0][1]).to eql -100.0
981
+ expect(vals[0][2]).to eql -100.0
982
+ expect(vals[0][3]).to eql -100.0
983
+ expect(vals[1][0]).to eql :RED_LOW
984
+ expect(vals[1][1]).to eql :RED_LOW
985
+ expect(vals[1][2]).to eql :RED_LOW
986
+ expect(vals[1][3]).to eql :RED_LOW
987
+ expect(vals[2][0]).to eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
988
+ expect(vals[2][1]).to eql [-60.0, -55.0, 30.0, 35.0]
989
+ expect(vals[2][2]).to eql [-25.0, -10.0, 50.0, 55.0]
990
+ expect(vals[2][3]).to eql [-80.0, -70.0, 60.0, 80.0]
991
+ expect(vals[3]).to eql :DEFAULT
992
+ end
993
+
994
+ it "reads all the specified items with one conversion" do
995
+ items = []
996
+ items << %w(INST HEALTH_STATUS TEMP1)
997
+ items << %w(INST HEALTH_STATUS TEMP2)
998
+ items << %w(INST HEALTH_STATUS TEMP3)
999
+ items << %w(INST HEALTH_STATUS TEMP4)
1000
+ vals = @api.get_tlm_values(items, :RAW)
1001
+ expect(vals[0][0]).to eql 0
1002
+ expect(vals[0][1]).to eql 0
1003
+ expect(vals[0][2]).to eql 0
1004
+ expect(vals[0][3]).to eql 0
1005
+ expect(vals[1][0]).to eql :RED_LOW
1006
+ expect(vals[1][1]).to eql :RED_LOW
1007
+ expect(vals[1][2]).to eql :RED_LOW
1008
+ expect(vals[1][3]).to eql :RED_LOW
1009
+ expect(vals[2][0]).to eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
1010
+ expect(vals[2][1]).to eql [-60.0, -55.0, 30.0, 35.0]
1011
+ expect(vals[2][2]).to eql [-25.0, -10.0, 50.0, 55.0]
1012
+ expect(vals[2][3]).to eql [-80.0, -70.0, 60.0, 80.0]
1013
+ expect(vals[3]).to eql :DEFAULT
1014
+ end
1015
+
1016
+ it "reads all the specified items with different conversions" do
1017
+ items = []
1018
+ items << %w(INST HEALTH_STATUS TEMP1)
1019
+ items << %w(INST HEALTH_STATUS TEMP2)
1020
+ items << %w(INST HEALTH_STATUS TEMP3)
1021
+ items << %w(INST HEALTH_STATUS TEMP4)
1022
+ vals = @api.get_tlm_values(items, [:RAW, :CONVERTED, :FORMATTED, :WITH_UNITS])
1023
+ expect(vals[0][0]).to eql 0
1024
+ expect(vals[0][1]).to eql -100.0
1025
+ expect(vals[0][2]).to eql "-100.000"
1026
+ expect(vals[0][3]).to eql "-100.000 C"
1027
+ expect(vals[1][0]).to eql :RED_LOW
1028
+ expect(vals[1][1]).to eql :RED_LOW
1029
+ expect(vals[1][2]).to eql :RED_LOW
1030
+ expect(vals[1][3]).to eql :RED_LOW
1031
+ expect(vals[2][0]).to eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
1032
+ expect(vals[2][1]).to eql [-60.0, -55.0, 30.0, 35.0]
1033
+ expect(vals[2][2]).to eql [-25.0, -10.0, 50.0, 55.0]
1034
+ expect(vals[2][3]).to eql [-80.0, -70.0, 60.0, 80.0]
1035
+ expect(vals[3]).to eql :DEFAULT
1036
+ end
1037
+
1038
+ it "complains if items length != conversions length" do
1039
+ items = []
1040
+ items << %w(INST HEALTH_STATUS TEMP1)
1041
+ items << %w(INST HEALTH_STATUS TEMP2)
1042
+ items << %w(INST HEALTH_STATUS TEMP3)
1043
+ items << %w(INST HEALTH_STATUS TEMP4)
1044
+ expect { @api.get_tlm_values(items, [:RAW, :CONVERTED]) }.to raise_error(ArgumentError, "Passed 4 items but only 2 value types")
1045
+ end
1046
+ end
1047
+
1048
+ describe "get_tlm_list" do
1049
+ it "complains about non-existant targets" do
1050
+ expect { @api.get_tlm_list("BLAH") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
1051
+ end
1052
+
1053
+ it "returns the sorted packet names for a target" do
1054
+ pkts = @api.get_tlm_list("INST")
1055
+ expect(pkts[0][0]).to eql "ADCS"
1056
+ expect(pkts[1][0]).to eql "ERROR"
1057
+ expect(pkts[2][0]).to eql "HANDSHAKE"
1058
+ expect(pkts[3][0]).to eql "HEALTH_STATUS"
1059
+ expect(pkts[4][0]).to eql "IMAGE"
1060
+ expect(pkts[5][0]).to eql "MECH"
1061
+ expect(pkts[6][0]).to eql "PARAMS"
1062
+ end
1063
+ end
1064
+
1065
+ describe "get_tlm_item_list" do
1066
+ it "complains about non-existant targets" do
1067
+ expect { @api.get_tlm_item_list("BLAH","HEALTH_STATUS") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
1068
+ end
1069
+
1070
+ it "complains about non-existant packets" do
1071
+ expect { @api.get_tlm_item_list("INST","BLAH") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
1072
+ end
1073
+
1074
+ it "returns all the items for a target/packet" do
1075
+ items = @api.get_tlm_item_list("INST","HEALTH_STATUS")
1076
+ expect(items[0][0]).to eql "PACKET_TIMESECONDS"
1077
+ expect(items[1][0]).to eql "PACKET_TIMEFORMATTED"
1078
+ expect(items[2][0]).to eql "RECEIVED_TIMESECONDS"
1079
+ expect(items[3][0]).to eql "RECEIVED_TIMEFORMATTED"
1080
+ expect(items[4][0]).to eql "RECEIVED_COUNT"
1081
+ # Spot check a few more
1082
+ expect(items[24][0]).to eql "TEMP1"
1083
+ expect(items[24][1]).to be_nil
1084
+ expect(items[24][2]).to eql "Temperature #1"
1085
+ expect(items[30][0]).to eql "COLLECT_TYPE"
1086
+ expect(items[30][1]).to include("NORMAL"=>0, "SPECIAL"=>1)
1087
+ expect(items[30][2]).to eql "Most recent collect type"
1088
+ end
1089
+ end
1090
+
1091
+ describe "get_tlm_details" do
1092
+ it "complains about non-existant targets" do
1093
+ expect { @api.get_tlm_details([["BLAH","HEALTH_STATUS","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
1094
+ end
1095
+
1096
+ it "complains about non-existant packets" do
1097
+ expect { @api.get_tlm_details([["INST","BLAH","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
1098
+ end
1099
+
1100
+ it "complains about non-existant items" do
1101
+ expect { @api.get_tlm_details([["INST","LATEST","BLAH"]]) }.to raise_error(RuntimeError, "Telemetry item 'INST LATEST BLAH' does not exist")
1102
+ end
1103
+
1104
+ it "complains about bad parameters" do
1105
+ expect { @api.get_tlm_details("INST") }.to raise_error(ArgumentError, /item_array must be nested array/)
1106
+ expect { @api.get_tlm_details(["INST","LATEST","BLAH"]) }.to raise_error(ArgumentError, /item_array must be nested array/)
1107
+ end
1108
+
1109
+ it "reads all the specified items" do
1110
+ items = []
1111
+ items << %w(INST HEALTH_STATUS TEMP1)
1112
+ items << %w(INST HEALTH_STATUS TEMP2)
1113
+ items << %w(INST HEALTH_STATUS TEMP3)
1114
+ items << %w(INST HEALTH_STATUS TEMP4)
1115
+ details = @api.get_tlm_details(items)
1116
+ expect(details.length).to eql 4
1117
+ expect(details[0]["name"]).to eql "TEMP1"
1118
+ expect(details[1]["name"]).to eql "TEMP2"
1119
+ expect(details[2]["name"]).to eql "TEMP3"
1120
+ expect(details[3]["name"]).to eql "TEMP4"
1121
+ end
1122
+ end
1123
+
1124
+ describe "get_out_of_limits" do
1125
+ it "returns all out of limits items" do
1126
+ @api.inject_tlm("INST","HEALTH_STATUS",{TEMP1: 0, TEMP2: 0, TEMP3: 0, TEMP4: 0}, :RAW)
1127
+ items = @api.get_out_of_limits
1128
+ (0..3).each do |i|
1129
+ expect(items[i][0]).to eql "INST"
1130
+ expect(items[i][1]).to eql "HEALTH_STATUS"
1131
+ expect(items[i][2]).to eql "TEMP#{i+1}"
1132
+ expect(items[i][3]).to eql :RED_LOW
1133
+ end
1134
+ end
1135
+ end
1136
+
1137
+ describe "get_overall_limits_state" do
1138
+ it "returns the overall system limits state" do
1139
+ @api.inject_tlm("INST","HEALTH_STATUS",{TEMP1: 0, TEMP2: 0, TEMP3: 0, TEMP4: 0}, :RAW)
1140
+ expect(@api.get_overall_limits_state).to eq :RED
1141
+ end
1142
+ end
1143
+
1144
+ describe "limits_enabled?" do
1145
+ it "complains about non-existant targets" do
1146
+ expect { @api.limits_enabled?("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
1147
+ end
1148
+
1149
+ it "complains about non-existant packets" do
1150
+ expect { @api.limits_enabled?("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
1151
+ end
1152
+
1153
+ it "complains about non-existant items" do
1154
+ expect { @api.limits_enabled?("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
1155
+ end
1156
+
1157
+ it "returns whether limits are enable for an item" do
1158
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
1159
+ end
1160
+ end
1161
+
1162
+ describe "enable_limits" do
1163
+ it "complains about non-existant targets" do
1164
+ expect { @api.enable_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
1165
+ end
1166
+
1167
+ it "complains about non-existant packets" do
1168
+ expect { @api.enable_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
1169
+ end
1170
+
1171
+ it "complains about non-existant items" do
1172
+ expect { @api.enable_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
1173
+ end
1174
+
1175
+ it "enables limits for an item" do
1176
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
1177
+ @api.disable_limits("INST","HEALTH_STATUS","TEMP1")
1178
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
1179
+ @api.enable_limits("INST","HEALTH_STATUS","TEMP1")
1180
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
1181
+ end
1182
+ end
1183
+
1184
+ describe "disable_limits" do
1185
+ it "complains about non-existant targets" do
1186
+ expect { @api.disable_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
1187
+ end
1188
+
1189
+ it "complains about non-existant packets" do
1190
+ expect { @api.disable_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
1191
+ end
1192
+
1193
+ it "complains about non-existant items" do
1194
+ expect { @api.disable_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
1195
+ end
1196
+
1197
+ it "disables limits for an item" do
1198
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
1199
+ @api.disable_limits("INST","HEALTH_STATUS","TEMP1")
1200
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
1201
+ @api.enable_limits("INST","HEALTH_STATUS","TEMP1")
1202
+ end
1203
+ end
1204
+
1205
+ describe "get_stale" do
1206
+ it "complains about non-existant targets" do
1207
+ expect { @api.get_stale(false,"BLAH") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
1208
+ end
1209
+
1210
+ it "gets stale packets for the specified target" do
1211
+ # By calling check_limits we make HEALTH_STATUS not stale
1212
+ System.telemetry.packet("INST","HEALTH_STATUS").check_limits
1213
+ stale = @api.get_stale(false,"INST").sort
1214
+ inst_pkts = []
1215
+ System.telemetry.packets("INST").each do |name, pkt|
1216
+ next if name == "HEALTH_STATUS" # not stale
1217
+ inst_pkts << ["INST", name]
1218
+ end
1219
+ expect(stale).to eq inst_pkts.sort
1220
+
1221
+ # Passing true only gets packets with limits items
1222
+ stale = @api.get_stale(true,"INST").sort
1223
+ expect(stale).to eq [["INST","PARAMS"]]
1224
+ end
1225
+ end
1226
+
1227
+ describe "get_limits" do
1228
+ it "complains about non-existant targets" do
1229
+ expect { @api.get_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
1230
+ end
1231
+
1232
+ it "complains about non-existant packets" do
1233
+ expect { @api.get_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
1234
+ end
1235
+
1236
+ it "complains about non-existant items" do
1237
+ expect { @api.get_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
1238
+ end
1239
+
1240
+ it "gets limits for an item" do
1241
+ expect(@api.get_limits("INST","HEALTH_STATUS","TEMP1")).to eql([:DEFAULT, 1, true, -80.0, -70.0, 60.0, 80.0, -20.0, 20.0])
1242
+ expect(@api.get_limits("INST","HEALTH_STATUS","TEMP1",:TVAC)).to eql([:TVAC, 1, true, -80.0, -30.0, 30.0, 80.0, nil, nil])
1243
+ end
1244
+ end
1245
+
1246
+ describe "set_limits" do
1247
+ it "complains about non-existant targets" do
1248
+ 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")
1249
+ end
1250
+
1251
+ it "complains about non-existant packets" do
1252
+ 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")
1253
+ end
1254
+
1255
+ it "complains about non-existant items" do
1256
+ 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")
1257
+ end
1258
+
1259
+ it "gets limits for an item" do
1260
+ expect(@api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0)).to eql([:CUSTOM, 1, true, 0.0, 10.0, 20.0, 30.0, nil, nil])
1261
+ expect(@api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0,12.0,15.0,:CUSTOM2,2,false)).to eql([:CUSTOM2, 2, false, 0.0, 10.0, 20.0, 30.0, 12.0, 15.0])
1262
+ expect(@api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0,12.0,15.0,:CUSTOM,1,true)).to eql([:CUSTOM, 1, true, 0.0, 10.0, 20.0, 30.0, 12.0, 15.0])
1263
+ end
1264
+ end
1265
+
1266
+ describe "get_limits_groups" do
1267
+ it "returns all the limits groups" do
1268
+ expect(@api.get_limits_groups).to eql %w(FIRST SECOND)
1269
+ end
1270
+ end
1271
+
1272
+ describe "enable_limits_group" do
1273
+ it "complains about undefined limits groups" do
1274
+ expect { @api.enable_limits_group("MINE") }.to raise_error(RuntimeError, "LIMITS_GROUP MINE undefined. Ensure your telemetry definition contains the line: LIMITS_GROUP MINE")
1275
+ end
1276
+
1277
+ it "enables limits for all items in the group" do
1278
+ @api.disable_limits("INST","HEALTH_STATUS","TEMP1")
1279
+ @api.disable_limits("INST","HEALTH_STATUS","TEMP3")
1280
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
1281
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be false
1282
+ @api.enable_limits_group("FIRST")
1283
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
1284
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be true
1285
+ end
1286
+ end
1287
+
1288
+ describe "disable_limits_group" do
1289
+ it "complains about undefined limits groups" do
1290
+ expect { @api.disable_limits_group("MINE") }.to raise_error(RuntimeError, "LIMITS_GROUP MINE undefined. Ensure your telemetry definition contains the line: LIMITS_GROUP MINE")
1291
+ end
1292
+
1293
+ it "disables limits for all items in the group" do
1294
+ @api.enable_limits("INST","HEALTH_STATUS","TEMP1")
1295
+ @api.enable_limits("INST","HEALTH_STATUS","TEMP3")
1296
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
1297
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be true
1298
+ @api.disable_limits_group("FIRST")
1299
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
1300
+ expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be false
1301
+ end
1302
+ end
1303
+
1304
+ describe "get_limits_sets, get_limits_set, set_limits_set" do
1305
+ it "gets and set the active limits set" do
1306
+ if @api.get_limits_sets.include?(:CUSTOM)
1307
+ expect(@api.get_limits_sets).to eql [:DEFAULT,:TVAC, :CUSTOM, :CUSTOM2]
1308
+ else
1309
+ expect(@api.get_limits_sets).to eql [:DEFAULT,:TVAC]
1310
+ end
1311
+ @api.set_limits_set("TVAC")
1312
+ expect(@api.get_limits_set).to eql "TVAC"
1313
+ @api.set_limits_set("DEFAULT")
1314
+ expect(@api.get_limits_set).to eql "DEFAULT"
1315
+ end
1316
+ end
1317
+
1318
+ describe "get_target_list" do
1319
+ it "returns all target names" do
1320
+ expect(@api.get_target_list).to eql %w(INST SYSTEM)
1321
+ end
1322
+ end
1323
+
1324
+ describe "subscribe_limits_events" do
1325
+ it "calls CmdTlmServer" do
1326
+ stub_const("Cosmos::CmdTlmServer::DEFAULT_LIMITS_EVENT_QUEUE_SIZE", 100)
1327
+ expect(CmdTlmServer).to receive(:subscribe_limits_events)
1328
+ @api.subscribe_limits_events
1329
+ end
1330
+ end
1331
+
1332
+ describe "unsubscribe_limits_events" do
1333
+ it "calls CmdTlmServer" do
1334
+ expect(CmdTlmServer).to receive(:unsubscribe_limits_events)
1335
+ @api.unsubscribe_limits_events(0)
1336
+ end
1337
+ end
1338
+
1339
+ describe "get_limits_event" do
1340
+ it "gets a limits event" do
1341
+ expect(CmdTlmServer).to receive(:get_limits_event)
1342
+ @api.get_limits_event(0)
1343
+ end
1344
+ end
1345
+
1346
+ describe "subscribe_packet_data" do
1347
+ it "calls CmdTlmServer" do
1348
+ stub_const("Cosmos::CmdTlmServer::DEFAULT_PACKET_DATA_QUEUE_SIZE", 100)
1349
+ expect(CmdTlmServer).to receive(:subscribe_packet_data)
1350
+ @api.subscribe_packet_data([["TGT","PKT1"],["TGT","PKT2"]])
1351
+ end
1352
+ end
1353
+
1354
+ describe "unsubscribe_packet_datas" do
1355
+ it "calls CmdTlmServer" do
1356
+ expect(CmdTlmServer).to receive(:unsubscribe_packet_data)
1357
+ @api.unsubscribe_packet_data(10)
1358
+ end
1359
+ end
1360
+
1361
+ describe "get_packet_data" do
1362
+ it "calls CmdTlmServer" do
1363
+ expect(CmdTlmServer).to receive(:get_packet_data)
1364
+ @api.get_packet_data(10)
1365
+ end
1366
+ end
1367
+
1368
+ describe "get_packet" do
1369
+ it "creates a packet out of the get_packet_data" do
1370
+ time = Time.now
1371
+ expect(CmdTlmServer).to receive(:get_packet_data).and_return(["\xAB","INST","HEALTH_STATUS",time.to_f,0,10])
1372
+ pkt = @api.get_packet(10)
1373
+ expect(pkt.buffer[0]).to eq "\xAB"
1374
+ expect(pkt.target_name).to eq "INST"
1375
+ expect(pkt.packet_name).to eq "HEALTH_STATUS"
1376
+ expect(pkt.received_time.formatted).to eq time.formatted
1377
+ expect(pkt.received_count).to eq 10
1378
+ end
1379
+ end
1380
+
1381
+ describe "subscribe_server_messages" do
1382
+ it "calls CmdTlmServer" do
1383
+ stub_const("Cosmos::CmdTlmServer::DEFAULT_SERVER_MESSAGES_QUEUE_SIZE", 100)
1384
+ expect(CmdTlmServer).to receive(:subscribe_server_messages)
1385
+ @api.subscribe_server_messages
1386
+ end
1387
+ end
1388
+
1389
+ describe "unsubscribe_server_messages" do
1390
+ it "calls CmdTlmServer" do
1391
+ expect(CmdTlmServer).to receive(:unsubscribe_server_messages)
1392
+ @api.unsubscribe_server_messages(0)
1393
+ end
1394
+ end
1395
+
1396
+ describe "get_server_message" do
1397
+ it "gets a server message" do
1398
+ expect(CmdTlmServer).to receive(:get_server_message)
1399
+ @api.get_server_message(0)
1400
+ end
1401
+ end
1402
+
1403
+ describe "get_interface_targets" do
1404
+ it "returns the targets associated with an interface" do
1405
+ expect(@api.get_interface_targets("INST_INT")).to eql ["INST"]
1406
+ end
1407
+ end
1408
+
1409
+ describe "get_background_tasks" do
1410
+ it "gets background task details" do
1411
+ sleep 0.1
1412
+ tasks = @api.get_background_tasks
1413
+ expect(tasks[0][0]).to eql("Example Background Task1")
1414
+ expect(tasks[0][1]).to eql("sleep")
1415
+ expect(tasks[0][2]).to eql("This is example one")
1416
+ expect(tasks[1][0]).to eql("Example Background Task2")
1417
+ expect(tasks[1][1]).to eql("sleep")
1418
+ expect(tasks[1][2]).to eql("This is example two")
1419
+ sleep 0.5
1420
+ tasks = @api.get_background_tasks
1421
+ expect(tasks[0][0]).to eql("Example Background Task1")
1422
+ expect(tasks[0][1]).to eql("complete") # Thread completes
1423
+ expect(tasks[0][2]).to eql("This is example one")
1424
+ expect(tasks[1][0]).to eql("Example Background Task2")
1425
+ expect(tasks[1][1]).to eql("sleep")
1426
+ expect(tasks[1][2]).to eql("This is example two")
1427
+ end
1428
+ end
1429
+
1430
+ describe "get_server_status" do
1431
+ it "gets server details" do
1432
+ status = @api.get_server_status
1433
+ expect(status[0]).to eql 'DEFAULT'
1434
+ expect(status[1]).to eql 7777
1435
+ expect(status[2]).to eql 0
1436
+ expect(status[3]).to eql 0
1437
+ expect(status[4]).to eql 0.0
1438
+ expect(status[5]).to be > 10
1439
+ end
1440
+ end
1441
+
1442
+ describe "get_target_info" do
1443
+ it "complains about non-existant targets" do
1444
+ expect { @api.get_target_info("BLAH") }.to raise_error(RuntimeError, "Unknown target: BLAH")
1445
+ end
1446
+
1447
+ it "gets target cmd tlm count" do
1448
+ cmd1, tlm1 = @api.get_target_info("INST")
1449
+ @api.cmd("INST ABORT")
1450
+ @api.inject_tlm("INST","HEALTH_STATUS")
1451
+ cmd2, tlm2 = @api.get_target_info("INST")
1452
+ expect(cmd2 - cmd1).to eq 1
1453
+ expect(tlm2 - tlm1).to eq 1
1454
+ end
1455
+ end
1456
+
1457
+ describe "get_all_target_info" do
1458
+ it "gets target name, interface name, cmd & tlm count" do
1459
+ @api.cmd("INST ABORT")
1460
+ @api.inject_tlm("INST","HEALTH_STATUS")
1461
+ info = @api.get_all_target_info().sort
1462
+ expect(info[0][0]).to eq "INST"
1463
+ expect(info[0][1]).to eq "INST_INT"
1464
+ expect(info[0][2]).to be > 0
1465
+ expect(info[0][3]).to be > 0
1466
+ expect(info[1][0]).to eq "SYSTEM"
1467
+ expect(info[1][1]).to eq "" # No interface
1468
+ end
1469
+ end
1470
+
1471
+ describe "get_interface_info" do
1472
+ it "complains about non-existant interfaces" do
1473
+ expect { @api.get_interface_info("BLAH") }.to raise_error(RuntimeError, "Unknown interface: BLAH")
1474
+ end
1475
+
1476
+ it "gets interface info" do
1477
+ info = @api.get_interface_info("INST_INT")
1478
+ expect(info[0]).to eq "ATTEMPTING"
1479
+ expect(info[1..-1]).to eq [0,0,0,0,0,0,0]
1480
+ end
1481
+ end
1482
+
1483
+ describe "get_all_interface_info" do
1484
+ it "gets interface name and all info" do
1485
+ info = @api.get_all_interface_info.sort
1486
+ expect(info[0][0]).to eq "INST_INT"
1487
+ end
1488
+ end
1489
+
1490
+ describe "get_router_names" do
1491
+ it "returns all router names" do
1492
+ expect(@api.get_router_names.sort).to eq %w(PREIDENTIFIED_CMD_ROUTER PREIDENTIFIED_ROUTER ROUTE)
1493
+ end
1494
+ end
1495
+
1496
+ describe "get_router_info" do
1497
+ it "complains about non-existant routers" do
1498
+ expect { @api.get_router_info("BLAH") }.to raise_error(RuntimeError, "Unknown router: BLAH")
1499
+ end
1500
+
1501
+ it "gets router info" do
1502
+ info = @api.get_router_info("ROUTE")
1503
+ expect(info[0]).to eq "ATTEMPTING"
1504
+ expect(info[1..-1]).to eq [0,0,0,0,0,0,0]
1505
+ end
1506
+ end
1507
+
1508
+ describe "get_all_router_info" do
1509
+ it "gets router name and all info" do
1510
+ info = @api.get_all_router_info.sort
1511
+ expect(info[0][0]).to eq "PREIDENTIFIED_CMD_ROUTER"
1512
+ expect(info[1][0]).to eq "PREIDENTIFIED_ROUTER"
1513
+ expect(info[2][0]).to eq "ROUTE"
1514
+ end
1515
+ end
1516
+
1517
+ describe "get_cmd_cnt" do
1518
+ it "complains about non-existant targets" do
1519
+ expect { @api.get_cmd_cnt("BLAH", "ABORT") }.to raise_error(RuntimeError, /does not exist/)
1520
+ end
1521
+
1522
+ it "complains about non-existant packets" do
1523
+ expect { @api.get_cmd_cnt("INST", "BLAH") }.to raise_error(RuntimeError, /does not exist/)
1524
+ end
1525
+
1526
+ it "gets the command packet count" do
1527
+ cnt1 = @api.get_cmd_cnt("INST", "ABORT")
1528
+ @api.cmd("INST", "ABORT")
1529
+ cnt2 = @api.get_cmd_cnt("INST", "ABORT")
1530
+ expect(cnt2 - cnt1).to eq 1
1531
+ end
1532
+ end
1533
+
1534
+ describe "get_tlm_cnt" do
1535
+ it "complains about non-existant targets" do
1536
+ expect { @api.get_tlm_cnt("BLAH", "ABORT") }.to raise_error(RuntimeError, /does not exist/)
1537
+ end
1538
+
1539
+ it "complains about non-existant packets" do
1540
+ expect { @api.get_tlm_cnt("INST", "BLAH") }.to raise_error(RuntimeError, /does not exist/)
1541
+ end
1542
+
1543
+ it "gets the telemetry packet count" do
1544
+ cnt1 = @api.get_tlm_cnt("INST", "ADCS")
1545
+ @api.inject_tlm("INST","ADCS")
1546
+ cnt2 = @api.get_tlm_cnt("INST", "ADCS")
1547
+ expect(cnt2 - cnt1).to eq 1
1548
+ end
1549
+ end
1550
+
1551
+ describe "get_all_cmd_info" do
1552
+ it "gets tgt, pkt, rx cnt for all commands" do
1553
+ total = 1 # Unknown is 1
1554
+ System.commands.target_names.each do |tgt|
1555
+ total += System.commands.packets(tgt).keys.length
1556
+ end
1557
+ info = @api.get_all_cmd_info.sort
1558
+ expect(info.length).to eq total
1559
+ expect(info[0][0]).to eq "INST"
1560
+ expect(info[0][1]).to eq "ABORT"
1561
+ expect(info[0][2]).to be >= 0
1562
+ expect(info[-1][0]).to eq "UNKNOWN"
1563
+ expect(info[-1][1]).to eq "UNKNOWN"
1564
+ expect(info[-1][2]).to eq 0
1565
+ end
1566
+ end
1567
+
1568
+ describe "get_all_tlm_info" do
1569
+ it "gets tgt, pkt, rx cnt for all telemetry" do
1570
+ total = 1 # Unknown is 1
1571
+ System.telemetry.target_names.each do |tgt|
1572
+ total += System.telemetry.packets(tgt).keys.length
1573
+ end
1574
+ info = @api.get_all_tlm_info.sort
1575
+ expect(info.length).to eq total
1576
+ expect(info[0][0]).to eq "INST"
1577
+ expect(info[0][1]).to eq "ADCS"
1578
+ expect(info[0][2]).to be >= 0
1579
+ expect(info[-1][0]).to eq "UNKNOWN"
1580
+ expect(info[-1][1]).to eq "UNKNOWN"
1581
+ expect(info[-1][2]).to eq 0
1582
+ end
1583
+ end
1584
+
1585
+ describe "get_packet_logger_info" do
1586
+ it "complains about non-existant loggers" do
1587
+ expect { @api.get_packet_logger_info("BLAH") }.to raise_error(RuntimeError, "Unknown packet log writer: BLAH")
1588
+ end
1589
+
1590
+ it "gets packet logger info" do
1591
+ info = @api.get_packet_logger_info("DEFAULT")
1592
+ expect(info[0]).to eq ["INST_INT"]
1593
+ end
1594
+ end
1595
+
1596
+ describe "get_all_packet_logger_info" do
1597
+ it "gets all packet loggers info" do
1598
+ info = @api.get_all_packet_logger_info.sort
1599
+ expect(info[0][0]).to eq "DEFAULT"
1600
+ expect(info[0][1]).to eq ["INST_INT"]
1601
+ end
1602
+ end
1603
+
1604
+ describe "background_task apis" do
1605
+ it "starts, gets into, and stops background tasks" do
1606
+ @api.start_background_task("Example Background Task2")
1607
+ sleep 0.1
1608
+ info = @api.get_background_tasks.sort
1609
+ expect(info[1][0]).to eq "Example Background Task2"
1610
+ expect(info[1][1]).to eq "sleep"
1611
+ expect(info[1][2]).to eq "This is example two"
1612
+ @api.stop_background_task("Example Background Task2")
1613
+ sleep 0.1
1614
+ info = @api.get_background_tasks.sort
1615
+ expect(info[1][0]).to eq "Example Background Task2"
1616
+ expect(info[1][1]).to eq "complete"
1617
+ expect(info[1][2]).to eq "This is example two"
1618
+ end
1619
+ end
1620
+
1621
+ # All these methods simply pass through directly to CmdTlmServer without
1622
+ # adding any functionality. Thus we just test that they are are received
1623
+ # by the CmdTlmServer.
1624
+ describe "CmdTlmServer pass-throughs" do
1625
+ it "calls through to the CmdTlmServer" do
1626
+ @api.get_interface_names
1627
+ @api.connect_interface("INST_INT")
1628
+ @api.disconnect_interface("INST_INT")
1629
+ @api.interface_state("INST_INT")
1630
+ @api.map_target_to_interface("INST", "INST_INT")
1631
+ @api.get_target_ignored_parameters("INST")
1632
+ @api.get_target_ignored_items("INST")
1633
+ @api.get_packet_loggers
1634
+ @api.connect_router("ROUTE")
1635
+ @api.disconnect_router("ROUTE")
1636
+ @api.router_state("ROUTE")
1637
+ @api.send_raw("INST_INT","\x00\x01")
1638
+ @api.get_cmd_log_filename('DEFAULT')
1639
+ @api.get_tlm_log_filename('DEFAULT')
1640
+ @api.start_logging('ALL')
1641
+ @api.stop_logging('ALL')
1642
+ @api.start_cmd_log('ALL')
1643
+ @api.start_tlm_log('ALL')
1644
+ @api.stop_cmd_log('ALL')
1645
+ @api.stop_tlm_log('ALL')
1646
+ @api.get_server_message_log_filename
1647
+ @api.start_new_server_message_log
1648
+ @api.start_raw_logging_interface
1649
+ @api.stop_raw_logging_interface
1650
+ @api.start_raw_logging_router
1651
+ @api.stop_raw_logging_router
1652
+ end
1653
+ end
1654
+
1655
+ end
1656
+ end