cosmos 4.0.3-java

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 (1491) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitattributes +3 -0
  4. data/.gitignore +48 -0
  5. data/.rubocop.yml +23 -0
  6. data/.travis.yml +10 -0
  7. data/.yardopts +3 -0
  8. data/CONTRIBUTING.txt +50 -0
  9. data/Gemfile +10 -0
  10. data/Guardfile +27 -0
  11. data/LICENSE.txt +879 -0
  12. data/Manifest.txt +1549 -0
  13. data/README.md +111 -0
  14. data/Rakefile +264 -0
  15. data/autohotkey/config/data/attitude.bin +0 -0
  16. data/autohotkey/config/data/diamond.STL +58 -0
  17. data/autohotkey/config/data/groundoff.gif +0 -0
  18. data/autohotkey/config/data/groundon.gif +0 -0
  19. data/autohotkey/config/data/position.bin +0 -0
  20. data/autohotkey/config/data/satellite.gif +0 -0
  21. data/autohotkey/config/data/tada.wav +0 -0
  22. data/autohotkey/config/system/system.txt +29 -0
  23. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +126 -0
  24. data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +270 -0
  25. data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -0
  26. data/autohotkey/config/targets/INST/doc/README.txt +1 -0
  27. data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -0
  28. data/autohotkey/config/targets/INST/lib/sim_inst.rb +305 -0
  29. data/autohotkey/config/targets/INST/screens/_footer.txt +4 -0
  30. data/autohotkey/config/targets/INST/screens/adcs.txt +46 -0
  31. data/autohotkey/config/targets/INST/screens/array.txt +7 -0
  32. data/autohotkey/config/targets/INST/screens/block.txt +8 -0
  33. data/autohotkey/config/targets/INST/screens/commanding.txt +30 -0
  34. data/autohotkey/config/targets/INST/screens/extra.txt +19 -0
  35. data/autohotkey/config/targets/INST/screens/graphs.txt +14 -0
  36. data/autohotkey/config/targets/INST/screens/ground.txt +25 -0
  37. data/autohotkey/config/targets/INST/screens/health_status.txt +33 -0
  38. data/autohotkey/config/targets/INST/screens/hs.txt +46 -0
  39. data/autohotkey/config/targets/INST/screens/image.txt +21 -0
  40. data/autohotkey/config/targets/INST/screens/latest.txt +23 -0
  41. data/autohotkey/config/targets/INST/screens/mech.txt +25 -0
  42. data/autohotkey/config/targets/INST/screens/other.txt +25 -0
  43. data/autohotkey/config/targets/INST/screens/params.txt +25 -0
  44. data/autohotkey/config/targets/INST/screens/tabs.txt +68 -0
  45. data/autohotkey/config/targets/INST/sequences/run_sequence.txt +1 -0
  46. data/autohotkey/config/targets/INST/target.txt +27 -0
  47. data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -0
  48. data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -0
  49. data/autohotkey/config/targets/META/screens/data.txt +12 -0
  50. data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -0
  51. data/autohotkey/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
  52. data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
  53. data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  54. data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -0
  55. data/autohotkey/config/targets/SYSTEM/screens/limits_change.txt +14 -0
  56. data/autohotkey/config/targets/SYSTEM/screens/meta.txt +14 -0
  57. data/autohotkey/config/targets/SYSTEM/target.txt +12 -0
  58. data/autohotkey/config/tools/cmd_sender/cmd_sender.txt +1 -0
  59. data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -0
  60. data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -0
  61. data/autohotkey/config/tools/handbook_creator/default_toc.xsl +59 -0
  62. data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -0
  63. data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  64. data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  65. data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  66. data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -0
  67. data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  68. data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  69. data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  70. data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  71. data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  72. data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  73. data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  74. data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  75. data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -0
  76. data/autohotkey/config/tools/launcher/launcher.txt +38 -0
  77. data/autohotkey/config/tools/limits_monitor/README.txt +1 -0
  78. data/autohotkey/config/tools/opengl_builder/error.txt +1 -0
  79. data/autohotkey/config/tools/script_runner/script_runner.txt +3 -0
  80. data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +8 -0
  81. data/autohotkey/config/tools/table_manager/OldOneDimensionalTable_def.txt +19 -0
  82. data/autohotkey/config/tools/table_manager/OldTwoDimensionalTable_def.txt +248 -0
  83. data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +31 -0
  84. data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +28 -0
  85. data/autohotkey/config/tools/test_runner/test_runner.txt +8 -0
  86. data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -0
  87. data/autohotkey/config/tools/test_runner/test_runner3.txt +7 -0
  88. data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -0
  89. data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +14 -0
  90. data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -0
  91. data/autohotkey/config/tools/tlm_grapher/README.txt +1 -0
  92. data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -0
  93. data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -0
  94. data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -0
  95. data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -0
  96. data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -0
  97. data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -0
  98. data/autohotkey/lib/example_background_task.rb +42 -0
  99. data/autohotkey/lib/user_version.rb +3 -0
  100. data/autohotkey/procedures/clear_util.rb +7 -0
  101. data/autohotkey/procedures/collect.rb +18 -0
  102. data/autohotkey/procedures/collect_util.rb +14 -0
  103. data/autohotkey/procedures/example_test.rb +71 -0
  104. data/autohotkey/procedures/example_test2.rb +74 -0
  105. data/autohotkey/procedures/script_test.rb +21 -0
  106. data/autohotkey/procedures/syntax_error.rb +18 -0
  107. data/autohotkey/tools/CmdExtractorAHK +16 -0
  108. data/autohotkey/tools/CmdSender +14 -0
  109. data/autohotkey/tools/CmdSenderAHK +18 -0
  110. data/autohotkey/tools/CmdSequence +14 -0
  111. data/autohotkey/tools/CmdSequenceAHK +23 -0
  112. data/autohotkey/tools/CmdSequenceAHK2 +16 -0
  113. data/autohotkey/tools/CmdTlmServer +14 -0
  114. data/autohotkey/tools/CmdTlmServerAHK +28 -0
  115. data/autohotkey/tools/CmdTlmServerAHK2 +17 -0
  116. data/autohotkey/tools/ConfigEditor +16 -0
  117. data/autohotkey/tools/DataViewer +14 -0
  118. data/autohotkey/tools/DataViewerAHK +17 -0
  119. data/autohotkey/tools/HandbookCreatorAHK +20 -0
  120. data/autohotkey/tools/LauncherAHK +17 -0
  121. data/autohotkey/tools/LimitsMonitorAHK +20 -0
  122. data/autohotkey/tools/OpenGLBuilderAHK +24 -0
  123. data/autohotkey/tools/PacketViewer +14 -0
  124. data/autohotkey/tools/PacketViewerAHK +18 -0
  125. data/autohotkey/tools/PacketViewerAHK2 +17 -0
  126. data/autohotkey/tools/Replay +14 -0
  127. data/autohotkey/tools/ReplayAHK +17 -0
  128. data/autohotkey/tools/ScriptRunner +14 -0
  129. data/autohotkey/tools/ScriptRunnerAHK +20 -0
  130. data/autohotkey/tools/ScriptRunnerAHK2 +17 -0
  131. data/autohotkey/tools/TableManager +14 -0
  132. data/autohotkey/tools/TableManagerAHK +25 -0
  133. data/autohotkey/tools/TableManagerAHK2 +18 -0
  134. data/autohotkey/tools/TableManagerAHK3 +18 -0
  135. data/autohotkey/tools/TableManagerAHK4 +24 -0
  136. data/autohotkey/tools/TestRunner +15 -0
  137. data/autohotkey/tools/TestRunnerAHK +17 -0
  138. data/autohotkey/tools/TestRunnerAHK2 +17 -0
  139. data/autohotkey/tools/TestRunnerAHK3 +17 -0
  140. data/autohotkey/tools/TestRunnerAHK4 +17 -0
  141. data/autohotkey/tools/TestRunnerAHK5 +17 -0
  142. data/autohotkey/tools/TestRunnerAHK6 +17 -0
  143. data/autohotkey/tools/TlmExtractor +15 -0
  144. data/autohotkey/tools/TlmExtractorAHK +19 -0
  145. data/autohotkey/tools/TlmExtractorAHK2 +16 -0
  146. data/autohotkey/tools/TlmExtractorAHK3 +16 -0
  147. data/autohotkey/tools/TlmGrapher +14 -0
  148. data/autohotkey/tools/TlmGrapherAHK +19 -0
  149. data/autohotkey/tools/TlmGrapherAHK2 +23 -0
  150. data/autohotkey/tools/TlmGrapherAHK3 +17 -0
  151. data/autohotkey/tools/TlmGrapherAHK4 +17 -0
  152. data/autohotkey/tools/TlmViewer +14 -0
  153. data/autohotkey/tools/TlmViewerAHK +28 -0
  154. data/autohotkey/tools/TlmViewerAHK2 +22 -0
  155. data/autohotkey/tools/TlmViewerAHK3 +23 -0
  156. data/autohotkey/tools/TlmViewerAHK4 +22 -0
  157. data/autohotkey/tools/TlmViewerAHK5 +18 -0
  158. data/autohotkey/tools/autohotkey.rb +38 -0
  159. data/autohotkey/tools/cmd_extractor.ahk +50 -0
  160. data/autohotkey/tools/cmd_sender.ahk +180 -0
  161. data/autohotkey/tools/cmd_sequence.ahk +215 -0
  162. data/autohotkey/tools/cmd_sequence2.ahk +23 -0
  163. data/autohotkey/tools/cmd_tlm_server.ahk +90 -0
  164. data/autohotkey/tools/cmd_tlm_server2.ahk +45 -0
  165. data/autohotkey/tools/data_viewer.ahk +140 -0
  166. data/autohotkey/tools/handbook_creator.ahk +32 -0
  167. data/autohotkey/tools/launcher.ahk +41 -0
  168. data/autohotkey/tools/limits_monitor.ahk +121 -0
  169. data/autohotkey/tools/open_gl_builder.ahk +133 -0
  170. data/autohotkey/tools/packet_viewer.ahk +217 -0
  171. data/autohotkey/tools/packet_viewer2.ahk +9 -0
  172. data/autohotkey/tools/replay.ahk +103 -0
  173. data/autohotkey/tools/script_runner.ahk +588 -0
  174. data/autohotkey/tools/script_runner2.ahk +50 -0
  175. data/autohotkey/tools/table_manager.ahk +291 -0
  176. data/autohotkey/tools/test_runner.ahk +262 -0
  177. data/autohotkey/tools/test_runner2.ahk +49 -0
  178. data/autohotkey/tools/test_runner3.ahk +11 -0
  179. data/autohotkey/tools/test_runner5.ahk +8 -0
  180. data/autohotkey/tools/test_runner6.ahk +5 -0
  181. data/autohotkey/tools/tlm_extractor.ahk +357 -0
  182. data/autohotkey/tools/tlm_grapher.ahk +658 -0
  183. data/autohotkey/tools/tlm_grapher2.ahk +115 -0
  184. data/autohotkey/tools/tlm_grapher3.ahk +23 -0
  185. data/autohotkey/tools/tlm_viewer.ahk +140 -0
  186. data/autohotkey/tools/tlm_viewer2.ahk +49 -0
  187. data/autohotkey/tools/tlm_viewer4.ahk +4 -0
  188. data/autohotkey/tools/tlm_viewer5.ahk +19 -0
  189. data/autohotkey/tools/tool_launch.rb +38 -0
  190. data/bin/cosmos +266 -0
  191. data/bin/cstol_converter +1166 -0
  192. data/bin/exchndl20-x64.dll +0 -0
  193. data/bin/exchndl20.dll +0 -0
  194. data/bin/exchndl21-x64.dll +0 -0
  195. data/bin/exchndl21.dll +0 -0
  196. data/bin/exchndl22-x64.dll +0 -0
  197. data/bin/exchndl22.dll +0 -0
  198. data/bin/mgwhelp-x64.dll +0 -0
  199. data/bin/mgwhelp.dll +0 -0
  200. data/bin/rubysloc +85 -0
  201. data/bin/xtce_converter +83 -0
  202. data/cosmos.gemspec +109 -0
  203. data/data/COSMOS_64x64.bmp +0 -0
  204. data/data/COSMOS_64x64.ico +0 -0
  205. data/data/COSMOS_64x64.png +0 -0
  206. data/data/COSMOS_Architecture.png +0 -0
  207. data/data/CheckBoxCheck.gif +0 -0
  208. data/data/CheckBoxEmpty.gif +0 -0
  209. data/data/Earthmap1024x512.gif +0 -0
  210. data/data/about.txt +4 -0
  211. data/data/add_database.png +0 -0
  212. data/data/add_plot.png +0 -0
  213. data/data/add_tab.png +0 -0
  214. data/data/blank.png +0 -0
  215. data/data/bug.png +0 -0
  216. data/data/checkmark.png +0 -0
  217. data/data/close.png +0 -0
  218. data/data/cmd_extractor.png +0 -0
  219. data/data/cmd_sender.png +0 -0
  220. data/data/cmd_sequence.png +0 -0
  221. data/data/config/_array_params.yaml +23 -0
  222. data/data/config/_id_items.yaml +24 -0
  223. data/data/config/_id_params.yaml +58 -0
  224. data/data/config/_interfaces.yaml +206 -0
  225. data/data/config/_items.yaml +20 -0
  226. data/data/config/_params.yaml +58 -0
  227. data/data/config/cmd_tlm_server.yaml +124 -0
  228. data/data/config/command.yaml +40 -0
  229. data/data/config/command_modifiers.yaml +145 -0
  230. data/data/config/command_telemetry.yaml +3 -0
  231. data/data/config/data_viewer.yaml +43 -0
  232. data/data/config/handbook_creator.yaml +23 -0
  233. data/data/config/housekeeping_params.yaml +71 -0
  234. data/data/config/interface_modifiers.yaml +44 -0
  235. data/data/config/item_modifiers.yaml +211 -0
  236. data/data/config/launcher.yaml +117 -0
  237. data/data/config/limits_monitor.yaml +53 -0
  238. data/data/config/linegraph_params.yaml +30 -0
  239. data/data/config/linegraph_plot.yaml +106 -0
  240. data/data/config/page_modifiers.yaml +128 -0
  241. data/data/config/param_item_modifiers.yaml +46 -0
  242. data/data/config/parameter_modifiers.yaml +180 -0
  243. data/data/config/protocols.yaml +273 -0
  244. data/data/config/screen.yaml +151 -0
  245. data/data/config/script_runner.yaml +15 -0
  246. data/data/config/system.yaml +247 -0
  247. data/data/config/table_manager.yaml +76 -0
  248. data/data/config/table_parameter_modifiers.yaml +9 -0
  249. data/data/config/target.yaml +80 -0
  250. data/data/config/telemetry.yaml +80 -0
  251. data/data/config/telemetry_modifiers.yaml +142 -0
  252. data/data/config/test_runner.yaml +118 -0
  253. data/data/config/tlm_extractor.yaml +109 -0
  254. data/data/config/tlm_grapher.yaml +78 -0
  255. data/data/config/tlm_viewer.yaml +112 -0
  256. data/data/config/unknown.yaml +3 -0
  257. data/data/config/widgets.yaml +1339 -0
  258. data/data/config/xy_params.yaml +50 -0
  259. data/data/config/xy_plot.yaml +12 -0
  260. data/data/config_editor.png +0 -0
  261. data/data/copy.png +0 -0
  262. data/data/cosmos.xcf +0 -0
  263. data/data/cosmos_word.gif +0 -0
  264. data/data/crc.txt +351 -0
  265. data/data/critical.wav +0 -0
  266. data/data/cts.png +0 -0
  267. data/data/cut.png +0 -0
  268. data/data/data_viewer.png +0 -0
  269. data/data/delete.png +0 -0
  270. data/data/delete_database.png +0 -0
  271. data/data/delete_plot.png +0 -0
  272. data/data/delete_tab.png +0 -0
  273. data/data/diamond.STL +58 -0
  274. data/data/disconnected.png +0 -0
  275. data/data/edit.png +0 -0
  276. data/data/edit_database.png +0 -0
  277. data/data/edit_plot.png +0 -0
  278. data/data/edit_tab.png +0 -0
  279. data/data/end-26.png +0 -0
  280. data/data/fast_forward-26.png +0 -0
  281. data/data/file.png +0 -0
  282. data/data/handbook_creator.png +0 -0
  283. data/data/help.png +0 -0
  284. data/data/html-32.png +0 -0
  285. data/data/information.wav +0 -0
  286. data/data/input.wav +0 -0
  287. data/data/launcher.png +0 -0
  288. data/data/legal.gif +0 -0
  289. data/data/legal.txt +8 -0
  290. data/data/limits_monitor.png +0 -0
  291. data/data/message.wav +0 -0
  292. data/data/moonmap1k.gif +0 -0
  293. data/data/multi.png +0 -0
  294. data/data/open.png +0 -0
  295. data/data/open_in_browser-32.png +0 -0
  296. data/data/opengl_builder.png +0 -0
  297. data/data/packet_viewer.png +0 -0
  298. data/data/pdf-32.png +0 -0
  299. data/data/play-26.png +0 -0
  300. data/data/question.wav +0 -0
  301. data/data/redo.png +0 -0
  302. data/data/replay.png +0 -0
  303. data/data/reverse-play-26.png +0 -0
  304. data/data/rewind-26.png +0 -0
  305. data/data/running.png +0 -0
  306. data/data/save.png +0 -0
  307. data/data/save_as.png +0 -0
  308. data/data/screenshot.png +0 -0
  309. data/data/script_runner.png +0 -0
  310. data/data/search-14.png +0 -0
  311. data/data/search.png +0 -0
  312. data/data/send_file.png +0 -0
  313. data/data/skip_to_start-26.png +0 -0
  314. data/data/spinner.gif +0 -0
  315. data/data/splash.gif +0 -0
  316. data/data/stop-26.png +0 -0
  317. data/data/table_manager.png +0 -0
  318. data/data/test_runner.png +0 -0
  319. data/data/tlm_extractor.png +0 -0
  320. data/data/tlm_grapher.png +0 -0
  321. data/data/tlm_viewer.png +0 -0
  322. data/data/undo.png +0 -0
  323. data/data/warning.wav +0 -0
  324. data/demo/Gemfile +10 -0
  325. data/demo/Launcher +16 -0
  326. data/demo/Launcher.bat +9 -0
  327. data/demo/Rakefile +77 -0
  328. data/demo/config/data/attitude.bin +0 -0
  329. data/demo/config/data/crc.txt +258 -0
  330. data/demo/config/data/diamond.STL +58 -0
  331. data/demo/config/data/groundoff.gif +0 -0
  332. data/demo/config/data/groundon.gif +0 -0
  333. data/demo/config/data/hselectoff.gif +0 -0
  334. data/demo/config/data/hselecton.gif +0 -0
  335. data/demo/config/data/hswitchoff.gif +0 -0
  336. data/demo/config/data/hswitchon.gif +0 -0
  337. data/demo/config/data/meta_init.txt +1 -0
  338. data/demo/config/data/position.bin +0 -0
  339. data/demo/config/data/poweroff.gif +0 -0
  340. data/demo/config/data/poweron.gif +0 -0
  341. data/demo/config/data/satellite.gif +0 -0
  342. data/demo/config/data/tada.wav +0 -0
  343. data/demo/config/data/vswitchoff.gif +0 -0
  344. data/demo/config/data/vswitchon.gif +0 -0
  345. data/demo/config/system/system.txt +47 -0
  346. data/demo/config/system/system2.txt +43 -0
  347. data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -0
  348. data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +5 -0
  349. data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -0
  350. data/demo/config/targets/EXAMPLE/lib/example_interface.rb +18 -0
  351. data/demo/config/targets/EXAMPLE/target.txt +9 -0
  352. data/demo/config/targets/INST/cmd_tlm/_ccsds_cmd.txt +9 -0
  353. data/demo/config/targets/INST/cmd_tlm/_ccsds_tlm.txt +19 -0
  354. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +57 -0
  355. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +164 -0
  356. data/demo/config/targets/INST/cmd_tlm_server.txt +5 -0
  357. data/demo/config/targets/INST/doc/README.txt +1 -0
  358. data/demo/config/targets/INST/lib/example_limits_response.rb +30 -0
  359. data/demo/config/targets/INST/lib/inst_dump_component.rb +34 -0
  360. data/demo/config/targets/INST/lib/sim_inst.rb +321 -0
  361. data/demo/config/targets/INST/procedures/checks.rb +11 -0
  362. data/demo/config/targets/INST/procedures/collect.rb +18 -0
  363. data/demo/config/targets/INST/procedures/disconnect.rb +29 -0
  364. data/demo/config/targets/INST/procedures/utilities/clear.rb +7 -0
  365. data/demo/config/targets/INST/procedures/utilities/collect.rb +14 -0
  366. data/demo/config/targets/INST/screens/_footer.txt +4 -0
  367. data/demo/config/targets/INST/screens/adcs.txt +70 -0
  368. data/demo/config/targets/INST/screens/array.txt +15 -0
  369. data/demo/config/targets/INST/screens/block.txt +8 -0
  370. data/demo/config/targets/INST/screens/commanding.txt +37 -0
  371. data/demo/config/targets/INST/screens/graphs.txt +14 -0
  372. data/demo/config/targets/INST/screens/ground.txt +25 -0
  373. data/demo/config/targets/INST/screens/hs.txt +42 -0
  374. data/demo/config/targets/INST/screens/latest.txt +23 -0
  375. data/demo/config/targets/INST/screens/limits.txt +43 -0
  376. data/demo/config/targets/INST/screens/other.txt +24 -0
  377. data/demo/config/targets/INST/screens/spacing_box.txt +44 -0
  378. data/demo/config/targets/INST/screens/spacing_grid.txt +78 -0
  379. data/demo/config/targets/INST/screens/tabs.txt +68 -0
  380. data/demo/config/targets/INST/sequences/sequence.tsv +3 -0
  381. data/demo/config/targets/INST/tables/EventAction.csv +9 -0
  382. data/demo/config/targets/INST/tables/EventAction.dat +0 -0
  383. data/demo/config/targets/INST/tables/McConfigTable.csv +20 -0
  384. data/demo/config/targets/INST/tables/McConfigTable.dat +0 -0
  385. data/demo/config/targets/INST/target.txt +37 -0
  386. data/demo/config/targets/INST/tools/data_viewer/data_viewer.txt +2 -0
  387. data/demo/config/targets/INST/tools/data_viewer/data_viewer2.txt +2 -0
  388. data/demo/config/targets/INST/tools/table_manager/EventAction_def.txt +6 -0
  389. data/demo/config/targets/INST/tools/table_manager/McConfigTable_def.txt +38 -0
  390. data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +6 -0
  391. data/demo/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +10 -0
  392. data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -0
  393. data/demo/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
  394. data/demo/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  395. data/demo/config/targets/SYSTEM/cmd_tlm_server.txt +6 -0
  396. data/demo/config/targets/SYSTEM/lib/limits_groups.rb +55 -0
  397. data/demo/config/targets/SYSTEM/screens/status.txt +12 -0
  398. data/demo/config/targets/SYSTEM/target.txt +12 -0
  399. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +13 -0
  400. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -0
  401. data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -0
  402. data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +59 -0
  403. data/demo/config/targets/TEMPLATED/target.txt +8 -0
  404. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +49 -0
  405. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +42 -0
  406. data/demo/config/tools/data_viewer/data_viewer.txt +20 -0
  407. data/demo/config/tools/example_application.css +58 -0
  408. data/demo/config/tools/handbook_creator/default_toc.xsl +59 -0
  409. data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -0
  410. data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +88 -0
  411. data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  412. data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  413. data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -0
  414. data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  415. data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  416. data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  417. data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  418. data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  419. data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  420. data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +82 -0
  421. data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  422. data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -0
  423. data/demo/config/tools/launcher/launcher.css +7 -0
  424. data/demo/config/tools/launcher/launcher.txt +48 -0
  425. data/demo/config/tools/launcher/launcher2.css +10 -0
  426. data/demo/config/tools/launcher/launcher2.txt +48 -0
  427. data/demo/config/tools/launcher/launcher_mini.txt +45 -0
  428. data/demo/config/tools/limits_monitor/README.txt +1 -0
  429. data/demo/config/tools/opengl_builder/README.txt +1 -0
  430. data/demo/config/tools/script_runner/script_runner.txt +3 -0
  431. data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -0
  432. data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -0
  433. data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +37 -0
  434. data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +34 -0
  435. data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +9 -0
  436. data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +31 -0
  437. data/demo/config/tools/test_runner/test_runner.css +45 -0
  438. data/demo/config/tools/test_runner/test_runner.txt +17 -0
  439. data/demo/config/tools/tlm_extractor/_adcs_time.txt +2 -0
  440. data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -0
  441. data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -0
  442. data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -0
  443. data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -0
  444. data/demo/config/tools/tlm_grapher/README.txt +1 -0
  445. data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -0
  446. data/demo/lib/example_background_task.rb +55 -0
  447. data/demo/lib/example_target.rb +103 -0
  448. data/demo/lib/scpi_target.rb +68 -0
  449. data/demo/lib/user_version.rb +3 -0
  450. data/demo/procedures/cosmos_api_test.rb +310 -0
  451. data/demo/procedures/example_test.rb +192 -0
  452. data/demo/procedures/plot_test.rb +8 -0
  453. data/demo/procedures/run_example_test.rb +3 -0
  454. data/demo/procedures/test.rb +51 -0
  455. data/demo/tools/CmdExtractor +16 -0
  456. data/demo/tools/CmdExtractor.bat +9 -0
  457. data/demo/tools/CmdSender +16 -0
  458. data/demo/tools/CmdSender.bat +9 -0
  459. data/demo/tools/CmdSequence +16 -0
  460. data/demo/tools/CmdSequence.bat +9 -0
  461. data/demo/tools/CmdTlmServer +16 -0
  462. data/demo/tools/CmdTlmServer.bat +9 -0
  463. data/demo/tools/ConfigEditor +16 -0
  464. data/demo/tools/ConfigEditor.bat +9 -0
  465. data/demo/tools/DataViewer +16 -0
  466. data/demo/tools/DataViewer.bat +9 -0
  467. data/demo/tools/ExampleTarget +16 -0
  468. data/demo/tools/ExampleTarget.bat +9 -0
  469. data/demo/tools/HandbookCreator +16 -0
  470. data/demo/tools/HandbookCreator.bat +9 -0
  471. data/demo/tools/Launcher +16 -0
  472. data/demo/tools/Launcher.bat +9 -0
  473. data/demo/tools/LimitsMonitor +16 -0
  474. data/demo/tools/LimitsMonitor.bat +9 -0
  475. data/demo/tools/OpenGLBuilder +16 -0
  476. data/demo/tools/OpenGLBuilder.bat +9 -0
  477. data/demo/tools/PacketViewer +16 -0
  478. data/demo/tools/PacketViewer.bat +9 -0
  479. data/demo/tools/Replay +16 -0
  480. data/demo/tools/Replay.bat +9 -0
  481. data/demo/tools/ScpiTarget +16 -0
  482. data/demo/tools/ScpiTarget.bat +9 -0
  483. data/demo/tools/ScriptRunner +16 -0
  484. data/demo/tools/ScriptRunner.bat +9 -0
  485. data/demo/tools/TableManager +16 -0
  486. data/demo/tools/TableManager.bat +9 -0
  487. data/demo/tools/TestRunner +16 -0
  488. data/demo/tools/TestRunner.bat +9 -0
  489. data/demo/tools/TlmExtractor +16 -0
  490. data/demo/tools/TlmExtractor.bat +9 -0
  491. data/demo/tools/TlmGrapher +16 -0
  492. data/demo/tools/TlmGrapher.bat +9 -0
  493. data/demo/tools/TlmViewer +16 -0
  494. data/demo/tools/TlmViewer.bat +9 -0
  495. data/demo/tools/ToolLaunch.bat +72 -0
  496. data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
  497. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -0
  498. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -0
  499. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  500. data/demo/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
  501. data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
  502. data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -0
  503. data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -0
  504. data/demo/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -0
  505. data/demo/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
  506. data/demo/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
  507. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
  508. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
  509. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
  510. data/demo/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
  511. data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
  512. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -0
  513. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -0
  514. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -0
  515. data/demo/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
  516. data/demo/tools/mac/ConfigEditor.app/Contents/Info.plist +38 -0
  517. data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/ConfigEditor.rb +16 -0
  518. data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +10 -0
  519. data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/tool_launch.rb +38 -0
  520. data/demo/tools/mac/ConfigEditor.app/Contents/Resources/appIcon.icns +0 -0
  521. data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
  522. data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -0
  523. data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -0
  524. data/demo/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  525. data/demo/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
  526. data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
  527. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -0
  528. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -0
  529. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -0
  530. data/demo/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
  531. data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -0
  532. data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -0
  533. data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -0
  534. data/demo/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -0
  535. data/demo/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
  536. data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
  537. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -0
  538. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -0
  539. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -0
  540. data/demo/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
  541. data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
  542. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -0
  543. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -0
  544. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -0
  545. data/demo/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
  546. data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
  547. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -0
  548. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -0
  549. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  550. data/demo/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
  551. data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -0
  552. data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -0
  553. data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -0
  554. data/demo/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -0
  555. data/demo/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
  556. data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
  557. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -0
  558. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -0
  559. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  560. data/demo/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
  561. data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -0
  562. data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -0
  563. data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -0
  564. data/demo/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -0
  565. data/demo/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
  566. data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
  567. data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -0
  568. data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -0
  569. data/demo/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  570. data/demo/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
  571. data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
  572. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -0
  573. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -0
  574. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  575. data/demo/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
  576. data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
  577. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -0
  578. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -0
  579. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -0
  580. data/demo/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
  581. data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
  582. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -0
  583. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -0
  584. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  585. data/demo/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
  586. data/demo/tools/tool_launch.rb +38 -0
  587. data/ext/cosmos/ext/array/array.c +111 -0
  588. data/ext/cosmos/ext/array/extconf.rb +13 -0
  589. data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -0
  590. data/ext/cosmos/ext/buffered_file/extconf.rb +13 -0
  591. data/ext/cosmos/ext/config_parser/config_parser.c +237 -0
  592. data/ext/cosmos/ext/config_parser/extconf.rb +13 -0
  593. data/ext/cosmos/ext/cosmos_io/cosmos_io.c +117 -0
  594. data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -0
  595. data/ext/cosmos/ext/crc/crc.c +341 -0
  596. data/ext/cosmos/ext/crc/extconf.rb +13 -0
  597. data/ext/cosmos/ext/line_graph/extconf.rb +13 -0
  598. data/ext/cosmos/ext/line_graph/line_graph.c +501 -0
  599. data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +13 -0
  600. data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +265 -0
  601. data/ext/cosmos/ext/packet/extconf.rb +13 -0
  602. data/ext/cosmos/ext/packet/packet.c +350 -0
  603. data/ext/cosmos/ext/platform/extconf.rb +13 -0
  604. data/ext/cosmos/ext/platform/platform.c +101 -0
  605. data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -0
  606. data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +73 -0
  607. data/ext/cosmos/ext/string/extconf.rb +13 -0
  608. data/ext/cosmos/ext/string/string.c +49 -0
  609. data/ext/cosmos/ext/structure/structure.c +1433 -0
  610. data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -0
  611. data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -0
  612. data/ext/cosmos/ext/telemetry/extconf.rb +13 -0
  613. data/ext/cosmos/ext/telemetry/telemetry.c +307 -0
  614. data/ext/mkrf_conf.rb +40 -0
  615. data/install/Gemfile +10 -0
  616. data/install/Launcher +16 -0
  617. data/install/Launcher.bat +9 -0
  618. data/install/Rakefile +77 -0
  619. data/install/config/data/README.txt +1 -0
  620. data/install/config/data/crc.txt +160 -0
  621. data/install/config/system/system.txt +39 -0
  622. data/install/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +9 -0
  623. data/install/config/targets/SYSTEM/target.txt +12 -0
  624. data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -0
  625. data/install/config/tools/data_viewer/data_viewer.txt +4 -0
  626. data/install/config/tools/handbook_creator/default_toc.xsl +59 -0
  627. data/install/config/tools/handbook_creator/handbook_creator.txt +49 -0
  628. data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  629. data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  630. data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  631. data/install/config/tools/handbook_creator/templates/header.html.erb +25 -0
  632. data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  633. data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  634. data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  635. data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  636. data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  637. data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  638. data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  639. data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  640. data/install/config/tools/handbook_creator/templates/title.html.erb +1 -0
  641. data/install/config/tools/launcher/launcher.txt +40 -0
  642. data/install/config/tools/limits_monitor/README.txt +1 -0
  643. data/install/config/tools/opengl_builder/README.txt +1 -0
  644. data/install/config/tools/script_runner/script_runner.txt +3 -0
  645. data/install/config/tools/table_manager/README.txt +1 -0
  646. data/install/config/tools/test_runner/test_runner.txt +8 -0
  647. data/install/config/tools/tlm_extractor/README.txt +1 -0
  648. data/install/config/tools/tlm_grapher/README.txt +1 -0
  649. data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -0
  650. data/install/lib/user_version.rb +3 -0
  651. data/install/procedures/README.txt +1 -0
  652. data/install/tools/CmdExtractor +16 -0
  653. data/install/tools/CmdExtractor.bat +9 -0
  654. data/install/tools/CmdSender +16 -0
  655. data/install/tools/CmdSender.bat +9 -0
  656. data/install/tools/CmdSequence +16 -0
  657. data/install/tools/CmdSequence.bat +9 -0
  658. data/install/tools/CmdTlmServer +16 -0
  659. data/install/tools/CmdTlmServer.bat +9 -0
  660. data/install/tools/ConfigEditor +16 -0
  661. data/install/tools/ConfigEditor.bat +9 -0
  662. data/install/tools/DataViewer +16 -0
  663. data/install/tools/DataViewer.bat +9 -0
  664. data/install/tools/HandbookCreator +16 -0
  665. data/install/tools/HandbookCreator.bat +9 -0
  666. data/install/tools/Launcher +16 -0
  667. data/install/tools/Launcher.bat +9 -0
  668. data/install/tools/LimitsMonitor +16 -0
  669. data/install/tools/LimitsMonitor.bat +9 -0
  670. data/install/tools/OpenGLBuilder +16 -0
  671. data/install/tools/OpenGLBuilder.bat +9 -0
  672. data/install/tools/PacketViewer +16 -0
  673. data/install/tools/PacketViewer.bat +9 -0
  674. data/install/tools/Replay +16 -0
  675. data/install/tools/Replay.bat +9 -0
  676. data/install/tools/ScriptRunner +16 -0
  677. data/install/tools/ScriptRunner.bat +9 -0
  678. data/install/tools/TableManager +16 -0
  679. data/install/tools/TableManager.bat +9 -0
  680. data/install/tools/TestRunner +16 -0
  681. data/install/tools/TestRunner.bat +9 -0
  682. data/install/tools/TlmExtractor +16 -0
  683. data/install/tools/TlmExtractor.bat +9 -0
  684. data/install/tools/TlmGrapher +16 -0
  685. data/install/tools/TlmGrapher.bat +9 -0
  686. data/install/tools/TlmViewer +16 -0
  687. data/install/tools/TlmViewer.bat +9 -0
  688. data/install/tools/ToolLaunch.bat +72 -0
  689. data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
  690. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -0
  691. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -0
  692. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  693. data/install/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
  694. data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
  695. data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -0
  696. data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -0
  697. data/install/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -0
  698. data/install/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
  699. data/install/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
  700. data/install/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
  701. data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
  702. data/install/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
  703. data/install/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
  704. data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
  705. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -0
  706. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -0
  707. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -0
  708. data/install/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
  709. data/install/tools/mac/ConfigEditor.app/Contents/Info.plist +38 -0
  710. data/install/tools/mac/ConfigEditor.app/Contents/MacOS/ConfigEditor.rb +16 -0
  711. data/install/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +10 -0
  712. data/install/tools/mac/ConfigEditor.app/Contents/MacOS/tool_launch.rb +38 -0
  713. data/install/tools/mac/ConfigEditor.app/Contents/Resources/appIcon.icns +0 -0
  714. data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
  715. data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -0
  716. data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -0
  717. data/install/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  718. data/install/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
  719. data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
  720. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -0
  721. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -0
  722. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -0
  723. data/install/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
  724. data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -0
  725. data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -0
  726. data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -0
  727. data/install/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -0
  728. data/install/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
  729. data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
  730. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -0
  731. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -0
  732. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -0
  733. data/install/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
  734. data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
  735. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -0
  736. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -0
  737. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -0
  738. data/install/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
  739. data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
  740. data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -0
  741. data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -0
  742. data/install/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  743. data/install/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
  744. data/install/tools/mac/Replay.app/Contents/Info.plist +38 -0
  745. data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -0
  746. data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -0
  747. data/install/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -0
  748. data/install/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
  749. data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
  750. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -0
  751. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -0
  752. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  753. data/install/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
  754. data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -0
  755. data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -0
  756. data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -0
  757. data/install/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -0
  758. data/install/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
  759. data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
  760. data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -0
  761. data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -0
  762. data/install/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  763. data/install/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
  764. data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
  765. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -0
  766. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -0
  767. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  768. data/install/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
  769. data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
  770. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -0
  771. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -0
  772. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -0
  773. data/install/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
  774. data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
  775. data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -0
  776. data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -0
  777. data/install/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  778. data/install/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
  779. data/install/tools/tool_launch.rb +38 -0
  780. data/lib/cosmos.rb +63 -0
  781. data/lib/cosmos/ccsds/ccsds_packet.rb +63 -0
  782. data/lib/cosmos/ccsds/ccsds_parser.rb +143 -0
  783. data/lib/cosmos/config/config_parser.rb +508 -0
  784. data/lib/cosmos/config/meta_config_parser.rb +57 -0
  785. data/lib/cosmos/conversions.rb +13 -0
  786. data/lib/cosmos/conversions/conversion.rb +52 -0
  787. data/lib/cosmos/conversions/generic_conversion.rb +67 -0
  788. data/lib/cosmos/conversions/new_packet_log_conversion.rb +52 -0
  789. data/lib/cosmos/conversions/polynomial_conversion.rb +79 -0
  790. data/lib/cosmos/conversions/processor_conversion.rb +56 -0
  791. data/lib/cosmos/conversions/received_count_conversion.rb +33 -0
  792. data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -0
  793. data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -0
  794. data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +139 -0
  795. data/lib/cosmos/conversions/unix_time_conversion.rb +57 -0
  796. data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -0
  797. data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -0
  798. data/lib/cosmos/core_ext.rb +18 -0
  799. data/lib/cosmos/core_ext/array.rb +397 -0
  800. data/lib/cosmos/core_ext/class.rb +53 -0
  801. data/lib/cosmos/core_ext/cosmos_io.rb +45 -0
  802. data/lib/cosmos/core_ext/exception.rb +52 -0
  803. data/lib/cosmos/core_ext/file.rb +76 -0
  804. data/lib/cosmos/core_ext/hash.rb +28 -0
  805. data/lib/cosmos/core_ext/io.rb +93 -0
  806. data/lib/cosmos/core_ext/kernel.rb +33 -0
  807. data/lib/cosmos/core_ext/math.rb +119 -0
  808. data/lib/cosmos/core_ext/matrix.rb +149 -0
  809. data/lib/cosmos/core_ext/objectspace.rb +27 -0
  810. data/lib/cosmos/core_ext/range.rb +18 -0
  811. data/lib/cosmos/core_ext/socket.rb +32 -0
  812. data/lib/cosmos/core_ext/string.rb +351 -0
  813. data/lib/cosmos/core_ext/stringio.rb +24 -0
  814. data/lib/cosmos/core_ext/time.rb +481 -0
  815. data/lib/cosmos/ext/.keep +0 -0
  816. data/lib/cosmos/gui/choosers/combobox_chooser.rb +141 -0
  817. data/lib/cosmos/gui/choosers/file_chooser.rb +85 -0
  818. data/lib/cosmos/gui/choosers/float_chooser.rb +67 -0
  819. data/lib/cosmos/gui/choosers/integer_chooser.rb +69 -0
  820. data/lib/cosmos/gui/choosers/string_chooser.rb +35 -0
  821. data/lib/cosmos/gui/choosers/telemetry_chooser.rb +326 -0
  822. data/lib/cosmos/gui/choosers/value_chooser.rb +67 -0
  823. data/lib/cosmos/gui/dialogs/about_dialog.rb +166 -0
  824. data/lib/cosmos/gui/dialogs/calendar_dialog.rb +140 -0
  825. data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +51 -0
  826. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +163 -0
  827. data/lib/cosmos/gui/dialogs/details_dialog.rb +190 -0
  828. data/lib/cosmos/gui/dialogs/exception_dialog.rb +106 -0
  829. data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +60 -0
  830. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +272 -0
  831. data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +143 -0
  832. data/lib/cosmos/gui/dialogs/legal_dialog.rb +183 -0
  833. data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +97 -0
  834. data/lib/cosmos/gui/dialogs/progress_dialog.rb +313 -0
  835. data/lib/cosmos/gui/dialogs/pry_dialog.rb +169 -0
  836. data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +51 -0
  837. data/lib/cosmos/gui/dialogs/select_dialog.rb +59 -0
  838. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +159 -0
  839. data/lib/cosmos/gui/dialogs/splash.rb +145 -0
  840. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +201 -0
  841. data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +79 -0
  842. data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +108 -0
  843. data/lib/cosmos/gui/line_graph/line_graph.rb +482 -0
  844. data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +36 -0
  845. data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +521 -0
  846. data/lib/cosmos/gui/line_graph/line_graph_popups.rb +112 -0
  847. data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +452 -0
  848. data/lib/cosmos/gui/line_graph/line_graph_script.rb +81 -0
  849. data/lib/cosmos/gui/line_graph/lines.rb +304 -0
  850. data/lib/cosmos/gui/line_graph/overview_graph.rb +474 -0
  851. data/lib/cosmos/gui/opengl/earth_model.rb +25 -0
  852. data/lib/cosmos/gui/opengl/gl_bounds.rb +55 -0
  853. data/lib/cosmos/gui/opengl/gl_light.rb +38 -0
  854. data/lib/cosmos/gui/opengl/gl_material.rb +28 -0
  855. data/lib/cosmos/gui/opengl/gl_scene.rb +78 -0
  856. data/lib/cosmos/gui/opengl/gl_shape.rb +150 -0
  857. data/lib/cosmos/gui/opengl/gl_viewer.rb +712 -0
  858. data/lib/cosmos/gui/opengl/gl_viewport.rb +34 -0
  859. data/lib/cosmos/gui/opengl/moon_model.rb +25 -0
  860. data/lib/cosmos/gui/opengl/opengl.rb +8 -0
  861. data/lib/cosmos/gui/opengl/stl_reader.rb +210 -0
  862. data/lib/cosmos/gui/opengl/stl_shape.rb +127 -0
  863. data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +202 -0
  864. data/lib/cosmos/gui/qt.rb +841 -0
  865. data/lib/cosmos/gui/qt_tool.rb +489 -0
  866. data/lib/cosmos/gui/text/completion.rb +402 -0
  867. data/lib/cosmos/gui/text/completion_line_edit.rb +30 -0
  868. data/lib/cosmos/gui/text/completion_text_edit.rb +194 -0
  869. data/lib/cosmos/gui/text/ruby_editor.rb +463 -0
  870. data/lib/cosmos/gui/utilities/analyze_log.rb +153 -0
  871. data/lib/cosmos/gui/utilities/screenshot.rb +33 -0
  872. data/lib/cosmos/gui/utilities/script_module_gui.rb +364 -0
  873. data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +171 -0
  874. data/lib/cosmos/gui/widgets/packet_log_frame.rb +344 -0
  875. data/lib/cosmos/gui/widgets/realtime_button_bar.rb +98 -0
  876. data/lib/cosmos/interfaces.rb +21 -0
  877. data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +134 -0
  878. data/lib/cosmos/interfaces/interface.rb +449 -0
  879. data/lib/cosmos/interfaces/linc_interface.rb +459 -0
  880. data/lib/cosmos/interfaces/protocols/burst_protocol.rb +173 -0
  881. data/lib/cosmos/interfaces/protocols/crc_protocol.rb +141 -0
  882. data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +114 -0
  883. data/lib/cosmos/interfaces/protocols/length_protocol.rb +147 -0
  884. data/lib/cosmos/interfaces/protocols/override_protocol.rb +52 -0
  885. data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +141 -0
  886. data/lib/cosmos/interfaces/protocols/protocol.rb +60 -0
  887. data/lib/cosmos/interfaces/protocols/template_protocol.rb +240 -0
  888. data/lib/cosmos/interfaces/protocols/terminated_protocol.rb +81 -0
  889. data/lib/cosmos/interfaces/serial_interface.rb +81 -0
  890. data/lib/cosmos/interfaces/simulated_target_interface.rb +140 -0
  891. data/lib/cosmos/interfaces/stream_interface.rb +64 -0
  892. data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -0
  893. data/lib/cosmos/interfaces/tcpip_server_interface.rb +625 -0
  894. data/lib/cosmos/interfaces/udp_interface.rb +141 -0
  895. data/lib/cosmos/io/buffered_file.rb +101 -0
  896. data/lib/cosmos/io/cosmos_snmp.rb +50 -0
  897. data/lib/cosmos/io/io_multiplexer.rb +71 -0
  898. data/lib/cosmos/io/json_drb.rb +386 -0
  899. data/lib/cosmos/io/json_drb_object.rb +201 -0
  900. data/lib/cosmos/io/json_rpc.rb +365 -0
  901. data/lib/cosmos/io/posix_serial_driver.rb +147 -0
  902. data/lib/cosmos/io/raw_logger.rb +170 -0
  903. data/lib/cosmos/io/raw_logger_pair.rb +71 -0
  904. data/lib/cosmos/io/serial_driver.rb +94 -0
  905. data/lib/cosmos/io/stderr.rb +36 -0
  906. data/lib/cosmos/io/stdout.rb +36 -0
  907. data/lib/cosmos/io/udp_sockets.rb +152 -0
  908. data/lib/cosmos/io/win32_serial_driver.rb +165 -0
  909. data/lib/cosmos/packet_logs.rb +6 -0
  910. data/lib/cosmos/packet_logs/ccsds_log_reader.rb +104 -0
  911. data/lib/cosmos/packet_logs/packet_log_reader.rb +461 -0
  912. data/lib/cosmos/packet_logs/packet_log_writer.rb +341 -0
  913. data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -0
  914. data/lib/cosmos/packets/binary_accessor.rb +1201 -0
  915. data/lib/cosmos/packets/commands.rb +318 -0
  916. data/lib/cosmos/packets/limits.rb +264 -0
  917. data/lib/cosmos/packets/limits_response.rb +42 -0
  918. data/lib/cosmos/packets/packet.rb +994 -0
  919. data/lib/cosmos/packets/packet_config.rb +1393 -0
  920. data/lib/cosmos/packets/packet_item.rb +585 -0
  921. data/lib/cosmos/packets/packet_item_limits.rb +140 -0
  922. data/lib/cosmos/packets/parsers/format_string_parser.rb +59 -0
  923. data/lib/cosmos/packets/parsers/limits_parser.rb +147 -0
  924. data/lib/cosmos/packets/parsers/limits_response_parser.rb +52 -0
  925. data/lib/cosmos/packets/parsers/macro_parser.rb +118 -0
  926. data/lib/cosmos/packets/parsers/packet_item_parser.rb +234 -0
  927. data/lib/cosmos/packets/parsers/packet_parser.rb +131 -0
  928. data/lib/cosmos/packets/parsers/processor_parser.rb +63 -0
  929. data/lib/cosmos/packets/parsers/state_parser.rb +119 -0
  930. data/lib/cosmos/packets/structure.rb +508 -0
  931. data/lib/cosmos/packets/structure_item.rb +292 -0
  932. data/lib/cosmos/packets/telemetry.rb +444 -0
  933. data/lib/cosmos/processors.rb +6 -0
  934. data/lib/cosmos/processors/new_packet_log_processor.rb +39 -0
  935. data/lib/cosmos/processors/processor.rb +76 -0
  936. data/lib/cosmos/processors/statistics_processor.rb +70 -0
  937. data/lib/cosmos/processors/watermark_processor.rb +49 -0
  938. data/lib/cosmos/script.rb +9 -0
  939. data/lib/cosmos/script/api_shared.rb +972 -0
  940. data/lib/cosmos/script/cmd_tlm_server.rb +138 -0
  941. data/lib/cosmos/script/commands.rb +189 -0
  942. data/lib/cosmos/script/extract.rb +139 -0
  943. data/lib/cosmos/script/limits.rb +116 -0
  944. data/lib/cosmos/script/script.rb +76 -0
  945. data/lib/cosmos/script/scripting.rb +144 -0
  946. data/lib/cosmos/script/telemetry.rb +216 -0
  947. data/lib/cosmos/script/tools.rb +97 -0
  948. data/lib/cosmos/streams/serial_stream.rb +150 -0
  949. data/lib/cosmos/streams/stream.rb +54 -0
  950. data/lib/cosmos/streams/tcpip_client_stream.rb +113 -0
  951. data/lib/cosmos/streams/tcpip_socket_stream.rb +186 -0
  952. data/lib/cosmos/system.rb +4 -0
  953. data/lib/cosmos/system/system.rb +778 -0
  954. data/lib/cosmos/system/target.rb +228 -0
  955. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +268 -0
  956. data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +78 -0
  957. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +773 -0
  958. data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -0
  959. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +652 -0
  960. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +510 -0
  961. data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +194 -0
  962. data/lib/cosmos/tools/cmd_tlm_server/api.rb +1337 -0
  963. data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +54 -0
  964. data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +77 -0
  965. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +537 -0
  966. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +274 -0
  967. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +480 -0
  968. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +121 -0
  969. data/lib/cosmos/tools/cmd_tlm_server/connections.rb +175 -0
  970. data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +213 -0
  971. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +176 -0
  972. data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +151 -0
  973. data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +255 -0
  974. data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +85 -0
  975. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +274 -0
  976. data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +153 -0
  977. data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +122 -0
  978. data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +161 -0
  979. data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +66 -0
  980. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +134 -0
  981. data/lib/cosmos/tools/config_editor/config_editor.rb +728 -0
  982. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +690 -0
  983. data/lib/cosmos/tools/data_viewer/data_viewer.rb +633 -0
  984. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +120 -0
  985. data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -0
  986. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +156 -0
  987. data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +382 -0
  988. data/lib/cosmos/tools/launcher/launcher.rb +194 -0
  989. data/lib/cosmos/tools/launcher/launcher_config.rb +256 -0
  990. data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -0
  991. data/lib/cosmos/tools/launcher/launcher_tool.rb +116 -0
  992. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +972 -0
  993. data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -0
  994. data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -0
  995. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +608 -0
  996. data/lib/cosmos/tools/replay/replay.rb +517 -0
  997. data/lib/cosmos/tools/replay/replay_server.rb +91 -0
  998. data/lib/cosmos/tools/script_runner/script_audit.rb +147 -0
  999. data/lib/cosmos/tools/script_runner/script_runner.rb +979 -0
  1000. data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -0
  1001. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1838 -0
  1002. data/lib/cosmos/tools/table_manager/table.rb +61 -0
  1003. data/lib/cosmos/tools/table_manager/table_config.rb +189 -0
  1004. data/lib/cosmos/tools/table_manager/table_item.rb +58 -0
  1005. data/lib/cosmos/tools/table_manager/table_item_parser.rb +46 -0
  1006. data/lib/cosmos/tools/table_manager/table_manager.rb +1152 -0
  1007. data/lib/cosmos/tools/table_manager/table_manager_core.rb +321 -0
  1008. data/lib/cosmos/tools/table_manager/table_parser.rb +75 -0
  1009. data/lib/cosmos/tools/test_runner/results_writer.rb +283 -0
  1010. data/lib/cosmos/tools/test_runner/test.rb +539 -0
  1011. data/lib/cosmos/tools/test_runner/test_runner.rb +1271 -0
  1012. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +341 -0
  1013. data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -0
  1014. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1152 -0
  1015. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +441 -0
  1016. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +60 -0
  1017. data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +92 -0
  1018. data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -0
  1019. data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +95 -0
  1020. data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -0
  1021. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +222 -0
  1022. data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -0
  1023. data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -0
  1024. data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +174 -0
  1025. data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +193 -0
  1026. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +422 -0
  1027. data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +176 -0
  1028. data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +25 -0
  1029. data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +325 -0
  1030. data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +191 -0
  1031. data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -0
  1032. data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -0
  1033. data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -0
  1034. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +173 -0
  1035. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -0
  1036. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -0
  1037. data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +209 -0
  1038. data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -0
  1039. data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -0
  1040. data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -0
  1041. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1291 -0
  1042. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +451 -0
  1043. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -0
  1044. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +114 -0
  1045. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -0
  1046. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +78 -0
  1047. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -0
  1048. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1004 -0
  1049. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +103 -0
  1050. data/lib/cosmos/tools/tlm_viewer/screen.rb +502 -0
  1051. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +571 -0
  1052. data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +293 -0
  1053. data/lib/cosmos/tools/tlm_viewer/widgets.rb +61 -0
  1054. data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +110 -0
  1055. data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +66 -0
  1056. data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +57 -0
  1057. data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -0
  1058. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_clickable.rb +33 -0
  1059. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +70 -0
  1060. data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +77 -0
  1061. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +43 -0
  1062. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +59 -0
  1063. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +44 -0
  1064. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +54 -0
  1065. data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +53 -0
  1066. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +63 -0
  1067. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +123 -0
  1068. data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +38 -0
  1069. data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +30 -0
  1070. data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +31 -0
  1071. data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +35 -0
  1072. data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -0
  1073. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +31 -0
  1074. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +26 -0
  1075. data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +29 -0
  1076. data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +39 -0
  1077. data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +38 -0
  1078. data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +38 -0
  1079. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +57 -0
  1080. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +42 -0
  1081. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +37 -0
  1082. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitscolumn_widget.rb +38 -0
  1083. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +37 -0
  1084. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangecolumn_widget.rb +39 -0
  1085. data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +34 -0
  1086. data/lib/cosmos/tools/tlm_viewer/widgets/limits_widget.rb +113 -0
  1087. data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +116 -0
  1088. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolor_widget.rb +102 -0
  1089. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolumn_widget.rb +116 -0
  1090. data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +63 -0
  1091. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +58 -0
  1092. data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +116 -0
  1093. data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +34 -0
  1094. data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +38 -0
  1095. data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +65 -0
  1096. data/lib/cosmos/tools/tlm_viewer/widgets/rangecolumn_widget.rb +65 -0
  1097. data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +34 -0
  1098. data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +35 -0
  1099. data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +33 -0
  1100. data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +55 -0
  1101. data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +26 -0
  1102. data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +28 -0
  1103. data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +47 -0
  1104. data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +26 -0
  1105. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +91 -0
  1106. data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +27 -0
  1107. data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +130 -0
  1108. data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +46 -0
  1109. data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -0
  1110. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +37 -0
  1111. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitscolumn_widget.rb +37 -0
  1112. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +37 -0
  1113. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangecolumn_widget.rb +37 -0
  1114. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +36 -0
  1115. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +38 -0
  1116. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +257 -0
  1117. data/lib/cosmos/top_level.rb +790 -0
  1118. data/lib/cosmos/utilities.rb +11 -0
  1119. data/lib/cosmos/utilities/crc.rb +268 -0
  1120. data/lib/cosmos/utilities/csv.rb +137 -0
  1121. data/lib/cosmos/utilities/logger.rb +137 -0
  1122. data/lib/cosmos/utilities/low_fragmentation_array.rb +19 -0
  1123. data/lib/cosmos/utilities/message_log.rb +79 -0
  1124. data/lib/cosmos/utilities/quaternion.rb +258 -0
  1125. data/lib/cosmos/utilities/ruby_lex_utils.rb +313 -0
  1126. data/lib/cosmos/utilities/simulated_target.rb +100 -0
  1127. data/lib/cosmos/utilities/sleeper.rb +44 -0
  1128. data/lib/cosmos/version.rb +12 -0
  1129. data/lib/cosmos/win32/excel.rb +66 -0
  1130. data/lib/cosmos/win32/win32.rb +387 -0
  1131. data/lib/cosmos/win32/win32_main.rb +325 -0
  1132. data/roodi.yml +24 -0
  1133. data/run_gui_tests.bat +44 -0
  1134. data/spec/ccsds/ccsds_packet_spec.rb +67 -0
  1135. data/spec/ccsds/ccsds_parser_spec.rb +148 -0
  1136. data/spec/config/config_parser_spec.rb +353 -0
  1137. data/spec/conversions/conversion_spec.rb +31 -0
  1138. data/spec/conversions/generic_conversion_spec.rb +45 -0
  1139. data/spec/conversions/new_packet_log_conversion_spec.rb +39 -0
  1140. data/spec/conversions/polynomial_conversion_spec.rb +40 -0
  1141. data/spec/conversions/processor_conversion_spec.rb +45 -0
  1142. data/spec/conversions/received_count_conversion_spec.rb +43 -0
  1143. data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -0
  1144. data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -0
  1145. data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -0
  1146. data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -0
  1147. data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -0
  1148. data/spec/core_ext/array_spec.rb +247 -0
  1149. data/spec/core_ext/class_spec.rb +36 -0
  1150. data/spec/core_ext/cosmos_io_spec.rb +77 -0
  1151. data/spec/core_ext/exception_spec.rb +91 -0
  1152. data/spec/core_ext/file_spec.rb +72 -0
  1153. data/spec/core_ext/hash_spec.rb +24 -0
  1154. data/spec/core_ext/io_spec.rb +46 -0
  1155. data/spec/core_ext/kernel_spec.rb +54 -0
  1156. data/spec/core_ext/math_spec.rb +116 -0
  1157. data/spec/core_ext/matrix_spec.rb +127 -0
  1158. data/spec/core_ext/objectspace_spec.rb +32 -0
  1159. data/spec/core_ext/range_spec.rb +21 -0
  1160. data/spec/core_ext/socket_spec.rb +32 -0
  1161. data/spec/core_ext/string_spec.rb +239 -0
  1162. data/spec/core_ext/stringio_spec.rb +21 -0
  1163. data/spec/core_ext/time_spec.rb +220 -0
  1164. data/spec/gui/line_graph/line_clip_spec.rb +324 -0
  1165. data/spec/gui/qt_spec.rb +104 -0
  1166. data/spec/install/config/system/system.txt +27 -0
  1167. data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -0
  1168. data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +111 -0
  1169. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -0
  1170. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -0
  1171. data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -0
  1172. data/spec/install/config/targets/INST/lib/sim_inst.rb +305 -0
  1173. data/spec/install/config/targets/INST/target.txt +10 -0
  1174. data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -0
  1175. data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +10 -0
  1176. data/spec/install/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
  1177. data/spec/install/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  1178. data/spec/install/config/targets/SYSTEM/cmd_tlm_server.txt +6 -0
  1179. data/spec/install/config/targets/SYSTEM/screens/status.txt +12 -0
  1180. data/spec/install/config/targets/SYSTEM/target.txt +12 -0
  1181. data/spec/install/lib/README.txt +1 -0
  1182. data/spec/interfaces/cmd_tlm_server_interface_spec.rb +146 -0
  1183. data/spec/interfaces/interface_spec.rb +514 -0
  1184. data/spec/interfaces/linc_interface_spec.rb +248 -0
  1185. data/spec/interfaces/protocols/burst_protocol_spec.rb +300 -0
  1186. data/spec/interfaces/protocols/crc_protocol_spec.rb +709 -0
  1187. data/spec/interfaces/protocols/fixed_protocol_spec.rb +119 -0
  1188. data/spec/interfaces/protocols/length_protocol_spec.rb +499 -0
  1189. data/spec/interfaces/protocols/override_protocol_spec.rb +158 -0
  1190. data/spec/interfaces/protocols/preidentified_protocol_spec.rb +149 -0
  1191. data/spec/interfaces/protocols/template_protocol_spec.rb +322 -0
  1192. data/spec/interfaces/protocols/terminated_protocol_spec.rb +174 -0
  1193. data/spec/interfaces/serial_interface_spec.rb +57 -0
  1194. data/spec/interfaces/simulated_target_interface_spec.rb +128 -0
  1195. data/spec/interfaces/tcpip_client_interface_spec.rb +60 -0
  1196. data/spec/interfaces/tcpip_server_interface_spec.rb +157 -0
  1197. data/spec/interfaces/udp_interface_spec.rb +246 -0
  1198. data/spec/io/buffered_file_spec.rb +113 -0
  1199. data/spec/io/io_multiplexer_spec.rb +102 -0
  1200. data/spec/io/json_drb_object_spec.rb +119 -0
  1201. data/spec/io/json_drb_spec.rb +297 -0
  1202. data/spec/io/json_rpc_spec.rb +264 -0
  1203. data/spec/io/raw_logger_pair_spec.rb +76 -0
  1204. data/spec/io/raw_logger_spec.rb +137 -0
  1205. data/spec/io/serial_driver_spec.rb +62 -0
  1206. data/spec/io/stderr_spec.rb +32 -0
  1207. data/spec/io/stdout_spec.rb +32 -0
  1208. data/spec/io/udp_sockets_spec.rb +99 -0
  1209. data/spec/io/win32_serial_driver_spec.rb +91 -0
  1210. data/spec/packet_logs/packet_log_reader_spec.rb +553 -0
  1211. data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -0
  1212. data/spec/packet_logs/packet_log_writer_spec.rb +227 -0
  1213. data/spec/packets/binary_accessor_spec.rb +2326 -0
  1214. data/spec/packets/commands_spec.rb +379 -0
  1215. data/spec/packets/limits_response_spec.rb +25 -0
  1216. data/spec/packets/limits_spec.rb +344 -0
  1217. data/spec/packets/packet_config_spec.rb +960 -0
  1218. data/spec/packets/packet_item_limits_spec.rb +188 -0
  1219. data/spec/packets/packet_item_spec.rb +386 -0
  1220. data/spec/packets/packet_spec.rb +1456 -0
  1221. data/spec/packets/parsers/format_string_parser_spec.rb +133 -0
  1222. data/spec/packets/parsers/limits_parser_spec.rb +293 -0
  1223. data/spec/packets/parsers/limits_response_parser_spec.rb +149 -0
  1224. data/spec/packets/parsers/macro_parser_spec.rb +220 -0
  1225. data/spec/packets/parsers/packet_item_parser_spec.rb +366 -0
  1226. data/spec/packets/parsers/packet_parser_spec.rb +99 -0
  1227. data/spec/packets/parsers/processor_parser_spec.rb +114 -0
  1228. data/spec/packets/parsers/state_parser_spec.rb +189 -0
  1229. data/spec/packets/structure_item_spec.rb +213 -0
  1230. data/spec/packets/structure_spec.rb +565 -0
  1231. data/spec/packets/telemetry_spec.rb +578 -0
  1232. data/spec/processors/new_packet_log_processor_spec.rb +39 -0
  1233. data/spec/processors/processor_spec.rb +55 -0
  1234. data/spec/processors/statistics_processor_spec.rb +60 -0
  1235. data/spec/processors/watermark_processor_spec.rb +51 -0
  1236. data/spec/script/cmd_tlm_server_spec.rb +176 -0
  1237. data/spec/script/commands_disconnect_spec.rb +270 -0
  1238. data/spec/script/commands_spec.rb +303 -0
  1239. data/spec/script/extract_spec.rb +158 -0
  1240. data/spec/script/limits_spec.rb +153 -0
  1241. data/spec/script/script_spec.rb +90 -0
  1242. data/spec/script/scripting_spec.rb +745 -0
  1243. data/spec/script/telemetry_spec.rb +176 -0
  1244. data/spec/script/tools_spec.rb +134 -0
  1245. data/spec/spec_helper.rb +225 -0
  1246. data/spec/streams/serial_stream_spec.rb +122 -0
  1247. data/spec/streams/stream_spec.rb +30 -0
  1248. data/spec/streams/tcpip_client_stream_spec.rb +65 -0
  1249. data/spec/streams/tcpip_socket_stream_spec.rb +226 -0
  1250. data/spec/system/system_spec.rb +891 -0
  1251. data/spec/system/target_spec.rb +304 -0
  1252. data/spec/tools/cmd_tlm_server/api_spec.rb +1123 -0
  1253. data/spec/tools/cmd_tlm_server/background_task_spec.rb +44 -0
  1254. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +227 -0
  1255. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +610 -0
  1256. data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +431 -0
  1257. data/spec/tools/cmd_tlm_server/commanding_spec.rb +151 -0
  1258. data/spec/tools/cmd_tlm_server/connections_spec.rb +235 -0
  1259. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +401 -0
  1260. data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -0
  1261. data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +145 -0
  1262. data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -0
  1263. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +191 -0
  1264. data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -0
  1265. data/spec/tools/launcher/launcher_config_spec.rb +474 -0
  1266. data/spec/tools/table_manager/table_config_spec.rb +226 -0
  1267. data/spec/tools/table_manager/table_item_parser_spec.rb +61 -0
  1268. data/spec/tools/table_manager/table_item_spec.rb +57 -0
  1269. data/spec/tools/table_manager/table_parser_spec.rb +96 -0
  1270. data/spec/tools/table_manager/table_spec.rb +90 -0
  1271. data/spec/tools/table_manager/tablemanager_core_spec.rb +556 -0
  1272. data/spec/top_level/top_level_spec.rb +373 -0
  1273. data/spec/utilities/crc_spec.rb +45 -0
  1274. data/spec/utilities/csv_spec.rb +139 -0
  1275. data/spec/utilities/logger_spec.rb +102 -0
  1276. data/spec/utilities/message_log_spec.rb +89 -0
  1277. data/spec/utilities/quaternion_spec.rb +107 -0
  1278. data/spec/utilities/ruby_lex_utils_spec.rb +86 -0
  1279. data/tasks/gemfile_stats.rake +79 -0
  1280. data/tasks/manifest.rake +22 -0
  1281. data/tasks/spec.rake +23 -0
  1282. data/test/benchmarks/binary_accessor_benchmark.rb +14 -0
  1283. data/test/benchmarks/gsub_benchmark.rb +152 -0
  1284. data/test/benchmarks/is_a_benchmark.rb +34 -0
  1285. data/test/performance/PACKETS.bat +1 -0
  1286. data/test/performance/Rakefile +77 -0
  1287. data/test/performance/THREADS.bat +1 -0
  1288. data/test/performance/config/data/attitude.bin +0 -0
  1289. data/test/performance/config/data/crc.txt +196 -0
  1290. data/test/performance/config/data/diamond.STL +58 -0
  1291. data/test/performance/config/data/groundoff.gif +0 -0
  1292. data/test/performance/config/data/groundon.gif +0 -0
  1293. data/test/performance/config/data/hselectoff.gif +0 -0
  1294. data/test/performance/config/data/hselecton.gif +0 -0
  1295. data/test/performance/config/data/hswitchoff.gif +0 -0
  1296. data/test/performance/config/data/hswitchon.gif +0 -0
  1297. data/test/performance/config/data/meta_init.txt +4 -0
  1298. data/test/performance/config/data/position.bin +0 -0
  1299. data/test/performance/config/data/poweroff.gif +0 -0
  1300. data/test/performance/config/data/poweron.gif +0 -0
  1301. data/test/performance/config/data/satellite.gif +0 -0
  1302. data/test/performance/config/data/tada.wav +0 -0
  1303. data/test/performance/config/data/vswitchoff.gif +0 -0
  1304. data/test/performance/config/data/vswitchon.gif +0 -0
  1305. data/test/performance/config/system/system_packets.txt +38 -0
  1306. data/test/performance/config/system/system_threads.txt +58 -0
  1307. data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +46 -0
  1308. data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -0
  1309. data/test/performance/config/targets/COSMOS/cmd_tlm_server.txt +6 -0
  1310. data/test/performance/config/targets/COSMOS/screens/limits_change.txt +20 -0
  1311. data/test/performance/config/targets/COSMOS/screens/version.txt +19 -0
  1312. data/test/performance/config/targets/COSMOS/target.txt +11 -0
  1313. data/test/performance/config/targets/PACKET/cmd_tlm/packet_cmds.txt +20 -0
  1314. data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +98 -0
  1315. data/test/performance/config/targets/PACKET/cmd_tlm_server.txt +6 -0
  1316. data/test/performance/config/targets/PACKET/lib/packet_interface.rb +22 -0
  1317. data/test/performance/config/targets/PACKET/lib/packet_limits_response.rb +24 -0
  1318. data/test/performance/config/targets/PACKET/screens/status.txt +25 -0
  1319. data/test/performance/config/targets/PACKET/target.txt +28 -0
  1320. data/test/performance/config/targets/SYSTEM/screens/status.txt +12 -0
  1321. data/test/performance/config/targets/THREAD/cmd_tlm/thread_cmds.txt +17 -0
  1322. data/test/performance/config/targets/THREAD/cmd_tlm/thread_tlm.txt +18 -0
  1323. data/test/performance/config/targets/THREAD/cmd_tlm_server.txt +6 -0
  1324. data/test/performance/config/targets/THREAD/lib/thread_interface.rb +22 -0
  1325. data/test/performance/config/targets/THREAD/screens/status.txt +25 -0
  1326. data/test/performance/config/targets/THREAD/target.txt +7 -0
  1327. data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt +28 -0
  1328. data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt +68 -0
  1329. data/test/performance/config/tools/data_viewer/data_viewer.txt +11 -0
  1330. data/test/performance/config/tools/handbook_creator/default_toc.xsl +59 -0
  1331. data/test/performance/config/tools/handbook_creator/handbook_creator.txt +66 -0
  1332. data/test/performance/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  1333. data/test/performance/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  1334. data/test/performance/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  1335. data/test/performance/config/tools/handbook_creator/templates/header.html.erb +25 -0
  1336. data/test/performance/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  1337. data/test/performance/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  1338. data/test/performance/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  1339. data/test/performance/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  1340. data/test/performance/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  1341. data/test/performance/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  1342. data/test/performance/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  1343. data/test/performance/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  1344. data/test/performance/config/tools/handbook_creator/templates/title.html.erb +1 -0
  1345. data/test/performance/config/tools/launcher/launcher_packets.txt +34 -0
  1346. data/test/performance/config/tools/launcher/launcher_threads.txt +83 -0
  1347. data/test/performance/config/tools/limits_monitor/README.txt +1 -0
  1348. data/test/performance/config/tools/opengl_builder/README.txt +1 -0
  1349. data/test/performance/config/tools/script_runner/script_runner.txt +3 -0
  1350. data/test/performance/config/tools/table_manager/ConfigTables_def.txt +8 -0
  1351. data/test/performance/config/tools/table_manager/ExampleTableDefinition.txt +24 -0
  1352. data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -0
  1353. data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -0
  1354. data/test/performance/config/tools/table_manager/PPSSelectionTable_def.txt +8 -0
  1355. data/test/performance/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -0
  1356. data/test/performance/config/tools/test_runner/test_runner.txt +17 -0
  1357. data/test/performance/config/tools/tlm_extractor/tlm_extractor.txt +13 -0
  1358. data/test/performance/config/tools/tlm_extractor/tlm_extractor2.txt +2 -0
  1359. data/test/performance/config/tools/tlm_extractor/tlm_extractor3.txt +2 -0
  1360. data/test/performance/config/tools/tlm_extractor/tlm_extractor4.txt +2 -0
  1361. data/test/performance/config/tools/tlm_grapher/README.txt +1 -0
  1362. data/test/performance/config/tools/tlm_grapher/tlm_grapher.txt +204 -0
  1363. data/test/performance/config/tools/tlm_viewer/tlm_viewer.txt +13 -0
  1364. data/test/performance/lib/packet_target.rb +126 -0
  1365. data/test/performance/lib/thread_target.rb +120 -0
  1366. data/test/performance/lib/user_version.rb +3 -0
  1367. data/test/performance/outputs/handbooks/README.txt +1 -0
  1368. data/test/performance/outputs/logs/README.txt +1 -0
  1369. data/test/performance/outputs/saved_config/README.txt +1 -0
  1370. data/test/performance/outputs/tables/README.txt +1 -0
  1371. data/test/performance/outputs/tmp/README.txt +1 -0
  1372. data/test/performance/procedures/checks.rb +11 -0
  1373. data/test/performance/procedures/clear_util.rb +7 -0
  1374. data/test/performance/procedures/collect.rb +18 -0
  1375. data/test/performance/procedures/collect_util.rb +14 -0
  1376. data/test/performance/procedures/cosmos_api_test.rb +293 -0
  1377. data/test/performance/procedures/disconnect.rb +29 -0
  1378. data/test/performance/procedures/example_test.rb +182 -0
  1379. data/test/performance/procedures/plot_test.rb +8 -0
  1380. data/test/performance/procedures/procedure.rb +3 -0
  1381. data/test/performance/procedures/run_example_test.rb +3 -0
  1382. data/test/performance/procedures/test.rb +51 -0
  1383. data/test/performance/tools/CmdExtractor +14 -0
  1384. data/test/performance/tools/CmdExtractor.bat +59 -0
  1385. data/test/performance/tools/CmdSender +14 -0
  1386. data/test/performance/tools/CmdSender.bat +59 -0
  1387. data/test/performance/tools/CmdTlmServer +16 -0
  1388. data/test/performance/tools/CmdTlmServer.bat +59 -0
  1389. data/test/performance/tools/CmdTlmServerMemProf +20 -0
  1390. data/test/performance/tools/CmdTlmServerMemProf.bat +59 -0
  1391. data/test/performance/tools/DataViewer +14 -0
  1392. data/test/performance/tools/DataViewer.bat +59 -0
  1393. data/test/performance/tools/HandbookCreator +14 -0
  1394. data/test/performance/tools/HandbookCreator.bat +61 -0
  1395. data/test/performance/tools/Launcher +14 -0
  1396. data/test/performance/tools/Launcher.bat +59 -0
  1397. data/test/performance/tools/LimitsMonitor +14 -0
  1398. data/test/performance/tools/LimitsMonitor.bat +59 -0
  1399. data/test/performance/tools/OpenGLBuilder +14 -0
  1400. data/test/performance/tools/OpenGLBuilder.bat +59 -0
  1401. data/test/performance/tools/PacketTarget +14 -0
  1402. data/test/performance/tools/PacketTarget.bat +59 -0
  1403. data/test/performance/tools/PacketViewer +14 -0
  1404. data/test/performance/tools/PacketViewer.bat +59 -0
  1405. data/test/performance/tools/Replay +14 -0
  1406. data/test/performance/tools/Replay.bat +59 -0
  1407. data/test/performance/tools/ScpiTarget +14 -0
  1408. data/test/performance/tools/ScpiTarget.bat +59 -0
  1409. data/test/performance/tools/ScriptRunner +14 -0
  1410. data/test/performance/tools/ScriptRunner.bat +59 -0
  1411. data/test/performance/tools/TableManager +14 -0
  1412. data/test/performance/tools/TableManager.bat +59 -0
  1413. data/test/performance/tools/TestRunner +14 -0
  1414. data/test/performance/tools/TestRunner.bat +59 -0
  1415. data/test/performance/tools/ThreadTarget +14 -0
  1416. data/test/performance/tools/ThreadTarget.bat +59 -0
  1417. data/test/performance/tools/TlmExtractor +14 -0
  1418. data/test/performance/tools/TlmExtractor.bat +59 -0
  1419. data/test/performance/tools/TlmGrapher +14 -0
  1420. data/test/performance/tools/TlmGrapher.bat +59 -0
  1421. data/test/performance/tools/TlmGrapherMemProf +19 -0
  1422. data/test/performance/tools/TlmGrapherMemProf.bat +59 -0
  1423. data/test/performance/tools/TlmViewer +14 -0
  1424. data/test/performance/tools/TlmViewer.bat +59 -0
  1425. data/test/performance/tools/TlmViewerMemProf +19 -0
  1426. data/test/performance/tools/TlmViewerMemProf.bat +59 -0
  1427. data/test/performance/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
  1428. data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -0
  1429. data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -0
  1430. data/test/performance/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
  1431. data/test/performance/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
  1432. data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -0
  1433. data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -0
  1434. data/test/performance/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
  1435. data/test/performance/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
  1436. data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -0
  1437. data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -0
  1438. data/test/performance/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
  1439. data/test/performance/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
  1440. data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -0
  1441. data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -0
  1442. data/test/performance/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
  1443. data/test/performance/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
  1444. data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -0
  1445. data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -0
  1446. data/test/performance/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
  1447. data/test/performance/tools/mac/Launcher.app/Contents/Info.plist +38 -0
  1448. data/test/performance/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -0
  1449. data/test/performance/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -0
  1450. data/test/performance/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
  1451. data/test/performance/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
  1452. data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -0
  1453. data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -0
  1454. data/test/performance/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
  1455. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
  1456. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -0
  1457. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -0
  1458. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
  1459. data/test/performance/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
  1460. data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -0
  1461. data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -0
  1462. data/test/performance/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
  1463. data/test/performance/tools/mac/Replay.app/Contents/Info.plist +38 -0
  1464. data/test/performance/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -0
  1465. data/test/performance/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -0
  1466. data/test/performance/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
  1467. data/test/performance/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
  1468. data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -0
  1469. data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -0
  1470. data/test/performance/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
  1471. data/test/performance/tools/mac/TableManager.app/Contents/Info.plist +38 -0
  1472. data/test/performance/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -0
  1473. data/test/performance/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -0
  1474. data/test/performance/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
  1475. data/test/performance/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
  1476. data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -0
  1477. data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -0
  1478. data/test/performance/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
  1479. data/test/performance/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
  1480. data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -0
  1481. data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -0
  1482. data/test/performance/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
  1483. data/test/performance/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
  1484. data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -0
  1485. data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -0
  1486. data/test/performance/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
  1487. data/test/performance/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
  1488. data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -0
  1489. data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -0
  1490. data/test/performance/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
  1491. metadata +1964 -0
