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,1694 @@
1
+ # encoding: ascii-8bit
2
+
3
+ # Copyright 2014 Ball Aerospace & Technologies Corp.
4
+ # All Rights Reserved.
5
+ #
6
+ # This program is free software; you can modify and/or redistribute it
7
+ # under the terms of the GNU General Public License
8
+ # as published by the Free Software Foundation; version 3 with
9
+ # attribution addendums as found in the LICENSE.txt
10
+
11
+ require 'cosmos/script/extract'
12
+ require 'cosmos/script/api_shared'
13
+ require 'cosmos/tools/tlm_viewer/tlm_viewer_config'
14
+
15
+ module Cosmos
16
+
17
+ module Api
18
+ include Extract
19
+ include ApiShared
20
+
21
+ # Sets api_requests to 0 and initializes the whitelist of allowable API
22
+ # method calls
23
+ def initialize
24
+ @api_whitelist = [
25
+ 'cmd',
26
+ 'cmd_no_range_check',
27
+ 'cmd_no_hazardous_check',
28
+ 'cmd_no_checks',
29
+ 'cmd_raw',
30
+ 'cmd_raw_no_range_check',
31
+ 'cmd_raw_no_hazardous_check',
32
+ 'cmd_raw_no_checks',
33
+ 'send_raw',
34
+ 'get_cmd_buffer',
35
+ 'get_cmd_list',
36
+ 'get_cmd_param_list',
37
+ 'get_cmd_hazardous',
38
+ 'get_cmd_value',
39
+ 'get_cmd_time',
40
+ 'tlm',
41
+ 'tlm_raw',
42
+ 'tlm_formatted',
43
+ 'tlm_with_units',
44
+ 'tlm_variable',
45
+ 'set_tlm',
46
+ 'set_tlm_raw',
47
+ 'inject_tlm',
48
+ 'override_tlm',
49
+ 'override_tlm_raw',
50
+ 'normalize_tlm',
51
+ 'get_tlm_buffer',
52
+ 'get_tlm_packet',
53
+ 'get_tlm_values',
54
+ 'get_tlm_list',
55
+ 'get_tlm_item_list',
56
+ 'get_tlm_details',
57
+ 'get_out_of_limits',
58
+ 'get_overall_limits_state',
59
+ 'limits_enabled?',
60
+ 'enable_limits',
61
+ 'disable_limits',
62
+ 'get_stale',
63
+ 'get_limits',
64
+ 'set_limits',
65
+ 'get_limits_groups',
66
+ 'enable_limits_group',
67
+ 'disable_limits_group',
68
+ 'get_limits_sets',
69
+ 'set_limits_set',
70
+ 'get_limits_set',
71
+ 'get_target_list',
72
+ 'subscribe_limits_events',
73
+ 'unsubscribe_limits_events',
74
+ 'get_limits_event',
75
+ 'subscribe_packet_data',
76
+ 'unsubscribe_packet_data',
77
+ 'get_packet_data',
78
+ 'subscribe_server_messages',
79
+ 'unsubscribe_server_messages',
80
+ 'get_server_message',
81
+ 'get_interface_targets',
82
+ 'get_interface_names',
83
+ 'connect_interface',
84
+ 'disconnect_interface',
85
+ 'interface_state',
86
+ 'map_target_to_interface',
87
+ 'get_router_names',
88
+ 'connect_router',
89
+ 'disconnect_router',
90
+ 'router_state',
91
+ 'get_all_target_info',
92
+ 'get_target_info',
93
+ 'get_target_ignored_parameters',
94
+ 'get_target_ignored_items',
95
+ 'get_interface_info',
96
+ 'get_all_interface_info',
97
+ 'get_router_info',
98
+ 'get_all_router_info',
99
+ 'get_all_cmd_info',
100
+ 'get_all_tlm_info',
101
+ 'get_cmd_cnt',
102
+ 'get_tlm_cnt',
103
+ 'get_packet_loggers',
104
+ 'get_packet_logger_info',
105
+ 'get_all_packet_logger_info',
106
+ 'get_background_tasks',
107
+ 'start_background_task',
108
+ 'stop_background_task',
109
+ 'get_server_status',
110
+ 'get_cmd_log_filename',
111
+ 'get_tlm_log_filename',
112
+ 'start_logging',
113
+ 'stop_logging',
114
+ 'start_cmd_log',
115
+ 'start_tlm_log',
116
+ 'stop_cmd_log',
117
+ 'stop_tlm_log',
118
+ 'start_raw_logging_interface',
119
+ 'stop_raw_logging_interface',
120
+ 'start_raw_logging_router',
121
+ 'stop_raw_logging_router',
122
+ 'get_server_message_log_filename',
123
+ 'start_new_server_message_log',
124
+ 'cmd_tlm_reload',
125
+ 'cmd_tlm_clear_counters',
126
+ 'get_output_logs_filenames',
127
+ 'replay_select_file',
128
+ 'replay_status',
129
+ 'replay_set_playback_delay',
130
+ 'replay_play',
131
+ 'replay_reverse_play',
132
+ 'replay_stop',
133
+ 'replay_step_forward',
134
+ 'replay_step_back',
135
+ 'replay_move_start',
136
+ 'replay_move_end',
137
+ 'replay_move_index',
138
+ 'get_screen_list',
139
+ 'get_screen_definition',
140
+ 'get_saved_config',
141
+ ]
142
+ @tlm_viewer_config_filename = nil
143
+ @tlm_viewer_config = nil
144
+ end
145
+
146
+ ############################################################################
147
+ # Methods Used by cosmos/script
148
+ ############################################################################
149
+
150
+ # Send a command packet to a target.
151
+ #
152
+ # Accepts two different calling styles:
153
+ # cmd("TGT CMD with PARAM1 val, PARAM2 val")
154
+ # cmd('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
155
+ #
156
+ # Favor the first syntax where possible as it is more succinct.
157
+ #
158
+ # @param args [String|Array<String>] See the description for calling style
159
+ # @return [Array<String, String, Hash>] target_name, command_name, parameters
160
+ def cmd(*args)
161
+ cmd_implementation(true, true, false, 'cmd', *args)
162
+ end
163
+
164
+ # Send a command packet to a target without performing any value range
165
+ # checks on the parameters. Useful for testing to allow sending command
166
+ # parameters outside the allowable range as defined in the configuration.
167
+ #
168
+ # Accepts two different calling styles:
169
+ # cmd_no_range_check("TGT CMD with PARAM1 val, PARAM2 val")
170
+ # cmd_no_range_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
171
+ #
172
+ # Favor the first syntax where possible as it is more succinct.
173
+ #
174
+ # @param (see #cmd)
175
+ # @return (see #cmd)
176
+ def cmd_no_range_check(*args)
177
+ cmd_implementation(false, true, false, 'cmd_no_range_check', *args)
178
+ end
179
+
180
+ # Send a command packet to a target without performing any hazardous checks
181
+ # both on the command itself and its parameters. Useful in scripts to
182
+ # prevent popping up warnings to the user.
183
+ #
184
+ # Accepts two different calling styles:
185
+ # cmd_no_hazardous_check("TGT CMD with PARAM1 val, PARAM2 val")
186
+ # cmd_no_hazardous_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
187
+ #
188
+ # Favor the first syntax where possible as it is more succinct.
189
+ #
190
+ # @param (see #cmd)
191
+ # @return (see #cmd)
192
+ def cmd_no_hazardous_check(*args)
193
+ cmd_implementation(true, false, false, 'cmd_no_hazardous_check', *args)
194
+ end
195
+
196
+ # Send a command packet to a target without performing any value range
197
+ # checks or hazardous checks both on the command itself and its parameters.
198
+ #
199
+ # Accepts two different calling styles:
200
+ # cmd_no_checks("TGT CMD with PARAM1 val, PARAM2 val")
201
+ # cmd_no_checks('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
202
+ #
203
+ # Favor the first syntax where possible as it is more succinct.
204
+ #
205
+ # @param (see #cmd)
206
+ # @return (see #cmd)
207
+ def cmd_no_checks(*args)
208
+ cmd_implementation(false, false, false, 'cmd_no_checks', *args)
209
+ end
210
+
211
+ # Send a command packet to a target without running conversions.
212
+ #
213
+ # Accepts two different calling styles:
214
+ # cmd_raw("TGT CMD with PARAM1 val, PARAM2 val")
215
+ # cmd_raw('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
216
+ #
217
+ # Favor the first syntax where possible as it is more succinct.
218
+ #
219
+ # @param args [String|Array<String>] See the description for calling style
220
+ # @return [Array<String, String, Hash>] target_name, command_name, parameters
221
+ def cmd_raw(*args)
222
+ cmd_implementation(true, true, true, 'cmd_raw', *args)
223
+ end
224
+
225
+ # Send a command packet to a target without performing any value range
226
+ # checks on the parameters or running conversions. Useful for testing to allow sending command
227
+ # parameters outside the allowable range as defined in the configuration.
228
+ #
229
+ # Accepts two different calling styles:
230
+ # cmd_raw_no_range_check("TGT CMD with PARAM1 val, PARAM2 val")
231
+ # cmd_raw_no_range_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
232
+ #
233
+ # Favor the first syntax where possible as it is more succinct.
234
+ #
235
+ # @param (see #cmd)
236
+ # @return (see #cmd)
237
+ def cmd_raw_no_range_check(*args)
238
+ cmd_implementation(false, true, true, 'cmd_raw_no_range_check', *args)
239
+ end
240
+
241
+ # Send a command packet to a target without running conversions or performing any hazardous checks
242
+ # both on the command itself and its parameters. Useful in scripts to
243
+ # prevent popping up warnings to the user.
244
+ #
245
+ # Accepts two different calling styles:
246
+ # cmd_raw_no_hazardous_check("TGT CMD with PARAM1 val, PARAM2 val")
247
+ # cmd_raw_no_hazardous_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
248
+ #
249
+ # Favor the first syntax where possible as it is more succinct.
250
+ #
251
+ # @param (see #cmd)
252
+ # @return (see #cmd)
253
+ def cmd_raw_no_hazardous_check(*args)
254
+ cmd_implementation(true, false, true, 'cmd_raw_no_hazardous_check', *args)
255
+ end
256
+
257
+ # Send a command packet to a target without running conversions or performing any value range
258
+ # checks or hazardous checks both on the command itself and its parameters.
259
+ #
260
+ # Accepts two different calling styles:
261
+ # cmd_raw_no_checks("TGT CMD with PARAM1 val, PARAM2 val")
262
+ # cmd_raw_no_checks('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
263
+ #
264
+ # Favor the first syntax where possible as it is more succinct.
265
+ #
266
+ # @param (see #cmd)
267
+ # @return (see #cmd)
268
+ def cmd_raw_no_checks(*args)
269
+ cmd_implementation(false, false, true, 'cmd_raw_no_checks', *args)
270
+ end
271
+
272
+ # Send a raw binary string to the specified interface.
273
+ #
274
+ # @param interface_name [String] The interface to send the raw binary
275
+ # @param data [String] The raw binary data
276
+ def send_raw(interface_name, data)
277
+ CmdTlmServer.commanding.send_raw(interface_name, data)
278
+ nil
279
+ end
280
+
281
+ # Returns the raw buffer from the most recent specified command packet.
282
+ #
283
+ # @param target_name [String] Target name of the command
284
+ # @param command_name [String] Packet name of the command
285
+ # @return [String] last command buffer packet
286
+ def get_cmd_buffer(target_name, command_name)
287
+ packet = System.commands.packet(target_name, command_name)
288
+ return packet.buffer
289
+ end
290
+
291
+ # Returns the list of all the command names and their descriptions from the
292
+ # given target.
293
+ #
294
+ # @param target_name [String] Name of the target
295
+ # @return [Array<Array<String, String>>] Array containing \[command name,
296
+ # command description] for all commands in the target
297
+ def get_cmd_list(target_name)
298
+ list = []
299
+ System.commands.packets(target_name).each do |name, command|
300
+ list << [name, command.description]
301
+ end
302
+ return list.sort
303
+ end
304
+
305
+ # Returns the list of all the parameters for the given command.
306
+ #
307
+ # @param target_name (see #get_cmd_list)
308
+ # @param command_name [String] Name of the command
309
+ # @return [Array<Array<String, Object, nil|Array, nil|String, nil|String,
310
+ # nil|String, Boolean>] Array containing \[name, default, states,
311
+ # description, units_full, units, required] for all parameters in the
312
+ # command
313
+ def get_cmd_param_list(target_name, command_name)
314
+ list = []
315
+ System.commands.params(target_name, command_name).each do |parameter|
316
+ if parameter.format_string
317
+ unless parameter.default.kind_of?(Array)
318
+ list << [parameter.name, sprintf(parameter.format_string, parameter.default), parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required, parameter.data_type.to_s]
319
+ else
320
+ list << [parameter.name, "[]", parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required, parameter.data_type.to_s]
321
+ end
322
+ else
323
+ list << [parameter.name, parameter.default, parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required, parameter.data_type.to_s]
324
+ end
325
+ end
326
+ return list
327
+ end
328
+
329
+ # Returns whether the specified command is hazardous
330
+ #
331
+ # @param target_name (see #get_cmd_param_list)
332
+ # @param command_name (see #get_cmd_param_list)
333
+ # @param params [Hash] Command parameter hash to test whether a particular
334
+ # parameter setting makes the command hazardous
335
+ # @return [Boolean] Whether the command is hazardous
336
+ def get_cmd_hazardous(target_name, command_name, params = {})
337
+ hazardous, _ = System.commands.cmd_hazardous?(target_name, command_name, params)
338
+ return hazardous
339
+ end
340
+
341
+ # Returns a value from the specified command
342
+ #
343
+ # @param target_name [String] Target name of the command
344
+ # @param command_name [String] Packet name of the command
345
+ # @param parameter_name [String] Parameter name in the command
346
+ # @param value_type [Symbol] How the values should be converted. Must be
347
+ # one of {Packet::VALUE_TYPES}
348
+ # @return [Varies] value
349
+ def get_cmd_value(target_name, command_name, parameter_name, value_type = :CONVERTED)
350
+ packet = System.commands.packet(target_name, command_name)
351
+ # Virtually support RECEIVED_TIMEFORMATTED, RECEIVED_TIMESECONDS, RECEIVED_COUNT
352
+ # Also PACKET_TIMEFORMATTED and PACKET_TIMESECONDS
353
+ case parameter_name.to_s.upcase
354
+ when 'PACKET_TIMEFORMATTED'
355
+ if packet.packet_time
356
+ return packet.packet_time.formatted
357
+ else
358
+ return 'No Packet Time'
359
+ end
360
+ when 'PACKET_TIMESECONDS'
361
+ if packet.packet_time
362
+ return packet.packet_time.to_f
363
+ else
364
+ return 0.0
365
+ end
366
+ when 'RECEIVED_TIMEFORMATTED'
367
+ if packet.received_time
368
+ return packet.received_time.formatted
369
+ else
370
+ return 'No Packet Received Time'
371
+ end
372
+ when 'RECEIVED_TIMESECONDS'
373
+ if packet.received_time
374
+ return packet.received_time.to_f
375
+ else
376
+ return 0.0
377
+ end
378
+ when 'RECEIVED_COUNT'
379
+ return packet.received_count
380
+ else
381
+ return packet.read(parameter_name, value_type.intern)
382
+ end
383
+ end
384
+
385
+ # Returns the time the most recent command was sent
386
+ #
387
+ # @param target_name [String] Target name of the command. If not given then
388
+ # the most recent time from all commands will be returned
389
+ # @param command_name [String] Packet name of the command. If not given then
390
+ # then most recent time from the given target will be returned.
391
+ # @return [Array<Target Name, Command Name, Time Seconds, Time Microseconds>]
392
+ def get_cmd_time(target_name = nil, command_name = nil)
393
+ last_command = nil
394
+ if target_name
395
+ if command_name
396
+ last_command = System.commands.packet(target_name, command_name)
397
+ else
398
+ System.commands.packets(target_name).each do |packet_name, command|
399
+ last_command = command if !last_command and command.received_time
400
+ if command.received_time and command.received_time > last_command.received_time
401
+ last_command = command
402
+ end
403
+ end
404
+ end
405
+ else
406
+ commands = System.commands.all
407
+ commands.each do |_, target_commands|
408
+ target_commands.each do |packet_name, command|
409
+ last_command = command if !last_command and command.received_time
410
+ if command.received_time and command.received_time > last_command.received_time
411
+ last_command = command
412
+ end
413
+ end
414
+ end
415
+ end
416
+
417
+ if last_command
418
+ if last_command.received_time
419
+ return [last_command.target_name, last_command.packet_name, last_command.received_time.tv_sec, last_command.received_time.tv_usec]
420
+ else
421
+ return [last_command.target_name, last_command.packet_name, nil, nil]
422
+ end
423
+ else
424
+ return [nil, nil, nil, nil]
425
+ end
426
+ end
427
+
428
+ # Request a converted telemetry item from a packet.
429
+ #
430
+ # Accepts two different calling styles:
431
+ # tlm("TGT PKT ITEM")
432
+ # tlm('TGT','PKT','ITEM')
433
+ #
434
+ # Favor the first syntax where possible as it is more succinct.
435
+ #
436
+ # @param args [String|Array<String>] See the description for calling style
437
+ # @return [Numeric] The converted telemetry value without formatting or
438
+ # units
439
+ def tlm(*args)
440
+ target_name, packet_name, item_name = tlm_process_args(args, 'tlm')
441
+ System.telemetry.value(target_name, packet_name, item_name, :CONVERTED)
442
+ end
443
+
444
+ # Request a raw telemetry item from a packet.
445
+ #
446
+ # Accepts two different calling styles:
447
+ # tlm_raw("TGT PKT ITEM")
448
+ # tlm_raw('TGT','PKT','ITEM')
449
+ #
450
+ # Favor the first syntax where possible as it is more succinct.
451
+ #
452
+ # @param args (see #tlm)
453
+ # @return [Numeric] The unconverted telemetry value without formatting or
454
+ # units
455
+ def tlm_raw(*args)
456
+ target_name, packet_name, item_name = tlm_process_args(args, 'tlm_raw')
457
+ System.telemetry.value(target_name, packet_name, item_name, :RAW)
458
+ end
459
+
460
+ # Request a formatted telemetry item from a packet.
461
+ #
462
+ # Accepts two different calling styles:
463
+ # tlm_formatted("TGT PKT ITEM")
464
+ # tlm_formatted('TGT','PKT','ITEM')
465
+ #
466
+ # Favor the first syntax where possible as it is more succinct.
467
+ #
468
+ # @param args (see #tlm)
469
+ # @return [String] The converted telemetry value with formatting but
470
+ # without units
471
+ def tlm_formatted(*args)
472
+ target_name, packet_name, item_name = tlm_process_args(args, 'tlm_formatted')
473
+ System.telemetry.value(target_name, packet_name, item_name, :FORMATTED)
474
+ end
475
+
476
+ # Request a telemetry item with units from a packet.
477
+ #
478
+ # Accepts two different calling styles:
479
+ # tlm_with_units("TGT PKT ITEM")
480
+ # tlm_with_units('TGT','PKT','ITEM')
481
+ #
482
+ # Favor the first syntax where possible as it is more succinct.
483
+ #
484
+ # @param args (see #tlm)
485
+ # @return [String] The converted, formatted telemetry value with units
486
+ def tlm_with_units(*args)
487
+ target_name, packet_name, item_name = tlm_process_args(args, 'tlm_with_units')
488
+ System.telemetry.value(target_name, packet_name, item_name, :WITH_UNITS)
489
+ end
490
+
491
+ # Request a telemetry item from a packet with the specified conversion
492
+ # applied. This method is equivalent to calling the other tlm_xxx methods.
493
+ #
494
+ # Accepts two different calling styles:
495
+ # tlm_variable("TGT PKT ITEM", :RAW)
496
+ # tlm_variable('TGT','PKT','ITEM', :RAW)
497
+ #
498
+ # Favor the first syntax where possible as it is more succinct.
499
+ #
500
+ # @param args The args must either be a string followed by a symbol or
501
+ # three strings followed by a symbol (see the calling style in the
502
+ # description). The symbol must be one of {Packet::VALUE_TYPES}.
503
+ # @return [Object] The converted telemetry value
504
+ def tlm_variable(*args)
505
+ target_name, packet_name, item_name, value_type = tlm_variable_process_args(args, 'tlm_variable')
506
+ System.telemetry.value(target_name, packet_name, item_name, value_type)
507
+ end
508
+
509
+ # Set a telemetry item in a packet to a particular value and then verifies
510
+ # the value is within the acceptable limits. This method uses any
511
+ # conversions that apply to the item when setting the value.
512
+ #
513
+ # Note: If this is done while COSMOS is currently receiving telemetry,
514
+ # this value could get overwritten at any time. Thus this capability is
515
+ # best used for testing or for telemetry items that are not received
516
+ # regularly through the target interface.
517
+ #
518
+ # Accepts two different calling styles:
519
+ # set_tlm("TGT PKT ITEM = 1.0")
520
+ # set_tlm('TGT','PKT','ITEM', 10.0)
521
+ #
522
+ # Favor the first syntax where possible as it is more succinct.
523
+ #
524
+ # @param args The args must either be a string followed by a value or
525
+ # three strings followed by a value (see the calling style in the
526
+ # description).
527
+ def set_tlm(*args)
528
+ target_name, packet_name, item_name, value = set_tlm_process_args(args, 'set_tlm')
529
+ if target_name == 'SYSTEM'.freeze and packet_name == 'META'.freeze
530
+ raise "set_tlm not allowed on #{target_name} #{packet_name} #{item_name}" if ['PKTID', 'CONFIG'].include?(item_name)
531
+ end
532
+ System.telemetry.set_value(target_name, packet_name, item_name, value, :CONVERTED)
533
+ if target_name == 'SYSTEM'.freeze and packet_name == 'META'.freeze
534
+ tlm_packet = System.telemetry.packet('SYSTEM', 'META')
535
+ cmd_packet = System.commands.packet('SYSTEM', 'META')
536
+ cmd_packet.buffer = tlm_packet.buffer
537
+ end
538
+ System.telemetry.packet(target_name, packet_name).check_limits(System.limits_set, true)
539
+ nil
540
+ end
541
+
542
+ # Set a telemetry item in a packet to a particular value and then verifies
543
+ # the value is within the acceptable limits. No conversions are applied.
544
+ #
545
+ # Note: If this is done while COSMOS is currently receiving telemetry,
546
+ # this value could get overwritten at any time. Thus this capability is
547
+ # best used for testing or for telemetry items that are not received
548
+ # regularly through the target interface.
549
+ #
550
+ # Accepts two different calling styles:
551
+ # set_tlm_raw("TGT PKT ITEM = 1.0")
552
+ # set_tlm_raw('TGT','PKT','ITEM', 10.0)
553
+ #
554
+ # Favor the first syntax where possible as it is more succinct.
555
+ #
556
+ # @param args The args must either be a string followed by a value or
557
+ # three strings followed by a value (see the calling style in the
558
+ # description).
559
+ def set_tlm_raw(*args)
560
+ target_name, packet_name, item_name, value = set_tlm_process_args(args, 'set_tlm_raw')
561
+ System.telemetry.set_value(target_name, packet_name, item_name, value, :RAW)
562
+ System.telemetry.packet(target_name, packet_name).check_limits(System.limits_set, true)
563
+ nil
564
+ end
565
+
566
+ # Injects a packet into the system as if it was received from an interface
567
+ #
568
+ # @param target_name[String] Target name of the packet
569
+ # @param packet_name[String] Packet name of the packet
570
+ # @param item_hash[Hash] Hash of item_name and value for each item you want to change from the current value table
571
+ # @param value_type[Symbol/String] Type of the values in the item_hash (RAW or CONVERTED)
572
+ # @param send_routers[Boolean] Whether or not to send to routers for the target's interface
573
+ # @param send_packet_log_writers[Boolean] Whether or not to send to the packet log writers for the target's interface
574
+ # @param create_new_logs[Boolean] Whether or not to create new log files before writing this packet to logs
575
+ def inject_tlm(target_name, packet_name, item_hash = nil, value_type = :CONVERTED, send_routers = true, send_packet_log_writers = true, create_new_logs = false)
576
+ received_time = Time.now
577
+ target = System.targets[target_name.upcase]
578
+ raise "Unknown target: #{target_name}" unless target
579
+
580
+ # Find and clone the telemetry packet
581
+ cvt_packet = System.telemetry.packet(target_name, packet_name)
582
+ packet = cvt_packet.clone
583
+ packet.received_time = received_time
584
+
585
+ if item_hash
586
+ # Update the packet with item_hash
587
+ value_type = value_type.to_s.intern
588
+ item_hash.each do |item_name, item_value|
589
+ packet.write(item_name.to_s, item_value, value_type)
590
+ end
591
+ end
592
+
593
+ # Update current value table
594
+ cvt_packet.synchronize do
595
+ cvt_packet.buffer = packet.buffer(false)
596
+ cvt_packet.received_time = received_time
597
+
598
+ # The interface does the following line, but I don't think inject_tlm should because it could confuse the interface
599
+ target.tlm_cnt += 1
600
+ packet.received_count += 1
601
+ cvt_packet.received_count += 1
602
+ CmdTlmServer.instance.identified_packet_callback(cvt_packet)
603
+ end
604
+
605
+ # Find the interface for this target
606
+ interface = target.interface
607
+
608
+ if interface
609
+ # Write to routers
610
+ if send_routers
611
+ interface.routers.each do |router|
612
+ begin
613
+ router.write(packet) if router.write_allowed? and router.connected?
614
+ rescue => err
615
+ Logger.error "Problem writing to router #{router.name} - #{err.class}:#{err.message}"
616
+ end
617
+ end
618
+ end
619
+
620
+ # Write to packet log writers
621
+ if create_new_logs or send_packet_log_writers
622
+ interface.packet_log_writer_pairs.each do |packet_log_writer_pair|
623
+ # Optionally create new log files
624
+ packet_log_writer_pair.tlm_log_writer.start if create_new_logs
625
+
626
+ # Optionally write to packet logs - Write errors are handled by the log writer
627
+ packet_log_writer_pair.tlm_log_writer.write(packet) if send_packet_log_writers
628
+ end
629
+ end
630
+ else
631
+ # Some packets don't have an interface - Can still write to standard routers and packet logs
632
+
633
+ # Write to routers
634
+ if send_routers
635
+ router = CmdTlmServer.instance.routers.all['PREIDENTIFIED_ROUTER']
636
+ if router
637
+ begin
638
+ router.write(packet) if router.write_allowed? and router.connected?
639
+ rescue => err
640
+ Logger.error "Problem writing to router #{router.name} - #{err.class}:#{err.message}"
641
+ end
642
+ end
643
+ end
644
+
645
+ if create_new_logs or send_packet_log_writers
646
+ # Handle packet logging
647
+ packet_log_writer_pair = CmdTlmServer.instance.packet_logging.all['DEFAULT']
648
+
649
+ if packet_log_writer_pair
650
+ # Optionally create new logs
651
+ packet_log_writer_pair.tlm_log_writer.start if create_new_logs
652
+
653
+ # Optionally write to packet logs - Write errors are handled by the log writer
654
+ packet_log_writer_pair.tlm_log_writer.write(packet) if send_packet_log_writers
655
+ end
656
+ end
657
+ end
658
+
659
+ nil
660
+ end
661
+
662
+ # Override a telemetry item in a packet to a particular value such that it
663
+ # is always returned even when new telemetry packets are received from the
664
+ # target.
665
+ #
666
+ # Accepts two different calling styles:
667
+ # override_tlm("TGT PKT ITEM = 1.0")
668
+ # override_tlm('TGT','PKT','ITEM', 10.0)
669
+ #
670
+ # Favor the first syntax where possible as it is more succinct.
671
+ #
672
+ # @param args The args must either be a string followed by a value or
673
+ # three strings followed by a value (see the calling style in the
674
+ # description).
675
+ def override_tlm(*args)
676
+ _override(__method__, set_tlm_process_args(args, __method__))
677
+ end
678
+
679
+ # Override a telemetry item in a packet to a particular value such that it
680
+ # is always returned even when new telemetry packets are received from the
681
+ # target. This only accepts RAW data items and any conversions are applied
682
+ # to the raw data when the packet is read.
683
+ #
684
+ # Accepts two different calling styles:
685
+ # override_tlm_raw("TGT PKT ITEM = 1.0")
686
+ # override_tlm_raw('TGT','PKT','ITEM', 10.0)
687
+ #
688
+ # Favor the first syntax where possible as it is more succinct.
689
+ #
690
+ # @param args The args must either be a string followed by a value or
691
+ # three strings followed by a value (see the calling style in the
692
+ # description).
693
+ def override_tlm_raw(*args)
694
+ _override(__method__, set_tlm_process_args(args, __method__))
695
+ end
696
+
697
+ # Normalize a telemetry item in a packet to its default behavior. Called
698
+ # after override_tlm and override_tlm_raw to restore standard processing.
699
+ #
700
+ # Accepts two different calling styles:
701
+ # normalize_tlm("TGT PKT ITEM")
702
+ # normalize_tlm('TGT','PKT','ITEM')
703
+ #
704
+ # Favor the first syntax where possible as it is more succinct.
705
+ #
706
+ # @param args The args must either be a string or three strings
707
+ # (see the calling style in the description).
708
+ def normalize_tlm(*args)
709
+ _override(__method__, tlm_process_args(args, __method__))
710
+ end
711
+
712
+ private
713
+
714
+ def _override(method, tgt_pkt_item)
715
+ target = System.targets[tgt_pkt_item[0]]
716
+ raise "Target '#{tgt_pkt_item[0]}' does not exist" unless target
717
+ interface = System.targets[tgt_pkt_item[0]].interface
718
+ raise "Target '#{tgt_pkt_item[0]}' has no interface" unless interface
719
+ found = false
720
+ if interface.read_protocols
721
+ interface.read_protocols.each do |protocol|
722
+ found = true if protocol.kind_of? OverrideProtocol
723
+ end
724
+ end
725
+ if found
726
+ # Test to see if this telemetry item exists
727
+ System.telemetry.value(tgt_pkt_item[0], tgt_pkt_item[1], tgt_pkt_item[2], :RAW)
728
+ interface.public_send("_#{method}", *tgt_pkt_item)
729
+ else
730
+ raise "Interface #{interface.name} does not have override ability. Is 'PROTOCOL READ_WRITE OverrideProtocol' under the interface definition?"
731
+ end
732
+ nil
733
+ end
734
+
735
+ public
736
+
737
+ # Returns the raw buffer for a telemetry packet.
738
+ #
739
+ # @param target_name [String] Name of the target
740
+ # @param packet_name [String] Name of the packet
741
+ # @return [String] last telemetry packet buffer
742
+ def get_tlm_buffer(target_name, packet_name)
743
+ packet = System.telemetry.packet(target_name, packet_name)
744
+ return packet.buffer
745
+ end
746
+
747
+ # Returns all the values (along with their limits state) for a packet.
748
+ #
749
+ # @param target_name [String] Name of the target
750
+ # @param packet_name [String] Name of the packet
751
+ # @param value_type [Symbol] How the values should be converted. Must be
752
+ # one of {Packet::VALUE_TYPES}
753
+ # @return (see Cosmos::Packet#read_all_with_limits_states)
754
+ def get_tlm_packet(target_name, packet_name, value_type = :CONVERTED)
755
+ packet = System.telemetry.packet(target_name, packet_name)
756
+ return packet.read_all_with_limits_states(value_type.to_s.intern)
757
+ end
758
+
759
+ # Returns all the item values (along with their limits state). The items
760
+ # can be from any target and packet and thus must be fully qualified with
761
+ # their target and packet names.
762
+ #
763
+ # @param (see Cosmos::Telemetry#values_and_limits_states)
764
+ # @return [Array< Array<Object>, Array<Symbol>, Array<Array<Numeric>>, String>]
765
+ # Array consisting of an Array of item values, an Array of item limits state
766
+ # given as symbols such as :RED, :YELLOW, :STALE, an Array of Arrays including
767
+ # the limits setting such as red low, yellow low, yellow high, red high and
768
+ # optionally green low and high, and the overall limits state which is
769
+ # one of {Cosmos::Limits::LIMITS_STATES}.
770
+ def get_tlm_values(item_array, value_types = :CONVERTED)
771
+ if !item_array.is_a?(Array) || (!item_array[0].is_a?(Array) and !item_array.empty?)
772
+ raise ArgumentError, "item_array must be nested array: [['TGT','PKT','ITEM'],...]"
773
+ end
774
+ return [[], [], [], System.limits_set] if item_array.empty?
775
+ if value_types.is_a?(Array)
776
+ elem = value_types[0]
777
+ else
778
+ elem = value_types
779
+ end
780
+ # Due to JSON round tripping from scripts, value_types can be a String
781
+ # so we must check for both Symbol and String
782
+ if !elem.is_a?(Symbol) && !elem.is_a?(String)
783
+ raise ArgumentError, "value_types must be a single symbol or array of symbols specifying the conversion method (:RAW, :CONVERTED, :FORMATTED, :WITH_UNITS)"
784
+ end
785
+ array = System.telemetry.values_and_limits_states(item_array, value_types)
786
+ array << System.limits_set
787
+ return array
788
+ end
789
+
790
+ # Returns the sorted packet names and their descriptions for a particular
791
+ # target.
792
+ #
793
+ # @param target_name (see #get_tlm_packet)
794
+ # @return [Array<String, String>] Array of \[packet name, packet
795
+ # description] sorted by packet name
796
+ def get_tlm_list(target_name)
797
+ list = []
798
+ packets = System.telemetry.packets(target_name)
799
+ packets.each do |packet_name, packet|
800
+ list << [packet_name, packet.description]
801
+ end
802
+ list.sort
803
+ end
804
+
805
+ # Returns the item names and their states and descriptions for a particular
806
+ # packet.
807
+ #
808
+ # @param target_name (see #get_tlm_packet)
809
+ # @param packet_name (see #get_tlm_packet)
810
+ # @return [Array<String, Hash, String>] Array of \[item name, item states,
811
+ # item description]
812
+ def get_tlm_item_list(target_name, packet_name)
813
+ list = []
814
+ System.telemetry.items(target_name, packet_name).each do |item|
815
+ list << [item.name, item.states, item.description]
816
+ end
817
+ list
818
+ end
819
+
820
+ # Returns an array of Hashes with all the attributes of the item.
821
+ #
822
+ # @param (see Cosmos::Telemetry#values_and_limits_states)
823
+ # @return [Array<Hash>] Array of hashes describing the items. All the
824
+ # attributes in {Cosmos::PacketItem} and {Cosmos::StructItem} are
825
+ # present in the Hash.
826
+ def get_tlm_details(item_array)
827
+ if !item_array.is_a?(Array) || !item_array[0].is_a?(Array)
828
+ raise ArgumentError, "item_array must be nested array: [['TGT','PKT','ITEM'],...]"
829
+ end
830
+ details = []
831
+ item_array.each do |target_name, packet_name, item_name|
832
+ _, item = System.telemetry.packet_and_item(target_name, packet_name, item_name)
833
+ details << item.to_hash
834
+ end
835
+ details
836
+ end
837
+
838
+ # (see Cosmos::Limits#out_of_limits)
839
+ def get_out_of_limits
840
+ return System.limits.out_of_limits
841
+ end
842
+
843
+ # (see Cosmos::Limits#overall_limits_state)
844
+ def get_overall_limits_state(ignored_items = nil)
845
+ return System.limits.overall_limits_state(ignored_items)
846
+ end
847
+
848
+ # Whether the limits are enabled for the given item
849
+ #
850
+ # Accepts two different calling styles:
851
+ # limits_enabled?("TGT PKT ITEM")
852
+ # limits_enabled?('TGT','PKT','ITEM')
853
+ #
854
+ # Favor the first syntax where possible as it is more succinct.
855
+ #
856
+ # @param args [String|Array<String>] See the description for calling style
857
+ # @return [Boolean] Whether limits are enable for the itme
858
+ def limits_enabled?(*args)
859
+ target_name, packet_name, item_name = tlm_process_args(args, 'limits_enabled?')
860
+ return System.limits.enabled?(target_name, packet_name, item_name)
861
+ end
862
+
863
+ # Enable limits checking for a telemetry item
864
+ #
865
+ # Accepts two different calling styles:
866
+ # enable_limits("TGT PKT ITEM")
867
+ # enable_limits('TGT','PKT','ITEM')
868
+ #
869
+ # Favor the first syntax where possible as it is more succinct.
870
+ #
871
+ # @param args [String|Array<String>] See the description for calling style
872
+ def enable_limits(*args)
873
+ target_name, packet_name, item_name = tlm_process_args(args, 'enable_limits')
874
+ System.limits.enable(target_name, packet_name, item_name)
875
+ nil
876
+ end
877
+
878
+ # Disable limit checking for a telemetry item
879
+ #
880
+ # Accepts two different calling styles:
881
+ # disable_limits("TGT PKT ITEM")
882
+ # disable_limits('TGT','PKT','ITEM')
883
+ #
884
+ # Favor the first syntax where possible as it is more succinct.
885
+ #
886
+ # @param args [String|Array<String>] See the description for calling style
887
+ def disable_limits(*args)
888
+ target_name, packet_name, item_name = tlm_process_args(args, 'disable_limits')
889
+ System.limits.disable(target_name, packet_name, item_name)
890
+ nil
891
+ end
892
+
893
+ # Get the list of stale packets for a specific target or pass nil to list
894
+ # all stale packets
895
+ #
896
+ # @param with_limits_only [Boolean] Return only the stale packets
897
+ # that have limits items and thus affect the overall limits
898
+ # state of the system
899
+ # @param target [String] The target to find stale packets for or nil to list
900
+ # all stale packets in the system
901
+ # @return [Array<Array<String, String>>] Array of arrays listing the target
902
+ # name and packet name
903
+ def get_stale(with_limits_only = false, target = nil)
904
+ stale = []
905
+ System.telemetry.stale(with_limits_only, target).each do |packet|
906
+ stale << [packet.target_name, packet.packet_name]
907
+ end
908
+ stale
909
+ end
910
+
911
+ # (see Cosmos::Limits#get)
912
+ def get_limits(target_name, packet_name, item_name, limits_set = nil)
913
+ System.limits.get(target_name, packet_name, item_name, limits_set)
914
+ end
915
+
916
+ # (see Cosmos::Limits#set)
917
+ def set_limits(target_name, packet_name, item_name, red_low, yellow_low, yellow_high, red_high, green_low = nil, green_high = nil, limits_set = :CUSTOM, persistence = nil, enabled = true)
918
+ result = System.limits.set(target_name, packet_name, item_name, red_low, yellow_low, yellow_high, red_high, green_low, green_high, limits_set, persistence, enabled)
919
+ if result[0] != nil
920
+ limits_settings = [target_name, packet_name, item_name].concat(result)
921
+ CmdTlmServer.instance.post_limits_event(:LIMITS_SETTINGS, limits_settings)
922
+ Logger.info("Limits Settings Changed: #{limits_settings}")
923
+ end
924
+ result
925
+ end
926
+
927
+ # (see Cosmos::Limits#groups)
928
+ def get_limits_groups
929
+ return System.limits.groups.keys
930
+ end
931
+
932
+ # (see Cosmos::Limits#enable_group)
933
+ def enable_limits_group(group_name)
934
+ Logger.info("Enabling Limits Group: #{group_name.upcase}")
935
+ System.limits.enable_group(group_name)
936
+ nil
937
+ end
938
+
939
+ # (see Cosmos::Limits#disable_group)
940
+ def disable_limits_group(group_name)
941
+ Logger.info("Disabling Limits Group: #{group_name.upcase}")
942
+ System.limits.disable_group(group_name)
943
+ nil
944
+ end
945
+
946
+ # Returns all defined limits sets
947
+ #
948
+ # @return [Array<Symbol>] All defined limits sets
949
+ def get_limits_sets
950
+ return System.limits.sets
951
+ end
952
+
953
+ # Changes the active limits set that applies to all telemetry
954
+ #
955
+ # @param limits_set [String] The name of the limits set
956
+ def set_limits_set(limits_set)
957
+ System.limits_set = limits_set if System.limits_set != limits_set.to_s.upcase.intern
958
+ end
959
+
960
+ # Returns the active limits set that applies to all telemetry
961
+ #
962
+ # @return [String] The current limits set
963
+ def get_limits_set
964
+ return System.limits_set.to_s
965
+ end
966
+
967
+ #
968
+ # General Purpose Methods
969
+ #
970
+
971
+ # Returns the list of all target names
972
+ #
973
+ # @return [Array<String>] All target names
974
+ def get_target_list
975
+ list = []
976
+ System.targets.each_key {|target_name| list << target_name }
977
+ return list.sort
978
+ end
979
+
980
+ # @see CmdTlmServer.subscribe_limits_events
981
+ def subscribe_limits_events(queue_size = CmdTlmServer::DEFAULT_LIMITS_EVENT_QUEUE_SIZE)
982
+ CmdTlmServer.subscribe_limits_events(queue_size)
983
+ end
984
+
985
+ # @see CmdTlmServer.unsubscribe_limits_events
986
+ def unsubscribe_limits_events(id)
987
+ CmdTlmServer.unsubscribe_limits_events(id)
988
+ end
989
+
990
+ # @see CmdTlmServer.get_limits_event
991
+ def get_limits_event(id, non_block = false)
992
+ CmdTlmServer.get_limits_event(id, non_block)
993
+ end
994
+
995
+ # @see CmdTlmServer.subscribe_packet_data
996
+ def subscribe_packet_data(packets,
997
+ queue_size = CmdTlmServer::DEFAULT_PACKET_DATA_QUEUE_SIZE)
998
+ CmdTlmServer.subscribe_packet_data(packets, queue_size)
999
+ end
1000
+
1001
+ # @see CmdTlmServer.unsubscribe_packet_data
1002
+ def unsubscribe_packet_data(id)
1003
+ CmdTlmServer.unsubscribe_packet_data(id)
1004
+ end
1005
+
1006
+ # @see CmdTlmServer.get_packet_data
1007
+ def get_packet_data(id, non_block = false)
1008
+ CmdTlmServer.get_packet_data(id, non_block)
1009
+ end
1010
+
1011
+ # @see CmdTlmServer.subscribe_server_messages
1012
+ def subscribe_server_messages(queue_size = CmdTlmServer::DEFAULT_SERVER_MESSAGES_QUEUE_SIZE)
1013
+ CmdTlmServer.subscribe_server_messages(queue_size)
1014
+ end
1015
+
1016
+ # @see CmdTlmServer.unsubscribe_server_messages
1017
+ def unsubscribe_server_messages(id)
1018
+ CmdTlmServer.unsubscribe_server_messages(id)
1019
+ end
1020
+
1021
+ # @see CmdTlmServer.get_server_message
1022
+ def get_server_message(id, non_block = false)
1023
+ CmdTlmServer.get_server_message(id, non_block)
1024
+ end
1025
+
1026
+ # Get a packet which was previously subscribed to by
1027
+ # subscribe_packet_data. This method can block waiting for new packets or
1028
+ # not based on the second parameter. It returns a single Cosmos::Packet instance
1029
+ # and will return nil when no more packets are buffered (assuming non_block
1030
+ # is false).
1031
+ # Usage:
1032
+ # get_packet(id, <true or false to block>)
1033
+ def get_packet(id, non_block = false)
1034
+ packet = nil
1035
+ # The get_packet_data in the CmdTlmServer returns the number of seconds
1036
+ # followed by microseconds after the packet_name. This is different that the Script API.
1037
+ buffer, target_name, packet_name, rx_sec, rx_usec, rx_count = get_packet_data(id, non_block)
1038
+ if buffer
1039
+ packet = System.telemetry.packet(target_name, packet_name).clone
1040
+ packet.buffer = buffer
1041
+ packet.received_time = Time.at(rx_sec, rx_usec).sys
1042
+ packet.received_count = rx_count
1043
+ end
1044
+ packet
1045
+ end
1046
+
1047
+ #
1048
+ # Methods for scripting
1049
+ #
1050
+
1051
+ # @return [Array<String>] All the targets mapped to the given interface
1052
+ def get_interface_targets(interface_name)
1053
+ CmdTlmServer.interfaces.targets(interface_name)
1054
+ end
1055
+
1056
+ # @return [Array<String>] All the interface names
1057
+ def get_interface_names
1058
+ CmdTlmServer.interfaces.names
1059
+ end
1060
+
1061
+ # Connects to an interface and starts its telemetry gathering thread. If
1062
+ # optional parameters are given, the interface is recreated with new
1063
+ # parameters.
1064
+ #
1065
+ # @param interface_name [String] The name of the interface
1066
+ # @param params [Array] Parameters to pass to the interface.
1067
+ def connect_interface(interface_name, *params)
1068
+ CmdTlmServer.interfaces.connect(interface_name, *params)
1069
+ nil
1070
+ end
1071
+
1072
+ # Disconnects from an interface and kills its telemetry gathering thread
1073
+ #
1074
+ # @param interface_name (see #connect_interface)
1075
+ def disconnect_interface(interface_name)
1076
+ CmdTlmServer.interfaces.disconnect(interface_name)
1077
+ nil
1078
+ end
1079
+
1080
+ # @param interface_name (see #connect_interface)
1081
+ # @return [String] The state of the interface which is one of 'CONNECTED',
1082
+ # 'ATTEMPTING' or 'DISCONNECTED'.
1083
+ def interface_state(interface_name)
1084
+ CmdTlmServer.interfaces.state(interface_name)
1085
+ end
1086
+
1087
+ # Associates a target and all its commands and telemetry with a particular
1088
+ # interface. All the commands will go out over and telemetry be received
1089
+ # from that interface.
1090
+ #
1091
+ # @param target_name [String] The name of the target
1092
+ # @param interface_name (see #connect_interface)
1093
+ def map_target_to_interface(target_name, interface_name)
1094
+ CmdTlmServer.interfaces.map_target(target_name, interface_name)
1095
+ nil
1096
+ end
1097
+
1098
+ # @return [Array<String>] All the router names
1099
+ def get_router_names
1100
+ CmdTlmServer.routers.names
1101
+ end
1102
+
1103
+ # Connects a router and starts its command gathering thread. If
1104
+ # optional parameters are given, the router is recreated with new
1105
+ # parameters.
1106
+ #
1107
+ # @param router_name [String] The name of the router
1108
+ # @param params [Array] Parameters to pass to the router.
1109
+ def connect_router(router_name, *params)
1110
+ CmdTlmServer.routers.connect(router_name, *params)
1111
+ nil
1112
+ end
1113
+
1114
+ # Disconnects a router and kills its command gathering thread
1115
+ #
1116
+ # @param router_name (see #connect_router)
1117
+ def disconnect_router(router_name)
1118
+ CmdTlmServer.routers.disconnect(router_name)
1119
+ nil
1120
+ end
1121
+
1122
+ # @param router_name (see #connect_router)
1123
+ # @return [String] The state of the router which is one of 'CONNECTED',
1124
+ # 'ATTEMPTING' or 'DISCONNECTED'.
1125
+ def router_state(router_name)
1126
+ CmdTlmServer.routers.state(router_name)
1127
+ end
1128
+
1129
+ # Get information about a target
1130
+ #
1131
+ # @param target_name [String] Target name
1132
+ # @return [Array<Numeric, Numeric>] Array of \[cmd_cnt, tlm_cnt]
1133
+ def get_target_info(target_name)
1134
+ target = System.targets[target_name.upcase]
1135
+ raise "Unknown target: #{target_name}" unless target
1136
+ return [target.cmd_cnt, target.tlm_cnt]
1137
+ end
1138
+
1139
+ # Get information about all targets
1140
+ #
1141
+ # @return [Array<Array<String, Numeric, Numeric>] Array of Arrays \[name, cmd_cnt, tlm_cnt]
1142
+ def get_all_target_info
1143
+ info = []
1144
+ System.targets.sort.each do |target_name, target|
1145
+ interface_name = target.interface ? target.interface.name : ''
1146
+ info << [target_name, interface_name, target.cmd_cnt, target.tlm_cnt]
1147
+ end
1148
+ info
1149
+ end
1150
+
1151
+ # Get the list of ignored command parameters for a target
1152
+ #
1153
+ # @param target_name [String] Target name
1154
+ # @return [Array<String>] All of the ignored command parameters for a target.
1155
+ def get_target_ignored_parameters(target_name)
1156
+ target = System.targets[target_name.upcase]
1157
+ raise "Unknown target: #{target_name}" unless target
1158
+ return target.ignored_parameters
1159
+ end
1160
+
1161
+ # Get the list of ignored telemetry items for a target
1162
+ #
1163
+ # @param target_name [String] Target name
1164
+ # @return [Array<String>] All of the ignored telemetry items for a target.
1165
+ def get_target_ignored_items(target_name)
1166
+ target = System.targets[target_name.upcase]
1167
+ raise "Unknown target: #{target_name}" unless target
1168
+ return target.ignored_items
1169
+ end
1170
+
1171
+ # Get information about an interface
1172
+ #
1173
+ # @param interface_name [String] Interface name
1174
+ # @return [Array<String, Numeric, Numeric, Numeric, Numeric, Numeric,
1175
+ # Numeric, Numeric>] Array containing \[state, num clients,
1176
+ # TX queue size, RX queue size, TX bytes, RX bytes, Command count,
1177
+ # Telemetry count] for the interface
1178
+ def get_interface_info(interface_name)
1179
+ CmdTlmServer.interfaces.get_info(interface_name)
1180
+ end
1181
+
1182
+ # Get information about all interfaces
1183
+ #
1184
+ # @return [Array<Array<String, Numeric, Numeric, Numeric, Numeric, Numeric,
1185
+ # Numeric, Numeric>>] Array of Arrays containing \[name, state, num clients,
1186
+ # TX queue size, RX queue size, TX bytes, RX bytes, Command count,
1187
+ # Telemetry count] for all interfaces
1188
+ def get_all_interface_info
1189
+ info = []
1190
+ CmdTlmServer.interfaces.names.sort.each do |interface_name|
1191
+ info << [interface_name].concat(CmdTlmServer.interfaces.get_info(interface_name))
1192
+ end
1193
+ info
1194
+ end
1195
+
1196
+ # Get information about a router
1197
+ #
1198
+ # @param router_name [String] Router name
1199
+ # @return [Array<String, Numeric, Numeric, Numeric, Numeric, Numeric,
1200
+ # Numeric, Numeric>] Array containing \[state, num clients,
1201
+ # TX queue size, RX queue size, TX bytes, RX bytes, Pkts received,
1202
+ # Pkts sent] for the router
1203
+ def get_router_info(router_name)
1204
+ CmdTlmServer.routers.get_info(router_name)
1205
+ end
1206
+
1207
+ # Get information about all routers
1208
+ #
1209
+ # @return [Array<Array<String, Numeric, Numeric, Numeric, Numeric, Numeric,
1210
+ # Numeric, Numeric>>] Array of Arrays containing \[name, state, num clients,
1211
+ # TX queue size, RX queue size, TX bytes, RX bytes, Command count,
1212
+ # Telemetry count] for all routers
1213
+ def get_all_router_info
1214
+ info = []
1215
+ CmdTlmServer.routers.names.sort.each do |router_name|
1216
+ info << [router_name].concat(CmdTlmServer.routers.get_info(router_name))
1217
+ end
1218
+ info
1219
+ end
1220
+
1221
+ # Get the transmit count for a command packet
1222
+ #
1223
+ # @param target_name [String] Target name of the command
1224
+ # @param command_name [String] Packet name of the command
1225
+ # @return [Numeric] Transmit count for the command
1226
+ def get_cmd_cnt(target_name, command_name)
1227
+ packet = System.commands.packet(target_name, command_name)
1228
+ packet.received_count
1229
+ end
1230
+
1231
+ # Get the receive count for a telemetry packet
1232
+ #
1233
+ # @param target_name [String] Name of the target
1234
+ # @param packet_name [String] Name of the packet
1235
+ # @return [Numeric] Receive count for the telemetry packet
1236
+ def get_tlm_cnt(target_name, packet_name)
1237
+ packet = System.telemetry.packet(target_name, packet_name)
1238
+ packet.received_count
1239
+ end
1240
+
1241
+ # Get information on all command packets
1242
+ #
1243
+ # @return [Numeric] Transmit count for the command
1244
+ def get_all_cmd_info
1245
+ info = []
1246
+ System.commands.all.sort.each do |target_name, packets|
1247
+ packets.sort.each do |packet_name, packet|
1248
+ info << [target_name, packet_name, packet.received_count]
1249
+ end
1250
+ end
1251
+ info
1252
+ end
1253
+
1254
+ # Get information on all telemetry packets
1255
+ #
1256
+ # @return [Numeric] Receive count for the telemetry packet
1257
+ def get_all_tlm_info
1258
+ info = []
1259
+ System.telemetry.all.sort.each do |target_name, packets|
1260
+ packets.sort.each do |packet_name, packet|
1261
+ info << [target_name, packet_name, packet.received_count]
1262
+ end
1263
+ end
1264
+ info
1265
+ end
1266
+
1267
+ # Get the list of packet loggers.
1268
+ #
1269
+ # @return [Array<String>] Array containing the names of all packet loggers
1270
+ def get_packet_loggers
1271
+ return CmdTlmServer.packet_logging.all.keys
1272
+ end
1273
+
1274
+ # Get information about a packet logger.
1275
+ #
1276
+ # @param packet_logger_name [String] Name of the packet logger
1277
+ # @return [Array<<Array<String>, Boolean, Numeric, String, Numeric,
1278
+ # Boolean, Numeric, String, Numeric>] Array containing \[interfaces,
1279
+ # cmd logging enabled, cmd queue size, cmd filename, cmd file size,
1280
+ # tlm logging enabled, tlm queue size, tlm filename, tlm file size]
1281
+ # for the packet logger
1282
+ def get_packet_logger_info(packet_logger_name = 'DEFAULT')
1283
+ logger_info = CmdTlmServer.packet_logging.get_info(packet_logger_name)
1284
+ packet_log_writer_pair = CmdTlmServer.packet_logging.all[packet_logger_name.upcase]
1285
+ interfaces = []
1286
+ CmdTlmServer.interfaces.all.each do |interface_name, interface|
1287
+ if interface.packet_log_writer_pairs.include?(packet_log_writer_pair)
1288
+ interfaces << interface.name
1289
+ end
1290
+ end
1291
+ return [interfaces] + logger_info
1292
+ end
1293
+
1294
+ def get_all_packet_logger_info
1295
+ info = []
1296
+ CmdTlmServer.packet_logging.all.keys.sort.each do |packet_logger_name|
1297
+ packet_log_writer_pair = CmdTlmServer.packet_logging.all[packet_logger_name.upcase]
1298
+ interfaces = []
1299
+ CmdTlmServer.interfaces.all.each do |interface_name, interface|
1300
+ if interface.packet_log_writer_pairs.include?(packet_log_writer_pair)
1301
+ interfaces << interface.name
1302
+ end
1303
+ end
1304
+ info << [packet_logger_name, interfaces].concat(CmdTlmServer.packet_logging.get_info(packet_logger_name))
1305
+ end
1306
+ info
1307
+ end
1308
+
1309
+ # Get background task information
1310
+ #
1311
+ # @return [Array<Array<String, String, String>>] Array of Arrays containing
1312
+ # the background task name, thread status, and task status
1313
+ def get_background_tasks
1314
+ result = []
1315
+ CmdTlmServer.background_tasks.all.each do |task|
1316
+ if task.thread
1317
+ thread_status = task.thread.status
1318
+ thread_status = 'complete' if thread_status == false
1319
+ else
1320
+ thread_status = 'no thread'
1321
+ end
1322
+ result << [task.name, thread_status, task.status]
1323
+ end
1324
+ result
1325
+ end
1326
+
1327
+ # Start a background task
1328
+ def start_background_task(task_name)
1329
+ CmdTlmServer.background_tasks.all.each_with_index do |task, index|
1330
+ if task.name == task_name
1331
+ CmdTlmServer.background_tasks.start(index)
1332
+ break
1333
+ end
1334
+ end
1335
+ end
1336
+
1337
+ # Stop a background task
1338
+ def stop_background_task(task_name)
1339
+ CmdTlmServer.background_tasks.all.each_with_index do |task, index|
1340
+ if task.name == task_name
1341
+ CmdTlmServer.background_tasks.stop(index)
1342
+ break
1343
+ end
1344
+ end
1345
+ end
1346
+
1347
+ # Get JSON DRB information
1348
+ #
1349
+ # @return [String, Integer, Integer, Integer, Float, Integer] Server
1350
+ # status including Limits Set, API Port, JSON DRB num clients,
1351
+ # JSON DRB request count, JSON DRB average request time, and the total
1352
+ # number of Ruby threads in the server/
1353
+ def get_server_status
1354
+ [ System.limits_set.to_s,
1355
+ CmdTlmServer.mode == :CMD_TLM_SERVER ? System.ports['CTS_API'] : System.ports['REPLAY_API'],
1356
+ CmdTlmServer.json_drb.num_clients,
1357
+ CmdTlmServer.json_drb.request_count,
1358
+ CmdTlmServer.json_drb.average_request_time,
1359
+ Thread.list.length
1360
+ ]
1361
+ end
1362
+
1363
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1364
+ # is writing the command packet log
1365
+ # @return [String] The command packet log filename
1366
+ def get_cmd_log_filename(packet_log_writer_name = 'DEFAULT')
1367
+ CmdTlmServer.packet_logging.cmd_filename(packet_log_writer_name)
1368
+ end
1369
+
1370
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1371
+ # is writing the telemetry packet log
1372
+ # @return [String] The telemetry packet log filename
1373
+ def get_tlm_log_filename(packet_log_writer_name = 'DEFAULT')
1374
+ CmdTlmServer.packet_logging.tlm_filename(packet_log_writer_name)
1375
+ end
1376
+
1377
+ # Start both command and telemetry packet logging.
1378
+ #
1379
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1380
+ # is writing both the command and telemetry logs
1381
+ # @param label [String] Optional label to apply to both the command and
1382
+ # telemetry packet log filename
1383
+ def start_logging(packet_log_writer_name = 'ALL', label = nil)
1384
+ CmdTlmServer.packet_logging.start(packet_log_writer_name, label)
1385
+ nil
1386
+ end
1387
+
1388
+ # Stop both command and telemetry packet logging.
1389
+ #
1390
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1391
+ # is writing both the command and telemetry logs
1392
+ def stop_logging(packet_log_writer_name = 'ALL')
1393
+ CmdTlmServer.packet_logging.stop(packet_log_writer_name)
1394
+ nil
1395
+ end
1396
+
1397
+ # Start command packet logging.
1398
+ #
1399
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1400
+ # is writing the command logs
1401
+ # @param label [String] Optional label to apply to the command packet log
1402
+ # filename
1403
+ def start_cmd_log(packet_log_writer_name = 'ALL', label = nil)
1404
+ CmdTlmServer.packet_logging.start_cmd(packet_log_writer_name, label)
1405
+ nil
1406
+ end
1407
+
1408
+ # Start telemetry packet logging.
1409
+ #
1410
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1411
+ # is writing the telemetry logs
1412
+ # @param label [String] Optional label to apply to the telemetry packet log
1413
+ # filename
1414
+ def start_tlm_log(packet_log_writer_name = 'ALL', label = nil)
1415
+ CmdTlmServer.packet_logging.start_tlm(packet_log_writer_name, label)
1416
+ nil
1417
+ end
1418
+
1419
+ # Stop command packet logging.
1420
+ #
1421
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1422
+ # is writing the command log
1423
+ def stop_cmd_log(packet_log_writer_name = 'ALL')
1424
+ CmdTlmServer.packet_logging.stop_cmd(packet_log_writer_name)
1425
+ nil
1426
+ end
1427
+
1428
+ # Stop telemetry packet logging.
1429
+ #
1430
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1431
+ # is writing the telemetry log
1432
+ def stop_tlm_log(packet_log_writer_name = 'ALL')
1433
+ CmdTlmServer.packet_logging.stop_tlm(packet_log_writer_name)
1434
+ nil
1435
+ end
1436
+
1437
+ # Starts raw logging for an interface
1438
+ #
1439
+ # @param interface_name [String] The name of the interface
1440
+ def start_raw_logging_interface(interface_name = 'ALL')
1441
+ CmdTlmServer.interfaces.start_raw_logging(interface_name)
1442
+ nil
1443
+ end
1444
+
1445
+ # Stop raw logging for an interface
1446
+ #
1447
+ # @param interface_name [String] The name of the interface
1448
+ def stop_raw_logging_interface(interface_name = 'ALL')
1449
+ CmdTlmServer.interfaces.stop_raw_logging(interface_name)
1450
+ nil
1451
+ end
1452
+
1453
+ # Starts raw logging for a router
1454
+ #
1455
+ # @param router_name [String] The name of the router
1456
+ def start_raw_logging_router(router_name = 'ALL')
1457
+ CmdTlmServer.routers.start_raw_logging(router_name)
1458
+ nil
1459
+ end
1460
+
1461
+ # Stops raw logging for a router
1462
+ #
1463
+ # @param router_name [String] The name of the router
1464
+ def stop_raw_logging_router(router_name = 'ALL')
1465
+ CmdTlmServer.routers.stop_raw_logging(router_name)
1466
+ nil
1467
+ end
1468
+
1469
+ # @return [String] The server message log filename
1470
+ def get_server_message_log_filename
1471
+ if CmdTlmServer.message_log
1472
+ CmdTlmServer.message_log.filename
1473
+ else
1474
+ nil
1475
+ end
1476
+ end
1477
+
1478
+ # Starts a new server message log
1479
+ def start_new_server_message_log
1480
+ CmdTlmServer.message_log.start if CmdTlmServer.message_log
1481
+ nil
1482
+ end
1483
+
1484
+ # Reload the default configuration
1485
+ def cmd_tlm_reload
1486
+ Thread.new do
1487
+ CmdTlmServer.instance.reload
1488
+ end
1489
+ nil
1490
+ end
1491
+
1492
+ # Clear server counters
1493
+ def cmd_tlm_clear_counters
1494
+ CmdTlmServer.clear_counters
1495
+ end
1496
+
1497
+ # Get the list of filenames in the outputs logs folder
1498
+ def get_output_logs_filenames(filter = '*tlm.bin')
1499
+ raise "Filter must not contain slashes" if filter.index('/') or filter.index('\\')
1500
+ Dir.glob(File.join(System.paths['LOGS'], '**', filter))
1501
+ end
1502
+
1503
+ # Select and start analyzing a file for replay
1504
+ #
1505
+ # filename [String] filename relative to output logs folder or absolute filename
1506
+ def replay_select_file(filename, packet_log_reader = "DEFAULT")
1507
+ CmdTlmServer.replay_backend.select_file(filename, packet_log_reader)
1508
+ end
1509
+
1510
+ # Get current replay status
1511
+ #
1512
+ # status, delay, filename, file_start, file_current, file_end, file_index, file_max_index
1513
+ def replay_status
1514
+ CmdTlmServer.replay_backend.status
1515
+ end
1516
+
1517
+ # Set the replay delay
1518
+ #
1519
+ # @param delay [Float] delay between packets in seconds 0.0 to 1.0, nil = REALTIME
1520
+ def replay_set_playback_delay(delay)
1521
+ CmdTlmServer.replay_backend.set_playback_delay(delay)
1522
+ end
1523
+
1524
+ # Replay start playing forward
1525
+ def replay_play
1526
+ CmdTlmServer.replay_backend.play
1527
+ end
1528
+
1529
+ # Replay start playing backward
1530
+ def replay_reverse_play
1531
+ CmdTlmServer.replay_backend.reverse_play
1532
+ end
1533
+
1534
+ # Replay stop
1535
+ def replay_stop
1536
+ CmdTlmServer.replay_backend.stop
1537
+ end
1538
+
1539
+ # Replay step forward one packet
1540
+ def replay_step_forward
1541
+ CmdTlmServer.replay_backend.step_forward
1542
+ end
1543
+
1544
+ # Replay step backward one packet
1545
+ def replay_step_back
1546
+ CmdTlmServer.replay_backend.step_back
1547
+ end
1548
+
1549
+ # Replay move to start of file
1550
+ def replay_move_start
1551
+ CmdTlmServer.replay_backend.move_start
1552
+ end
1553
+
1554
+ # Replay move to end of file
1555
+ def replay_move_end
1556
+ CmdTlmServer.replay_backend.move_end
1557
+ end
1558
+
1559
+ # Replay move to index
1560
+ #
1561
+ # @param index [Integer] packet index into file
1562
+ def replay_move_index(index)
1563
+ CmdTlmServer.replay_backend.move_index(index)
1564
+ end
1565
+
1566
+ # Get the organized list of available telemetry screens
1567
+ def get_screen_list(config_filename = nil, force_refresh = false)
1568
+ if force_refresh or !@tlm_viewer_config or @tlm_viewer_config_filename != config_filename
1569
+ @tlm_viewer_config = TlmViewerConfig.new(config_filename, true)
1570
+ @tlm_viewer_config_filename = config_filename
1571
+ end
1572
+ return @tlm_viewer_config.columns
1573
+ end
1574
+
1575
+ # Get a specific screen definition
1576
+ def get_screen_definition(screen_full_name, config_filename = nil, force_refresh = false)
1577
+ get_screen_list(config_filename, force_refresh) if force_refresh or !@tlm_viewer_config
1578
+ screen_info = @tlm_viewer_config.screen_infos[screen_full_name.upcase]
1579
+ raise "Unknown screen: #{screen_full_name.upcase}" unless screen_info
1580
+ screen_definition = File.read(screen_info.filename)
1581
+ return screen_definition
1582
+ end
1583
+
1584
+ # Get a saved configuration zip file
1585
+ def get_saved_config(configuration_name = nil)
1586
+ configuration_name ||= System.initial_config.name if System.initial_config
1587
+ if configuration_name
1588
+ configuration = System.instance.find_configuration(configuration_name)
1589
+ if configuration and File.exist?(configuration) and configuration[-4..-1] == ".zip"
1590
+ filename = File.basename(configuration)
1591
+ data = ''
1592
+ File.open(configuration, 'rb') {|file| data = file.read}
1593
+ return [filename, data]
1594
+ end
1595
+ end
1596
+ return nil
1597
+ end
1598
+
1599
+ private
1600
+
1601
+ def cmd_implementation(range_check, hazardous_check, raw, method_name, *args)
1602
+ case args.length
1603
+ when 1
1604
+ target_name, cmd_name, cmd_params = extract_fields_from_cmd_text(args[0])
1605
+ when 2, 3
1606
+ target_name = args[0]
1607
+ cmd_name = args[1]
1608
+ if args.length == 2
1609
+ cmd_params = {}
1610
+ else
1611
+ cmd_params = args[2]
1612
+ end
1613
+ else
1614
+ # Invalid number of arguments
1615
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{method_name}()"
1616
+ end
1617
+
1618
+ # Build the command
1619
+ begin
1620
+ command = System.commands.build_cmd(target_name, cmd_name, cmd_params, range_check, raw)
1621
+ rescue => e
1622
+ Logger.error e.message
1623
+ raise e
1624
+ end
1625
+
1626
+ if hazardous_check
1627
+ hazardous, hazardous_description = System.commands.cmd_pkt_hazardous?(command)
1628
+ if hazardous
1629
+ error = HazardousError.new
1630
+ error.target_name = target_name
1631
+ error.cmd_name = cmd_name
1632
+ error.cmd_params = cmd_params
1633
+ error.hazardous_description = hazardous_description
1634
+ raise error
1635
+ end
1636
+ end
1637
+
1638
+ # Send the command
1639
+ @disconnect = false unless defined? @disconnect
1640
+ CmdTlmServer.commanding.send_command_to_target(target_name, command) unless @disconnect
1641
+
1642
+ [target_name, cmd_name, cmd_params]
1643
+ end
1644
+
1645
+ def tlm_process_args(args, function_name)
1646
+ case args.length
1647
+ when 1
1648
+ target_name, packet_name, item_name = extract_fields_from_tlm_text(args[0])
1649
+ when 3
1650
+ target_name = args[0]
1651
+ packet_name = args[1]
1652
+ item_name = args[2]
1653
+ else
1654
+ # Invalid number of arguments
1655
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
1656
+ end
1657
+ return [target_name, packet_name, item_name]
1658
+ end
1659
+
1660
+ def tlm_variable_process_args(args, function_name)
1661
+ case args.length
1662
+ when 2
1663
+ target_name, packet_name, item_name = extract_fields_from_tlm_text(args[0])
1664
+ value_type = args[1].to_s.intern
1665
+ when 4
1666
+ target_name = args[0]
1667
+ packet_name = args[1]
1668
+ item_name = args[2]
1669
+ value_type = args[3].to_s.intern
1670
+ else
1671
+ # Invalid number of arguments
1672
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
1673
+ end
1674
+ return [target_name, packet_name, item_name, value_type]
1675
+ end
1676
+
1677
+ def set_tlm_process_args(args, function_name)
1678
+ case args.length
1679
+ when 1
1680
+ target_name, packet_name, item_name, value = extract_fields_from_set_tlm_text(args[0])
1681
+ when 4
1682
+ target_name = args[0]
1683
+ packet_name = args[1]
1684
+ item_name = args[2]
1685
+ value = args[3]
1686
+ else
1687
+ # Invalid number of arguments
1688
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
1689
+ end
1690
+ return [target_name, packet_name, item_name, value]
1691
+ end
1692
+
1693
+ end # module Api
1694
+ end # module Cosmos