@@ -0,0 +1,292 @@
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 Lesser 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/ext/packet' if RUBY_ENGINE == 'ruby' and !ENV['COSMOS_NO_EXT']
12
+
13
+ module Cosmos
14
+
15
+ # Maintains knowledge of an item in a Structure. Multiple StructureItems
16
+ # compose a Structure.
17
+ class StructureItem
18
+ include Comparable
19
+
20
+ # Valid data types adds :DERIVED to those defined by BinaryAccessor
21
+ DATA_TYPES = BinaryAccessor::DATA_TYPES << :DERIVED
22
+
23
+ # Name is used by higher level classes to access the StructureItem.
24
+ # @return [String] Name of the item
25
+ attr_reader :name
26
+
27
+ # Indicates where in the binary buffer the StructureItem exists.
28
+ # @return [Integer] 0 based bit offset
29
+ attr_reader :bit_offset
30
+
31
+ # The number of bits which represent this StructureItem in the binary buffer.
32
+ # @return [Integer] Size in bits
33
+ attr_reader :bit_size
34
+
35
+ # The data type is what kind of data this StructureItem
36
+ # represents when extracted from the binary buffer. :INT and :UINT are
37
+ # turned into Integers (Ruby Fixnum). :FLOAT are turned into floating point
38
+ # numbers (Ruby Float). :STRING is turned into an ASCII string (Ruby
39
+ # String). :BLOCK is turned into a binary buffer (Ruby String). :DERIVED is
40
+ # interpreted by the subclass and can result in any type.
41
+ # @return [Symbol] {DATA_TYPES}
42
+ attr_reader :data_type
43
+
44
+ # Used to interpret how to read the item from the binary data buffer.
45
+ # @return [Symbol] {BinaryAccessor::ENDIANNESS}
46
+ attr_reader :endianness
47
+
48
+ # The total number of bits in the binary buffer that create the array.
49
+ # The array size can be set to nil to indicate the StructureItem is
50
+ # not represented as an array. For example, if the bit_size is 8 bits,
51
+ # an array_size of 16 would result in two 8 bit items.
52
+ # @return [Integer, nil] Array size of the item in bits
53
+ attr_reader :array_size
54
+
55
+ # How to handle overflow for :INT, :UINT, :STRING, and :BLOCK data types
56
+ # Note: Has no meaning for :FLOAT data types
57
+ # @return [Symbol] {BinaryAccessor::OVERFLOW_TYPES}
58
+ attr_reader :overflow
59
+
60
+ # A large buffer size in bits (1 Megabyte)
61
+ LARGE_BUFFER_SIZE_BITS = 1024 * 1024 * 8
62
+
63
+ # Create a StructureItem by setting all the attributes. It
64
+ # calls all the setter routines to do the attribute verification and then
65
+ # verifies the overall integrity.
66
+ #
67
+ # @param name [String] The item name
68
+ # @param bit_offset [Integer] Offset to the item starting at 0
69
+ # @param bit_size [Integer] Size of the items in bits
70
+ # @param data_type [Symbol] {DATA_TYPES}
71
+ # @param endianness [Symbol] {BinaryAccessor::ENDIANNESS}
72
+ # @param array_size [Integer, nil] Size of the array item in bits. For
73
+ # example, if the bit_size is 8, an array_size of 16 holds two values.
74
+ def initialize(name, bit_offset, bit_size, data_type, endianness, array_size = nil, overflow = :ERROR)
75
+ @structure_item_constructed = false
76
+ # Assignment order matters due to verifications!
77
+ self.name = name
78
+ self.endianness = endianness
79
+ self.data_type = data_type
80
+ self.bit_offset = bit_offset
81
+ self.bit_size = bit_size
82
+ self.array_size = array_size
83
+ self.overflow = overflow
84
+ @structure_item_constructed = true
85
+ verify_overall()
86
+ end
87
+
88
+ def name=(name)
89
+ raise ArgumentError, "name must be a String but is a #{name.class}" unless String === name
90
+ raise ArgumentError, "name must contain at least one character" if name.empty?
91
+
92
+ @name = name.upcase.clone.freeze
93
+ verify_overall() if @structure_item_constructed
94
+ end
95
+
96
+ def endianness=(endianness)
97
+ raise ArgumentError, "#{@name}: endianness must be a Symbol" unless Symbol === endianness
98
+ unless BinaryAccessor::ENDIANNESS.include? endianness
99
+ raise ArgumentError, "#{@name}: unknown endianness: #{endianness} - Must be :BIG_ENDIAN or :LITTLE_ENDIAN"
100
+ end
101
+
102
+ @endianness = endianness
103
+ verify_overall() if @structure_item_constructed
104
+ end
105
+
106
+ def bit_offset=(bit_offset)
107
+ if 0.class == Integer
108
+ # Ruby version >= 2.4.0
109
+ raise ArgumentError, "#{@name}: bit_offset must be an Integer" unless Integer === bit_offset
110
+ else
111
+ # Ruby version < 2.4.0
112
+ raise ArgumentError, "#{@name}: bit_offset must be a Fixnum" unless Fixnum === bit_offset
113
+ end
114
+
115
+ byte_aligned = ((bit_offset % 8) == 0)
116
+ if (@data_type == :FLOAT or @data_type == :STRING or @data_type == :BLOCK) and !byte_aligned
117
+ raise ArgumentError, "#{@name}: bit_offset for :FLOAT, :STRING, and :BLOCK items must be byte aligned"
118
+ end
119
+ if @data_type == :DERIVED and bit_offset != 0
120
+ raise ArgumentError, "#{@name}: DERIVED items must have bit_offset of zero"
121
+ end
122
+
123
+ @bit_offset = bit_offset
124
+ verify_overall() if @structure_item_constructed
125
+ end
126
+
127
+ def bit_size=(bit_size)
128
+ if 0.class == Integer
129
+ # Ruby version >= 2.4.0
130
+ raise ArgumentError, "#{name}: bit_size must be an Integer" unless Integer === bit_size
131
+ else
132
+ # Ruby version < 2.4.0
133
+ raise ArgumentError, "#{name}: bit_size must be a Fixnum" unless Fixnum === bit_size
134
+ end
135
+ byte_multiple = ((bit_size % 8) == 0)
136
+ if bit_size <= 0 and (@data_type == :INT or @data_type == :UINT or @data_type == :FLOAT)
137
+ raise ArgumentError, "#{@name}: bit_size cannot be negative or zero for :INT, :UINT, and :FLOAT items: #{bit_size}"
138
+ end
139
+ raise ArgumentError, "#{@name}: bit_size for STRING and BLOCK items must be byte multiples" if (@data_type == :STRING or @data_type == :BLOCK) and !byte_multiple
140
+ if @data_type == :FLOAT and bit_size != 32 and bit_size != 64
141
+ raise ArgumentError, "#{@name}: bit_size for FLOAT items must be 32 or 64. Given: #{bit_size}"
142
+ end
143
+ if @data_type == :DERIVED and bit_size != 0
144
+ raise ArgumentError, "#{@name}: DERIVED items must have bit_size of zero"
145
+ end
146
+
147
+ @bit_size = bit_size
148
+ verify_overall() if @structure_item_constructed
149
+ end
150
+
151
+ def data_type=(data_type)
152
+ raise ArgumentError, "#{@name}: data_type must be a Symbol" unless Symbol === data_type
153
+ case data_type
154
+ when *DATA_TYPES
155
+ # Valid data_type
156
+ else
157
+ raise ArgumentError, "#{@name}: unknown data_type: #{data_type} - Must be :INT, :UINT, :FLOAT, :STRING, :BLOCK, or :DERIVED"
158
+ end
159
+
160
+ @data_type = data_type
161
+ verify_overall() if @structure_item_constructed
162
+ end
163
+
164
+ def array_size=(array_size)
165
+ if array_size
166
+ if 0.class == Integer
167
+ # Ruby version >= 2.4.0
168
+ raise ArgumentError, "#{@name}: array_size must be an Integer" unless Integer === array_size
169
+ else
170
+ # Ruby version < 2.4.0
171
+ raise ArgumentError, "#{@name}: array_size must be a Fixnum" unless Fixnum === array_size
172
+ end
173
+ raise ArgumentError, "#{@name}: array_size must be a multiple of bit_size" unless (@bit_size == 0 or (array_size % @bit_size == 0) or array_size < 0)
174
+ raise ArgumentError, "#{@name}: bit_size cannot be negative or zero for array items" if @bit_size <= 0
175
+ end
176
+ @array_size = array_size
177
+ verify_overall() if @structure_item_constructed
178
+ end
179
+
180
+ def overflow=(overflow)
181
+ raise ArgumentError, "#{@name}: overflow type must be a Symbol" unless Symbol === overflow
182
+ case overflow
183
+ when *BinaryAccessor::OVERFLOW_TYPES
184
+ # Valid overflow
185
+ else
186
+ raise ArgumentError, "#{@name}: unknown overflow type: #{overflow} - Must be :ERROR, :ERROR_ALLOW_HEX, :TRUNCATE, or :SATURATE"
187
+ end
188
+
189
+ @overflow = overflow
190
+ verify_overall() if @structure_item_constructed
191
+ end
192
+
193
+ if RUBY_ENGINE != 'ruby' or ENV['COSMOS_NO_EXT']
194
+ # Comparison Operator based on bit_offset. This means that StructureItems
195
+ # with different names or bit sizes are equal if they have the same bit
196
+ # offset.
197
+ def <=>(other_item)
198
+ other_bit_offset = other_item.bit_offset
199
+ other_bit_size = other_item.bit_size
200
+
201
+ # Handle same bit offset case
202
+ if (@bit_offset == 0) && (other_bit_offset == 0)
203
+ # Both bit_offsets are 0 so sort by bit_size
204
+ # This allows derived items with bit_size of 0 to be listed first
205
+ # Compare based on bit size
206
+ if @bit_size == other_bit_size
207
+ return 0
208
+ elsif @bit_size < other_bit_size
209
+ return -1
210
+ else
211
+ return 1
212
+ end
213
+ end
214
+
215
+ # Handle different bit offsets
216
+ if ((@bit_offset >= 0) && (other_bit_offset >= 0)) || ((@bit_offset < 0) && (other_bit_offset < 0))
217
+ # Both Have Same Sign
218
+ if @bit_offset == other_bit_offset
219
+ return 0
220
+ elsif @bit_offset < other_bit_offset
221
+ return -1
222
+ else
223
+ return 1
224
+ end
225
+ else
226
+ # Different Signs
227
+ if @bit_offset == other_bit_offset
228
+ return 0
229
+ elsif @bit_offset < other_bit_offset
230
+ return 1
231
+ else
232
+ return -1
233
+ end
234
+ end
235
+ end
236
+ end
237
+
238
+ # Make a light weight clone of this item
239
+ def clone
240
+ item = super()
241
+ item.name = self.name.clone if self.name
242
+ item
243
+ end
244
+ alias dup clone
245
+
246
+ def to_hash
247
+ hash = {}
248
+ hash['name'] = self.name
249
+ hash['bit_offset'] = self.bit_offset
250
+ hash['bit_size'] = self.bit_size
251
+ hash['data_type'] = self.data_type
252
+ hash['endianness'] = self.endianness
253
+ hash['array_size'] = self.array_size
254
+ hash['overflow'] = self.overflow
255
+ hash
256
+ end
257
+
258
+ protected
259
+
260
+ # Verifies overall integrity of the StructureItem by checking for correct
261
+ # LITTLE_ENDIAN bit fields
262
+ def verify_overall
263
+ # Verify negative bit_offset conditions
264
+ if @bit_offset < 0
265
+ raise ArgumentError, "#{@name}: Can't define an item with negative bit_size #{@bit_size} and negative bit_offset #{@bit_offset}" if @bit_size < 0
266
+ raise ArgumentError, "#{@name}: Can't define an item with negative array_size #{@array_size} and negative bit_offset #{@bit_offset}" if @array_size and @array_size < 0
267
+ if @array_size and @array_size > @bit_offset.abs
268
+ raise ArgumentError, "#{@name}: Can't define an item with array_size #{@array_size} greater than negative bit_offset #{@bit_offset}"
269
+ elsif @bit_size > @bit_offset.abs
270
+ raise ArgumentError, "#{@name}: Can't define an item with bit_size #{@bit_size} greater than negative bit_offset #{@bit_offset}"
271
+ end
272
+ else
273
+ # Check for byte alignment and byte multiple
274
+ byte_aligned = ((@bit_offset % 8) == 0)
275
+
276
+ # Verify little-endian bit fields
277
+ if @endianness == :LITTLE_ENDIAN and (@data_type == :INT or @data_type == :UINT) and !(byte_aligned and (@bit_size == 8 or @bit_size == 16 or @bit_size == 32 or @bit_size == 64))
278
+ # Bitoffset always refers to the most significant bit of a bitfield
279
+ num_bytes = (((@bit_offset % 8) + @bit_size - 1) / 8) + 1
280
+ upper_bound = @bit_offset / 8
281
+ lower_bound = upper_bound - num_bytes + 1
282
+
283
+ if lower_bound < 0
284
+ raise ArgumentError, "#{@name}: LITTLE_ENDIAN bitfield with bit_offset #{@bit_offset} and bit_size #{@bit_size} is invalid"
285
+ end
286
+ end
287
+ end
288
+ end
289
+
290
+ end # class StructureItem
291
+
292
+ end # module Cosmos
@@ -0,0 +1,444 @@
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/packets/packet_config'
12
+ require 'cosmos/ext/telemetry' if RUBY_ENGINE == 'ruby' and !ENV['COSMOS_NO_EXT']
13
+
14
+ module Cosmos
15
+
16
+ # Telemetry uses PacketConfig to parse the command and telemetry
17
+ # configuration files. It contains all the knowledge of which telemetry packets
18
+ # exist in the system and how to access them. This class is the API layer
19
+ # which other classes use to access telemetry.
20
+ #
21
+ # This should not be confused with the Api module which implements the JSON
22
+ # API that is used by tools when accessing the Server. The Api module always
23
+ # provides Ruby primatives where the Telemetry class can return actual
24
+ # Packet or PacketItem objects. While there are some overlapping methods between
25
+ # the two, these are separate interfaces into the system.
26
+ class Telemetry
27
+ attr_accessor :config
28
+
29
+ LATEST_PACKET_NAME = 'LATEST'.freeze
30
+
31
+ # @param config [PacketConfig] Packet configuration to use to access the
32
+ # telemetry
33
+ def initialize(config)
34
+ @config = config
35
+ end
36
+
37
+ # (see PacketConfig#warnings)
38
+ def warnings
39
+ return @config.warnings
40
+ end
41
+
42
+ # @return [Array<String>] The telemetry target names (excluding UNKNOWN)
43
+ def target_names
44
+ result = @config.telemetry.keys.sort
45
+ result.delete('UNKNOWN'.freeze)
46
+ return result
47
+ end
48
+
49
+ if RUBY_ENGINE != 'ruby' or ENV['COSMOS_NO_EXT']
50
+ # @param target_name [String] The target name
51
+ # @return [Hash<packet_name=>Packet>] Hash of the telemetry packets for the given
52
+ # target name keyed by the packet name
53
+ def packets(target_name)
54
+ upcase_target_name = target_name.to_s.upcase
55
+ target_packets = @config.telemetry[upcase_target_name]
56
+ raise "Telemetry target '#{upcase_target_name}' does not exist" unless target_packets
57
+ target_packets
58
+ end
59
+
60
+ # @param target_name [String] The target name
61
+ # @param packet_name [String] The packet name. Must be a defined packet name
62
+ # and not 'LATEST'.
63
+ # @return [Packet] The telemetry packet for the given target and packet name
64
+ def packet(target_name, packet_name)
65
+ target_packets = packets(target_name)
66
+ upcase_packet_name = packet_name.to_s.upcase
67
+ packet = target_packets[upcase_packet_name]
68
+ unless packet
69
+ upcase_target_name = target_name.to_s.upcase
70
+ raise "Telemetry packet '#{upcase_target_name} #{upcase_packet_name}' does not exist"
71
+ end
72
+ packet
73
+ end
74
+
75
+ # @param target_name (see #packet)
76
+ # @param packet_name [String] The packet name. 'LATEST' can also be given
77
+ # to specify the last received (or defined if no packets have been
78
+ # received) packet within the given target that contains the
79
+ # item_name.
80
+ # @param item_name [String] The item name
81
+ # @return [Packet, PacketItem] The packet and the packet item
82
+ def packet_and_item(target_name, packet_name, item_name)
83
+ upcase_packet_name = packet_name.to_s.upcase
84
+ if upcase_packet_name == "LATEST".freeze
85
+ return_packet = newest_packet(target_name, item_name)
86
+ else
87
+ return_packet = packet(target_name, packet_name)
88
+ end
89
+ item = return_packet.get_item(item_name)
90
+ return [return_packet, item]
91
+ end
92
+
93
+ # Return a telemetry value from a packet.
94
+ #
95
+ # @param target_name (see #packet_and_item)
96
+ # @param packet_name (see #packet_and_item)
97
+ # @param item_name (see #packet_and_item)
98
+ # @param value_type [Symbol] How to convert the item before returning.
99
+ # Must be one of {Packet::VALUE_TYPES}
100
+ # @return The value. :FORMATTED and :WITH_UNITS values are always returned
101
+ # as Strings. :RAW values will match their data_type. :CONVERTED values
102
+ # can be any type.
103
+ def value(target_name, packet_name, item_name, value_type = :CONVERTED)
104
+ packet, _ = packet_and_item(target_name, packet_name, item_name) # Handles LATEST
105
+ return packet.read(item_name, value_type)
106
+ end
107
+
108
+ # Reads the specified list of items and returns their values and limits
109
+ # state.
110
+ #
111
+ # @param item_array [Array<Array(String String String)>] An array
112
+ # consisting of [target name, packet name, item name]
113
+ # @param value_types [Symbol|Array<Symbol>] How to convert the items before
114
+ # returning. A single symbol of {Packet::VALUE_TYPES}
115
+ # can be passed which will convert all items the same way. Or
116
+ # an array of symbols can be passed to control how each item is
117
+ # converted.
118
+ # @return [Array, Array, Array] The first array contains the item values and the
119
+ # second their limits state, and the third their limits settings which includes
120
+ # the red, yellow, and green (if given) limits values.
121
+ def values_and_limits_states(item_array, value_types = :CONVERTED)
122
+ items = []
123
+
124
+ # Verify item_array is a nested array
125
+ raise(ArgumentError, "item_array must be a nested array consisting of [[tgt,pkt,item],[tgt,pkt,item],...]") unless Array === item_array[0]
126
+
127
+ states = []
128
+ settings = []
129
+ limits_set = System.limits_set
130
+
131
+ raise(ArgumentError, "Passed #{item_array.length} items but only #{value_types.length} value types") if (Array === value_types) and item_array.length != value_types.length
132
+
133
+ value_type = value_types.intern unless Array === value_types
134
+ item_array.length.times do |index|
135
+ entry = item_array[index]
136
+ target_name = entry[0]
137
+ packet_name = entry[1]
138
+ item_name = entry[2]
139
+ value_type = value_types[index].intern if Array === value_types
140
+
141
+ packet, item = packet_and_item(target_name, packet_name, item_name) # Handles LATEST
142
+ items << packet.read(item_name, value_type)
143
+ limits = item.limits
144
+ states << limits.state
145
+ limits_values = limits.values
146
+ if limits_values
147
+ limits_settings = limits_values[limits_set]
148
+ else
149
+ limits_settings = nil
150
+ end
151
+ settings << limits_settings
152
+ end
153
+
154
+ return [items, states, settings]
155
+ end
156
+ end
157
+
158
+ # @param target_name (see #packet)
159
+ # @param packet_name (see #packet)
160
+ # @return [Array<PacketItem>] The telemetry items for the given target and packet name
161
+ def items(target_name, packet_name)
162
+ return packet(target_name, packet_name).sorted_items
163
+ end
164
+
165
+ # @param target_name (see #packet)
166
+ # @param packet_name (see #packet) The packet name. LATEST is supported.
167
+ # @return [Array<PacketItem>] The telemetry item names for the given target and packet name
168
+ def item_names(target_name, packet_name)
169
+ if LATEST_PACKET_NAME.casecmp(packet_name).zero?
170
+ target_upcase = target_name.to_s.upcase
171
+ target_latest_data = @config.latest_data[target_upcase]
172
+ raise "Telemetry Target '#{target_upcase}' does not exist" unless target_latest_data
173
+ item_names = target_latest_data.keys
174
+ else
175
+ tlm_packet = packet(target_name, packet_name)
176
+ item_names = []
177
+ tlm_packet.sorted_items.each {|item| item_names << item.name}
178
+ end
179
+ item_names
180
+ end
181
+
182
+ # Set a telemetry value in a packet.
183
+ #
184
+ # @param target_name (see #packet_and_item)
185
+ # @param packet_name (see #packet_and_item)
186
+ # @param item_name (see #packet_and_item)
187
+ # @param value The value to set in the packet
188
+ # @param value_type (see #tlm)
189
+ def set_value(target_name, packet_name, item_name, value, value_type = :CONVERTED)
190
+ packet, _ = packet_and_item(target_name, packet_name, item_name)
191
+ packet.write(item_name, value, value_type)
192
+ end
193
+
194
+ # @param target_name (see #packet_and_item)
195
+ # @param item_name (see #packet_and_item)
196
+ # @return [Array<Packet>] The latest (most recently arrived) packets with
197
+ # the specified target and item.
198
+ def latest_packets(target_name, item_name)
199
+ target_upcase = target_name.to_s.upcase
200
+ item_upcase = item_name.to_s.upcase
201
+ target_latest_data = @config.latest_data[target_upcase]
202
+ raise "Telemetry target '#{target_upcase}' does not exist" unless target_latest_data
203
+ packets = @config.latest_data[target_upcase][item_upcase]
204
+ raise "Telemetry item '#{target_upcase} #{LATEST_PACKET_NAME} #{item_upcase}' does not exist" unless packets
205
+ return packets
206
+ end
207
+
208
+ # @param target_name (see #packet_and_item)
209
+ # @param item_name (see #packet_and_item)
210
+ # @return [Packet] The packet with the most recent timestamp that contains
211
+ # the specified target and item.
212
+ def newest_packet(target_name, item_name)
213
+ # Handle LATEST_PACKET_NAME - Lookup packets for this target/item
214
+ packets = latest_packets(target_name, item_name)
215
+
216
+ # Find packet with newest timestamp
217
+ newest_packet = nil
218
+ newest_received_time = nil
219
+ packets.each do |packet|
220
+ received_time = packet.received_time
221
+ if newest_received_time
222
+ # See if the received time from this packet is newer.
223
+ # Having the >= makes this method return the last defined packet
224
+ # whether the timestamps are both nil or both equal.
225
+ if received_time and received_time >= newest_received_time
226
+ newest_packet = packet
227
+ newest_received_time = newest_packet.received_time
228
+ end
229
+ else
230
+ # No received time yet so take this packet
231
+ newest_packet = packet
232
+ newest_received_time = newest_packet.received_time
233
+ end
234
+ end
235
+ return newest_packet
236
+ end
237
+
238
+ # Identifies an unknown buffer of data as a defined packet and sets the
239
+ # packet's data to the given buffer. Identifying a packet uses the fields
240
+ # marked as ID_ITEM to identify if the buffer passed represents the
241
+ # packet defined. Incorrectly sized buffers are still processed but an
242
+ # error is logged.
243
+ #
244
+ # Note: This affects all subsequent requests for the packet (for example
245
+ # using packet) which is why the method is marked with a bang!
246
+ #
247
+ # @param packet_data [String] The binary packet data buffer
248
+ # @param target_names [Array<String>] List of target names to limit the search. The
249
+ # default value of nil means to search all known targets.
250
+ # @return [Packet] The identified packet with its data set to the given
251
+ # packet_data buffer. Returns nil if no packet could be identified.
252
+ def identify!(packet_data, target_names = nil)
253
+ identified_packet = identify(packet_data, target_names)
254
+ identified_packet.buffer = packet_data if identified_packet
255
+ return identified_packet
256
+ end
257
+
258
+ # Finds a packet from the Current Value Table that matches the given data
259
+ # and returns it. Does not fill the packets buffer. Use identify! to update the CVT.
260
+ #
261
+ # @param packet_data [String] The binary packet data buffer
262
+ # @param target_names [Array<String>] List of target names to limit the search. The
263
+ # default value of nil means to search all known targets.
264
+ # @return [Packet] The identified packet, Returns nil if no packet could be identified.
265
+ def identify(packet_data, target_names = nil)
266
+ target_names = target_names() unless target_names
267
+
268
+ target_names.each do |target_name|
269
+ target_packets = nil
270
+ begin
271
+ target_packets = packets(target_name)
272
+ rescue RuntimeError
273
+ # No telemetry for this target
274
+ next
275
+ end
276
+
277
+ # Iterate through the packets and see if any represent the buffer
278
+ target_packets.each do |packet_name, packet|
279
+ return packet if packet.identify?(packet_data)
280
+ end
281
+ end
282
+
283
+ return nil
284
+ end
285
+
286
+ def identify_and_define_packet(packet, target_names = nil)
287
+ if !packet.identified?
288
+ identified_packet = identify(packet.buffer(false), target_names)
289
+ return nil unless identified_packet
290
+ identified_packet = identified_packet.clone
291
+ identified_packet.buffer = packet.buffer
292
+ identified_packet.received_time = packet.received_time
293
+ return identified_packet
294
+ end
295
+
296
+ if !packet.defined?
297
+ begin
298
+ identified_packet = self.packet(packet.target_name, packet.packet_name)
299
+ rescue RuntimeError
300
+ return nil
301
+ end
302
+ identified_packet = identified_packet.clone
303
+ identified_packet.buffer = packet.buffer
304
+ identified_packet.received_time = packet.received_time
305
+ return identified_packet
306
+ end
307
+
308
+ return packet
309
+ end
310
+
311
+ # Updates the specified packet with the given packet data. Raises an error
312
+ # if the packet could not be found.
313
+ #
314
+ # Note: This affects all subsequent requests for the packet which is why
315
+ # the method is marked with a bang!
316
+ #
317
+ # @param target_name (see #packet)
318
+ # @param packet_name (see #packet)
319
+ # @param packet_data (see #identify_tlm!)
320
+ # @return [Packet] The packet with its data set to the given packet_data
321
+ # buffer.
322
+ def update!(target_name, packet_name, packet_data)
323
+ identified_packet = packet(target_name, packet_name)
324
+ identified_packet.buffer = packet_data
325
+ return identified_packet
326
+ end
327
+
328
+ # Assigns a limits change callback to all telemetry packets
329
+ #
330
+ # @param limits_change_callback
331
+ def limits_change_callback=(limits_change_callback)
332
+ @config.telemetry.each do |target_name, packets|
333
+ packets.each do |packet_name, packet|
334
+ packet.limits_change_callback = limits_change_callback
335
+ end
336
+ end
337
+ end
338
+
339
+ # Iterates through all the telemetry packets and marks them stale if they
340
+ # haven't been received for over the System.staleness_seconds value.
341
+ #
342
+ # @return [Array(Packet)] Array of the stale packets
343
+ def check_stale
344
+ stale = []
345
+ time = Time.now.sys
346
+ @config.telemetry.each do |target_name, target_packets|
347
+ target_packets.each do |packet_name, packet|
348
+ if packet.received_time and (!packet.stale) and (time - packet.received_time > System.staleness_seconds)
349
+ packet.set_stale
350
+ stale << packet
351
+ end
352
+ end
353
+ end
354
+ stale
355
+ end
356
+
357
+ # @param with_limits_only [Boolean] Return only the stale packets
358
+ # that have limits items and thus affect the overall limits
359
+ # state of the system
360
+ # @param target [String] Target name or nil for all targets
361
+ # @return [Array(Packet)] Array of the stale packets
362
+ def stale(with_limits_only = false, target = nil)
363
+ if target && !target_names.include?(target)
364
+ raise "Telemetry target '#{target.upcase}' does not exist"
365
+ end
366
+ stale = []
367
+ @config.telemetry.each do |target_name, target_packets|
368
+ next if (target && target != target_name)
369
+ next if target_name == 'UNKNOWN'
370
+ target_packets.each do |packet_name, packet|
371
+ if packet.stale
372
+ next if (with_limits_only && packet.limits_items.empty?)
373
+ stale << packet
374
+ end
375
+ end
376
+ end
377
+ stale
378
+ end
379
+
380
+ # Clears the received_count value on every packet in every target
381
+ def clear_counters
382
+ @config.telemetry.each do |target_name, target_packets|
383
+ target_packets.each do |packet_name, packet|
384
+ packet.received_count = 0
385
+ end
386
+ end
387
+ end
388
+
389
+ # Resets metadata on every packet in every target
390
+ def reset
391
+ @config.telemetry.each do |target_name, target_packets|
392
+ target_packets.each do |packet_name, packet|
393
+ packet.reset
394
+ end
395
+ end
396
+ end
397
+
398
+ # Returns the first non-hidden packet
399
+ def first_non_hidden
400
+ @config.telemetry.each do |target_name, target_packets|
401
+ next if target_name == 'UNKNOWN'
402
+ target_packets.each do |packet_name, packet|
403
+ return packet unless packet.hidden
404
+ end
405
+ end
406
+ nil
407
+ end
408
+
409
+ # Returns an array with a "TARGET_NAME PACKET_NAME ITEM_NAME" string for every item in the system
410
+ def all_item_strings(include_hidden = false, splash = nil)
411
+ strings = []
412
+ tnames = target_names()
413
+ total = tnames.length.to_f
414
+ tnames.each_with_index do |target_name, index|
415
+ if splash
416
+ splash.message = "Processing #{target_name} telemetry"
417
+ splash.progress = index / total
418
+ end
419
+
420
+ ignored_items = System.targets[target_name].ignored_items
421
+
422
+ packets(target_name).each do |packet_name, packet|
423
+ # We don't audit against hidden or disabled packets
424
+ next if !include_hidden and (packet.hidden || packet.disabled)
425
+ packet.items.each_key do |item_name|
426
+ # Skip ignored items
427
+ next if !include_hidden and ignored_items.include? item_name
428
+ strings << "#{target_name} #{packet_name} #{item_name}"
429
+ end
430
+ end
431
+ end
432
+ strings
433
+ end
434
+
435
+ # @return [Hash{String=>Hash{String=>Packet}}] Hash of all the telemetry
436
+ # packets keyed by the target name. The value is another hash keyed by the
437
+ # packet name returning the packet.
438
+ def all
439
+ @config.telemetry
440
+ end
441
+
442
+ end # class Telemetry
443
+
444
+ end # module Cosmos