cosmos 3.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (912) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +48 -48
  4. data/.travis.yml +7 -7
  5. data/CONTRIBUTING.txt +50 -50
  6. data/Gemfile +6 -6
  7. data/Guardfile +27 -27
  8. data/LICENSE.txt +879 -879
  9. data/Manifest.txt +1116 -1114
  10. data/README.md +109 -107
  11. data/Rakefile +214 -214
  12. data/autohotkey/config/data/diamond.STL +57 -57
  13. data/autohotkey/config/system/system.txt +34 -34
  14. data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
  15. data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
  16. data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
  17. data/autohotkey/config/targets/COSMOS/target.txt +5 -5
  18. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
  19. data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
  20. data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -5
  21. data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -30
  22. data/autohotkey/config/targets/INST/lib/sim_inst.rb +305 -294
  23. data/autohotkey/config/targets/INST/screens/adcs.txt +46 -46
  24. data/autohotkey/config/targets/INST/screens/array.txt +7 -7
  25. data/autohotkey/config/targets/INST/screens/block.txt +8 -8
  26. data/autohotkey/config/targets/INST/screens/commanding.txt +30 -30
  27. data/autohotkey/config/targets/INST/screens/graphs.txt +14 -14
  28. data/autohotkey/config/targets/INST/screens/ground.txt +25 -25
  29. data/autohotkey/config/targets/INST/screens/health_status.txt +33 -33
  30. data/autohotkey/config/targets/INST/screens/hs.txt +49 -49
  31. data/autohotkey/config/targets/INST/screens/image.txt +21 -21
  32. data/autohotkey/config/targets/INST/screens/latest.txt +23 -23
  33. data/autohotkey/config/targets/INST/screens/mech.txt +25 -25
  34. data/autohotkey/config/targets/INST/screens/other.txt +25 -25
  35. data/autohotkey/config/targets/INST/screens/params.txt +25 -25
  36. data/autohotkey/config/targets/INST/screens/tabs.txt +68 -68
  37. data/autohotkey/config/targets/INST/target.txt +26 -26
  38. data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
  39. data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -9
  40. data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
  41. data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -11
  42. data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -22
  43. data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -11
  44. data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -49
  45. data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
  46. data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
  47. data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -9
  48. data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -25
  49. data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
  50. data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -27
  51. data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -1
  52. data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
  53. data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
  54. data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
  55. data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
  56. data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
  57. data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -1
  58. data/autohotkey/config/tools/launcher/launcher.txt +38 -38
  59. data/autohotkey/config/tools/script_runner/script_runner.txt +3 -3
  60. data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +8 -8
  61. data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +19 -19
  62. data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +248 -248
  63. data/autohotkey/config/tools/test_runner/test_runner.txt +8 -8
  64. data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -11
  65. data/autohotkey/config/tools/test_runner/test_runner3.txt +6 -6
  66. data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
  67. data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
  68. data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -9
  69. data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -50
  70. data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -51
  71. data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -111
  72. data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -24
  73. data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -4
  74. data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -3
  75. data/autohotkey/lib/example_background_task.rb +42 -42
  76. data/autohotkey/lib/user_version.rb +3 -3
  77. data/autohotkey/procedures/clear_util.rb +7 -7
  78. data/autohotkey/procedures/collect.rb +18 -18
  79. data/autohotkey/procedures/collect_util.rb +14 -14
  80. data/autohotkey/procedures/example_test.rb +67 -67
  81. data/autohotkey/procedures/example_test2.rb +74 -74
  82. data/autohotkey/procedures/script_test.rb +17 -17
  83. data/autohotkey/procedures/syntax_error.rb +18 -18
  84. data/autohotkey/tools/CmdExtractorAHK +16 -16
  85. data/autohotkey/tools/CmdSender +14 -14
  86. data/autohotkey/tools/CmdSenderAHK +18 -18
  87. data/autohotkey/tools/CmdTlmServer +14 -14
  88. data/autohotkey/tools/CmdTlmServerAHK +28 -28
  89. data/autohotkey/tools/CmdTlmServerAHK2 +17 -17
  90. data/autohotkey/tools/DataViewer +14 -14
  91. data/autohotkey/tools/DataViewerAHK +17 -17
  92. data/autohotkey/tools/HandbookCreatorAHK +20 -20
  93. data/autohotkey/tools/LauncherAHK +17 -17
  94. data/autohotkey/tools/LimitsMonitorAHK +20 -20
  95. data/autohotkey/tools/OpenGLBuilderAHK +20 -20
  96. data/autohotkey/tools/PacketViewer +14 -14
  97. data/autohotkey/tools/PacketViewerAHK +18 -18
  98. data/autohotkey/tools/PacketViewerAHK2 +17 -17
  99. data/autohotkey/tools/Replay +14 -14
  100. data/autohotkey/tools/Replay.bat +59 -59
  101. data/autohotkey/tools/ReplayAHK +17 -17
  102. data/autohotkey/tools/ScriptRunner +14 -14
  103. data/autohotkey/tools/ScriptRunnerAHK +20 -20
  104. data/autohotkey/tools/ScriptRunnerAHK2 +17 -17
  105. data/autohotkey/tools/TableManager +14 -14
  106. data/autohotkey/tools/TableManagerAHK +30 -30
  107. data/autohotkey/tools/TestRunner +15 -15
  108. data/autohotkey/tools/TestRunnerAHK +17 -17
  109. data/autohotkey/tools/TestRunnerAHK2 +17 -17
  110. data/autohotkey/tools/TestRunnerAHK3 +17 -17
  111. data/autohotkey/tools/TestRunnerAHK4 +17 -17
  112. data/autohotkey/tools/TlmExtractor +15 -15
  113. data/autohotkey/tools/TlmExtractorAHK +19 -19
  114. data/autohotkey/tools/TlmExtractorAHK2 +16 -16
  115. data/autohotkey/tools/TlmExtractorAHK3 +16 -16
  116. data/autohotkey/tools/TlmGrapher +14 -14
  117. data/autohotkey/tools/TlmGrapherAHK +19 -19
  118. data/autohotkey/tools/TlmGrapherAHK2 +23 -23
  119. data/autohotkey/tools/TlmGrapherAHK3 +17 -17
  120. data/autohotkey/tools/TlmGrapherAHK4 +17 -17
  121. data/autohotkey/tools/TlmViewer +14 -14
  122. data/autohotkey/tools/TlmViewerAHK +28 -28
  123. data/autohotkey/tools/TlmViewerAHK2 +18 -18
  124. data/autohotkey/tools/TlmViewerAHK3 +18 -18
  125. data/autohotkey/tools/TlmViewerAHK4 +18 -18
  126. data/autohotkey/tools/TlmViewerAHK5 +18 -18
  127. data/autohotkey/tools/autohotkey.rb +37 -37
  128. data/autohotkey/tools/cmd_extractor.ahk +27 -27
  129. data/autohotkey/tools/cmd_sender.ahk +182 -162
  130. data/autohotkey/tools/cmd_tlm_server.ahk +89 -89
  131. data/autohotkey/tools/cmd_tlm_server2.ahk +45 -45
  132. data/autohotkey/tools/data_viewer.ahk +135 -135
  133. data/autohotkey/tools/handbook_creator.ahk +23 -23
  134. data/autohotkey/tools/launcher.ahk +41 -41
  135. data/autohotkey/tools/limits_monitor.ahk +70 -70
  136. data/autohotkey/tools/open_gl_builder.ahk +134 -134
  137. data/autohotkey/tools/packet_viewer.ahk +143 -143
  138. data/autohotkey/tools/packet_viewer2.ahk +9 -9
  139. data/autohotkey/tools/replay.ahk +98 -98
  140. data/autohotkey/tools/script_runner.ahk +589 -589
  141. data/autohotkey/tools/script_runner2.ahk +34 -31
  142. data/autohotkey/tools/table_manager.ahk +220 -220
  143. data/autohotkey/tools/test_runner.ahk +262 -259
  144. data/autohotkey/tools/test_runner2.ahk +52 -52
  145. data/autohotkey/tools/test_runner3.ahk +13 -13
  146. data/autohotkey/tools/tlm_extractor.ahk +272 -272
  147. data/autohotkey/tools/tlm_grapher.ahk +642 -642
  148. data/autohotkey/tools/tlm_grapher2.ahk +115 -115
  149. data/autohotkey/tools/tlm_grapher3.ahk +24 -24
  150. data/autohotkey/tools/tlm_viewer.ahk +133 -133
  151. data/autohotkey/tools/tlm_viewer2.ahk +50 -49
  152. data/autohotkey/tools/tlm_viewer4.ahk +4 -4
  153. data/autohotkey/tools/tlm_viewer5.ahk +20 -20
  154. data/bin/cosmos +96 -96
  155. data/bin/cstol_converter +1166 -1166
  156. data/bin/rubysloc +85 -85
  157. data/cosmos.gemspec +98 -97
  158. data/data/about.txt +4 -4
  159. data/data/crc.txt +306 -305
  160. data/data/diamond.STL +57 -57
  161. data/data/legal.txt +9 -9
  162. data/demo/Gemfile +6 -6
  163. data/demo/Launcher +15 -15
  164. data/demo/Launcher.bat +59 -59
  165. data/demo/Rakefile +61 -61
  166. data/demo/config/data/crc.txt +222 -206
  167. data/demo/config/data/diamond.STL +57 -57
  168. data/demo/config/data/meta_init.txt +4 -4
  169. data/demo/config/system/system.txt +34 -34
  170. data/demo/config/system/system2.txt +33 -33
  171. data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
  172. data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
  173. data/demo/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
  174. data/demo/config/targets/COSMOS/screens/limits_change.txt +20 -20
  175. data/demo/config/targets/COSMOS/screens/version.txt +19 -19
  176. data/demo/config/targets/COSMOS/target.txt +11 -11
  177. data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -2
  178. data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +3 -3
  179. data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -6
  180. data/demo/config/targets/EXAMPLE/lib/example_interface.rb +22 -22
  181. data/demo/config/targets/EXAMPLE/target.txt +6 -6
  182. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
  183. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
  184. data/demo/config/targets/INST/cmd_tlm_server.txt +5 -5
  185. data/demo/config/targets/INST/lib/example_limits_response.rb +30 -30
  186. data/demo/config/targets/INST/lib/sim_inst.rb +305 -294
  187. data/demo/config/targets/INST/screens/adcs.txt +46 -46
  188. data/demo/config/targets/INST/screens/array.txt +15 -15
  189. data/demo/config/targets/INST/screens/block.txt +8 -8
  190. data/demo/config/targets/INST/screens/commanding.txt +30 -30
  191. data/demo/config/targets/INST/screens/graphs.txt +14 -14
  192. data/demo/config/targets/INST/screens/ground.txt +25 -25
  193. data/demo/config/targets/INST/screens/hs.txt +44 -44
  194. data/demo/config/targets/INST/screens/latest.txt +23 -23
  195. data/demo/config/targets/INST/screens/other.txt +29 -29
  196. data/demo/config/targets/INST/screens/tabs.txt +70 -70
  197. data/demo/config/targets/INST/target.txt +33 -33
  198. data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
  199. data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +13 -13
  200. data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
  201. data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -29
  202. data/demo/config/targets/SYSTEM/screens/status.txt +12 -12
  203. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +13 -12
  204. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -3
  205. data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -6
  206. data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +54 -48
  207. data/demo/config/targets/TEMPLATED/target.txt +6 -6
  208. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +33 -33
  209. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +29 -29
  210. data/demo/config/tools/data_viewer/data_viewer.txt +11 -11
  211. data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -66
  212. data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
  213. data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
  214. data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -9
  215. data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -25
  216. data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
  217. data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -27
  218. data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -1
  219. data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
  220. data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
  221. data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
  222. data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
  223. data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
  224. data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -1
  225. data/demo/config/tools/launcher/launcher.txt +45 -45
  226. data/demo/config/tools/launcher/launcher2.txt +45 -45
  227. data/demo/config/tools/script_runner/script_runner.txt +3 -3
  228. data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -8
  229. data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -24
  230. data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -25
  231. data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -25
  232. data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +8 -8
  233. data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -248
  234. data/demo/config/tools/test_runner/test_runner.txt +17 -17
  235. data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
  236. data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -2
  237. data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -2
  238. data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -2
  239. data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -41
  240. data/demo/lib/example_background_task.rb +57 -52
  241. data/demo/lib/example_target.rb +113 -108
  242. data/demo/lib/scpi_target.rb +74 -74
  243. data/demo/lib/user_version.rb +3 -3
  244. data/demo/procedures/checks.rb +11 -11
  245. data/demo/procedures/clear_util.rb +7 -7
  246. data/demo/procedures/collect.rb +18 -18
  247. data/demo/procedures/collect_util.rb +14 -14
  248. data/demo/procedures/cosmos_api_test.rb +293 -293
  249. data/demo/procedures/disconnect.rb +29 -29
  250. data/demo/procedures/example_test.rb +182 -182
  251. data/demo/procedures/plot_test.rb +8 -8
  252. data/demo/procedures/run_example_test.rb +3 -3
  253. data/demo/procedures/test.rb +51 -51
  254. data/demo/tools/CmdExtractor +15 -15
  255. data/demo/tools/CmdExtractor.bat +59 -59
  256. data/demo/tools/CmdSender +15 -15
  257. data/demo/tools/CmdSender.bat +59 -59
  258. data/demo/tools/CmdTlmServer +15 -15
  259. data/demo/tools/CmdTlmServer.bat +59 -59
  260. data/demo/tools/DataViewer +15 -15
  261. data/demo/tools/DataViewer.bat +59 -59
  262. data/demo/tools/ExampleTarget +15 -15
  263. data/demo/tools/ExampleTarget.bat +59 -59
  264. data/demo/tools/HandbookCreator +15 -15
  265. data/demo/tools/HandbookCreator.bat +61 -61
  266. data/demo/tools/Launcher +15 -15
  267. data/demo/tools/Launcher.bat +59 -59
  268. data/demo/tools/LimitsMonitor +15 -15
  269. data/demo/tools/LimitsMonitor.bat +59 -59
  270. data/demo/tools/OpenGLBuilder +15 -15
  271. data/demo/tools/OpenGLBuilder.bat +59 -59
  272. data/demo/tools/PacketViewer +15 -15
  273. data/demo/tools/PacketViewer.bat +59 -59
  274. data/demo/tools/Replay +15 -15
  275. data/demo/tools/Replay.bat +59 -59
  276. data/demo/tools/ScpiTarget +15 -15
  277. data/demo/tools/ScpiTarget.bat +59 -59
  278. data/demo/tools/ScriptRunner +15 -15
  279. data/demo/tools/ScriptRunner.bat +59 -59
  280. data/demo/tools/TableManager +15 -15
  281. data/demo/tools/TableManager.bat +59 -59
  282. data/demo/tools/TestRunner +15 -15
  283. data/demo/tools/TestRunner.bat +59 -59
  284. data/demo/tools/TlmExtractor +15 -15
  285. data/demo/tools/TlmExtractor.bat +59 -59
  286. data/demo/tools/TlmGrapher +15 -15
  287. data/demo/tools/TlmGrapher.bat +59 -59
  288. data/demo/tools/TlmViewer +15 -15
  289. data/demo/tools/TlmViewer.bat +59 -59
  290. data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
  291. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
  292. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
  293. data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
  294. data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
  295. data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
  296. data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
  297. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
  298. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
  299. data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
  300. data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
  301. data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
  302. data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
  303. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
  304. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
  305. data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -38
  306. data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
  307. data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
  308. data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
  309. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
  310. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
  311. data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
  312. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
  313. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
  314. data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
  315. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
  316. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
  317. data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -38
  318. data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
  319. data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
  320. data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
  321. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
  322. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
  323. data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -38
  324. data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
  325. data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
  326. data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
  327. data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
  328. data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
  329. data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
  330. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
  331. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
  332. data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
  333. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
  334. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
  335. data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
  336. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
  337. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
  338. data/ext/cosmos/ext/array/array.c +111 -111
  339. data/ext/cosmos/ext/array/extconf.rb +13 -13
  340. data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -167
  341. data/ext/cosmos/ext/buffered_file/extconf.rb +13 -13
  342. data/ext/cosmos/ext/config_parser/config_parser.c +237 -237
  343. data/ext/cosmos/ext/config_parser/extconf.rb +13 -13
  344. data/ext/cosmos/ext/cosmos_io/cosmos_io.c +117 -117
  345. data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -13
  346. data/ext/cosmos/ext/crc/crc.c +341 -341
  347. data/ext/cosmos/ext/crc/extconf.rb +12 -12
  348. data/ext/cosmos/ext/line_graph/extconf.rb +13 -13
  349. data/ext/cosmos/ext/line_graph/line_graph.c +501 -501
  350. data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +12 -12
  351. data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +261 -261
  352. data/ext/cosmos/ext/packet/extconf.rb +13 -13
  353. data/ext/cosmos/ext/packet/packet.c +339 -339
  354. data/ext/cosmos/ext/platform/extconf.rb +13 -13
  355. data/ext/cosmos/ext/platform/platform.c +81 -81
  356. data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -13
  357. data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +73 -73
  358. data/ext/cosmos/ext/string/extconf.rb +13 -13
  359. data/ext/cosmos/ext/string/string.c +49 -49
  360. data/ext/cosmos/ext/structure/structure.c +894 -894
  361. data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -13
  362. data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -51
  363. data/ext/cosmos/ext/telemetry/extconf.rb +13 -13
  364. data/ext/cosmos/ext/telemetry/telemetry.c +306 -306
  365. data/ext/mkrf_conf.rb +40 -40
  366. data/install/Gemfile +6 -6
  367. data/install/Launcher +14 -14
  368. data/install/Launcher.bat +59 -59
  369. data/install/Rakefile +61 -61
  370. data/install/config/data/crc.txt +134 -133
  371. data/install/config/system/system.txt +29 -29
  372. data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
  373. data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
  374. data/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
  375. data/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
  376. data/install/config/targets/COSMOS/screens/version.txt +19 -19
  377. data/install/config/targets/COSMOS/target.txt +8 -8
  378. data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
  379. data/install/config/tools/data_viewer/data_viewer.txt +3 -3
  380. data/install/config/tools/handbook_creator/handbook_creator.txt +49 -49
  381. data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
  382. data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
  383. data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -9
  384. data/install/config/tools/handbook_creator/templates/header.html.erb +25 -25
  385. data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
  386. data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -27
  387. data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -1
  388. data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
  389. data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
  390. data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
  391. data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
  392. data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
  393. data/install/config/tools/handbook_creator/templates/title.html.erb +1 -1
  394. data/install/config/tools/launcher/launcher.txt +39 -39
  395. data/install/config/tools/script_runner/script_runner.txt +3 -3
  396. data/install/config/tools/test_runner/test_runner.txt +8 -8
  397. data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
  398. data/install/lib/user_version.rb +3 -3
  399. data/install/tools/CmdExtractor +15 -15
  400. data/install/tools/CmdExtractor.bat +59 -59
  401. data/install/tools/CmdSender +15 -15
  402. data/install/tools/CmdSender.bat +59 -59
  403. data/install/tools/CmdTlmServer +15 -15
  404. data/install/tools/CmdTlmServer.bat +59 -59
  405. data/install/tools/DataViewer +15 -15
  406. data/install/tools/DataViewer.bat +59 -59
  407. data/install/tools/HandbookCreator +15 -15
  408. data/install/tools/HandbookCreator.bat +61 -61
  409. data/install/tools/Launcher +15 -15
  410. data/install/tools/Launcher.bat +59 -59
  411. data/install/tools/LimitsMonitor +15 -15
  412. data/install/tools/LimitsMonitor.bat +59 -59
  413. data/install/tools/OpenGLBuilder +15 -15
  414. data/install/tools/OpenGLBuilder.bat +59 -59
  415. data/install/tools/PacketViewer +15 -15
  416. data/install/tools/PacketViewer.bat +59 -59
  417. data/install/tools/Replay +15 -15
  418. data/install/tools/Replay.bat +59 -59
  419. data/install/tools/ScriptRunner +15 -15
  420. data/install/tools/ScriptRunner.bat +59 -59
  421. data/install/tools/TableManager +15 -15
  422. data/install/tools/TableManager.bat +59 -59
  423. data/install/tools/TestRunner +15 -15
  424. data/install/tools/TestRunner.bat +59 -59
  425. data/install/tools/TlmExtractor +15 -15
  426. data/install/tools/TlmExtractor.bat +59 -59
  427. data/install/tools/TlmGrapher +15 -15
  428. data/install/tools/TlmGrapher.bat +59 -59
  429. data/install/tools/TlmViewer +15 -15
  430. data/install/tools/TlmViewer.bat +59 -59
  431. data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
  432. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
  433. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
  434. data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
  435. data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
  436. data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
  437. data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
  438. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
  439. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
  440. data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
  441. data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
  442. data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
  443. data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
  444. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
  445. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
  446. data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -38
  447. data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
  448. data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
  449. data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
  450. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
  451. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
  452. data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
  453. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
  454. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
  455. data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
  456. data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
  457. data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
  458. data/install/tools/mac/Replay.app/Contents/Info.plist +38 -38
  459. data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
  460. data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
  461. data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
  462. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
  463. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
  464. data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -38
  465. data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
  466. data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
  467. data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
  468. data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
  469. data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
  470. data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
  471. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
  472. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
  473. data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
  474. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
  475. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
  476. data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
  477. data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
  478. data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
  479. data/lib/cosmos.rb +63 -63
  480. data/lib/cosmos/ccsds/ccsds_packet.rb +63 -63
  481. data/lib/cosmos/ccsds/ccsds_parser.rb +143 -143
  482. data/lib/cosmos/config/config_parser.rb +324 -324
  483. data/lib/cosmos/conversions.rb +13 -13
  484. data/lib/cosmos/conversions/conversion.rb +47 -47
  485. data/lib/cosmos/conversions/generic_conversion.rb +55 -55
  486. data/lib/cosmos/conversions/new_packet_log_conversion.rb +45 -45
  487. data/lib/cosmos/conversions/polynomial_conversion.rb +57 -57
  488. data/lib/cosmos/conversions/processor_conversion.rb +46 -46
  489. data/lib/cosmos/conversions/received_count_conversion.rb +33 -33
  490. data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -37
  491. data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -37
  492. data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +128 -128
  493. data/lib/cosmos/conversions/unix_time_conversion.rb +50 -50
  494. data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -44
  495. data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -44
  496. data/lib/cosmos/core_ext.rb +18 -18
  497. data/lib/cosmos/core_ext/array.rb +354 -354
  498. data/lib/cosmos/core_ext/class.rb +51 -51
  499. data/lib/cosmos/core_ext/cosmos_io.rb +29 -29
  500. data/lib/cosmos/core_ext/exception.rb +52 -52
  501. data/lib/cosmos/core_ext/file.rb +75 -75
  502. data/lib/cosmos/core_ext/hash.rb +28 -28
  503. data/lib/cosmos/core_ext/io.rb +75 -75
  504. data/lib/cosmos/core_ext/kernel.rb +38 -38
  505. data/lib/cosmos/core_ext/math.rb +119 -119
  506. data/lib/cosmos/core_ext/matrix.rb +146 -146
  507. data/lib/cosmos/core_ext/objectspace.rb +29 -29
  508. data/lib/cosmos/core_ext/range.rb +22 -22
  509. data/lib/cosmos/core_ext/socket.rb +32 -32
  510. data/lib/cosmos/core_ext/string.rb +310 -310
  511. data/lib/cosmos/core_ext/stringio.rb +24 -24
  512. data/lib/cosmos/core_ext/time.rb +446 -446
  513. data/lib/cosmos/gui/choosers/combobox_chooser.rb +130 -130
  514. data/lib/cosmos/gui/choosers/file_chooser.rb +68 -68
  515. data/lib/cosmos/gui/choosers/float_chooser.rb +82 -82
  516. data/lib/cosmos/gui/choosers/integer_chooser.rb +80 -80
  517. data/lib/cosmos/gui/choosers/string_chooser.rb +53 -53
  518. data/lib/cosmos/gui/choosers/telemetry_chooser.rb +317 -317
  519. data/lib/cosmos/gui/dialogs/about_dialog.rb +128 -128
  520. data/lib/cosmos/gui/dialogs/calendar_dialog.rb +136 -136
  521. data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +52 -52
  522. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +149 -149
  523. data/lib/cosmos/gui/dialogs/details_dialog.rb +174 -174
  524. data/lib/cosmos/gui/dialogs/exception_dialog.rb +97 -97
  525. data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +59 -59
  526. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +196 -196
  527. data/lib/cosmos/gui/dialogs/legal_dialog.rb +169 -168
  528. data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +118 -118
  529. data/lib/cosmos/gui/dialogs/progress_dialog.rb +270 -262
  530. data/lib/cosmos/gui/dialogs/pry_dialog.rb +165 -161
  531. data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +37 -37
  532. data/lib/cosmos/gui/dialogs/select_dialog.rb +54 -54
  533. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +131 -131
  534. data/lib/cosmos/gui/dialogs/splash.rb +113 -113
  535. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +206 -206
  536. data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +81 -81
  537. data/lib/cosmos/gui/line_graph/line_graph.rb +456 -456
  538. data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +34 -34
  539. data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +494 -494
  540. data/lib/cosmos/gui/line_graph/line_graph_popups.rb +116 -116
  541. data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +460 -460
  542. data/lib/cosmos/gui/line_graph/line_graph_script.rb +26 -26
  543. data/lib/cosmos/gui/line_graph/lines.rb +290 -290
  544. data/lib/cosmos/gui/line_graph/overview_graph.rb +459 -459
  545. data/lib/cosmos/gui/opengl/earth_model.rb +22 -22
  546. data/lib/cosmos/gui/opengl/gl_bounds.rb +67 -67
  547. data/lib/cosmos/gui/opengl/gl_light.rb +39 -39
  548. data/lib/cosmos/gui/opengl/gl_material.rb +29 -29
  549. data/lib/cosmos/gui/opengl/gl_scene.rb +72 -72
  550. data/lib/cosmos/gui/opengl/gl_shape.rb +146 -146
  551. data/lib/cosmos/gui/opengl/gl_viewer.rb +724 -712
  552. data/lib/cosmos/gui/opengl/gl_viewport.rb +35 -35
  553. data/lib/cosmos/gui/opengl/moon_model.rb +22 -22
  554. data/lib/cosmos/gui/opengl/opengl.rb +8 -8
  555. data/lib/cosmos/gui/opengl/stl_reader.rb +211 -211
  556. data/lib/cosmos/gui/opengl/stl_shape.rb +124 -124
  557. data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +202 -202
  558. data/lib/cosmos/gui/qt.rb +813 -786
  559. data/lib/cosmos/gui/qt_tool.rb +378 -373
  560. data/lib/cosmos/gui/text/completion.rb +381 -381
  561. data/lib/cosmos/gui/text/completion_line_edit.rb +30 -30
  562. data/lib/cosmos/gui/text/completion_text_edit.rb +179 -179
  563. data/lib/cosmos/gui/text/ruby_editor.rb +395 -395
  564. data/lib/cosmos/gui/utilities/screenshot.rb +25 -25
  565. data/lib/cosmos/gui/utilities/script_module_gui.rb +203 -203
  566. data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +161 -161
  567. data/lib/cosmos/gui/widgets/packet_log_frame.rb +305 -305
  568. data/lib/cosmos/gui/widgets/realtime_button_bar.rb +98 -98
  569. data/lib/cosmos/interfaces.rb +11 -11
  570. data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +153 -149
  571. data/lib/cosmos/interfaces/interface.rb +213 -213
  572. data/lib/cosmos/interfaces/linc_interface.rb +360 -360
  573. data/lib/cosmos/interfaces/serial_interface.rb +76 -76
  574. data/lib/cosmos/interfaces/simulated_target_interface.rb +129 -128
  575. data/lib/cosmos/interfaces/stream_interface.rb +156 -156
  576. data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -60
  577. data/lib/cosmos/interfaces/tcpip_server_interface.rb +154 -154
  578. data/lib/cosmos/interfaces/udp_interface.rb +173 -173
  579. data/lib/cosmos/io/buffered_file.rb +11 -11
  580. data/lib/cosmos/io/cosmos_snmp.rb +50 -50
  581. data/lib/cosmos/io/io_multiplexer.rb +89 -89
  582. data/lib/cosmos/io/json_drb.rb +344 -320
  583. data/lib/cosmos/io/json_drb_object.rb +137 -137
  584. data/lib/cosmos/io/json_rpc.rb +365 -365
  585. data/lib/cosmos/io/posix_serial_driver.rb +145 -145
  586. data/lib/cosmos/io/raw_logger.rb +174 -174
  587. data/lib/cosmos/io/raw_logger_pair.rb +71 -71
  588. data/lib/cosmos/io/serial_driver.rb +85 -85
  589. data/lib/cosmos/io/stderr.rb +36 -36
  590. data/lib/cosmos/io/stdout.rb +36 -36
  591. data/lib/cosmos/io/tcpip_server.rb +583 -532
  592. data/lib/cosmos/io/udp_sockets.rb +152 -152
  593. data/lib/cosmos/io/win32_serial_driver.rb +147 -147
  594. data/lib/cosmos/packet_logs.rb +6 -6
  595. data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +107 -107
  596. data/lib/cosmos/packet_logs/packet_log_reader.rb +441 -439
  597. data/lib/cosmos/packet_logs/packet_log_writer.rb +321 -309
  598. data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -30
  599. data/lib/cosmos/packets/binary_accessor.rb +921 -921
  600. data/lib/cosmos/packets/commands.rb +291 -291
  601. data/lib/cosmos/packets/limits.rb +263 -263
  602. data/lib/cosmos/packets/limits_response.rb +38 -38
  603. data/lib/cosmos/packets/packet.rb +714 -699
  604. data/lib/cosmos/packets/packet_config.rb +1034 -1034
  605. data/lib/cosmos/packets/packet_item.rb +317 -317
  606. data/lib/cosmos/packets/packet_item_limits.rb +128 -128
  607. data/lib/cosmos/packets/structure.rb +421 -386
  608. data/lib/cosmos/packets/structure_item.rb +233 -233
  609. data/lib/cosmos/packets/telemetry.rb +317 -317
  610. data/lib/cosmos/processors.rb +6 -6
  611. data/lib/cosmos/processors/new_packet_log_processor.rb +34 -34
  612. data/lib/cosmos/processors/processor.rb +71 -71
  613. data/lib/cosmos/processors/statistics_processor.rb +65 -65
  614. data/lib/cosmos/processors/watermark_processor.rb +44 -44
  615. data/lib/cosmos/script.rb +9 -9
  616. data/lib/cosmos/script/extract.rb +115 -115
  617. data/lib/cosmos/script/script.rb +1513 -1493
  618. data/lib/cosmos/streams/burst_stream_protocol.rb +25 -25
  619. data/lib/cosmos/streams/fixed_stream_protocol.rb +111 -111
  620. data/lib/cosmos/streams/length_stream_protocol.rb +140 -140
  621. data/lib/cosmos/streams/preidentified_stream_protocol.rb +118 -118
  622. data/lib/cosmos/streams/serial_stream.rb +152 -143
  623. data/lib/cosmos/streams/stream.rb +57 -57
  624. data/lib/cosmos/streams/stream_protocol.rb +369 -369
  625. data/lib/cosmos/streams/tcpip_client_stream.rb +77 -77
  626. data/lib/cosmos/streams/tcpip_socket_stream.rb +139 -139
  627. data/lib/cosmos/streams/template_stream_protocol.rb +140 -140
  628. data/lib/cosmos/streams/terminated_stream_protocol.rb +81 -81
  629. data/lib/cosmos/system.rb +4 -4
  630. data/lib/cosmos/system/system.rb +558 -558
  631. data/lib/cosmos/system/target.rb +178 -178
  632. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +254 -253
  633. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +716 -716
  634. data/lib/cosmos/tools/cmd_sender/cmd_sender_item_delegate.rb +77 -77
  635. data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -70
  636. data/lib/cosmos/tools/cmd_tlm_server/api.rb +936 -940
  637. data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +46 -46
  638. data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +67 -63
  639. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +511 -497
  640. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +241 -241
  641. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +1033 -1008
  642. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +112 -112
  643. data/lib/cosmos/tools/cmd_tlm_server/connections.rb +176 -176
  644. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +241 -221
  645. data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +127 -127
  646. data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +132 -132
  647. data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +66 -66
  648. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +97 -97
  649. data/lib/cosmos/tools/data_viewer/data_viewer.rb +628 -600
  650. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +167 -167
  651. data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -40
  652. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +149 -149
  653. data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +360 -360
  654. data/lib/cosmos/tools/launcher/launcher.rb +184 -184
  655. data/lib/cosmos/tools/launcher/launcher_config.rb +175 -167
  656. data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -41
  657. data/lib/cosmos/tools/launcher/launcher_tool.rb +104 -104
  658. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +796 -768
  659. data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -416
  660. data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -118
  661. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +525 -525
  662. data/lib/cosmos/tools/replay/replay.rb +495 -488
  663. data/lib/cosmos/tools/replay/replay_server.rb +91 -91
  664. data/lib/cosmos/tools/script_runner/script_audit.rb +147 -139
  665. data/lib/cosmos/tools/script_runner/script_runner.rb +914 -914
  666. data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -40
  667. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1892 -1859
  668. data/lib/cosmos/tools/table_manager/table.rb +70 -70
  669. data/lib/cosmos/tools/table_manager/table_config.rb +764 -764
  670. data/lib/cosmos/tools/table_manager/table_item.rb +74 -74
  671. data/lib/cosmos/tools/table_manager/table_manager.rb +1065 -1065
  672. data/lib/cosmos/tools/table_manager/table_manager_core.rb +539 -539
  673. data/lib/cosmos/tools/test_runner/results_writer.rb +283 -283
  674. data/lib/cosmos/tools/test_runner/test.rb +480 -480
  675. data/lib/cosmos/tools/test_runner/test_runner.rb +1157 -1157
  676. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +338 -338
  677. data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -60
  678. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1008 -1008
  679. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +371 -371
  680. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +60 -60
  681. data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +75 -75
  682. data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -44
  683. data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +94 -94
  684. data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -61
  685. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +180 -180
  686. data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -141
  687. data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -30
  688. data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +173 -173
  689. data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +177 -177
  690. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +412 -409
  691. data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +176 -176
  692. data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +25 -25
  693. data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +323 -320
  694. data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +181 -181
  695. data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -28
  696. data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -30
  697. data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -59
  698. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +172 -172
  699. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -27
  700. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -74
  701. data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +201 -201
  702. data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -69
  703. data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -20
  704. data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -61
  705. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1278 -1278
  706. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +430 -430
  707. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -107
  708. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +111 -95
  709. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -101
  710. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +72 -66
  711. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -57
  712. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1004 -1004
  713. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +87 -87
  714. data/lib/cosmos/tools/tlm_viewer/screen.rb +486 -458
  715. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +563 -544
  716. data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +287 -287
  717. data/lib/cosmos/tools/tlm_viewer/widgets.rb +53 -53
  718. data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +110 -110
  719. data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +70 -70
  720. data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +61 -61
  721. data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -39
  722. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +62 -62
  723. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +41 -41
  724. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +57 -57
  725. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +37 -37
  726. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +56 -56
  727. data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +55 -55
  728. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +66 -66
  729. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +124 -124
  730. data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +31 -31
  731. data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +30 -30
  732. data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +36 -36
  733. data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +35 -35
  734. data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -27
  735. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +31 -31
  736. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +26 -26
  737. data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +29 -29
  738. data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +39 -39
  739. data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +38 -38
  740. data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +38 -38
  741. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +39 -39
  742. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +42 -42
  743. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +37 -37
  744. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +37 -37
  745. data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +34 -34
  746. data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +178 -178
  747. data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +54 -54
  748. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +47 -47
  749. data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +116 -116
  750. data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +34 -34
  751. data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +30 -30
  752. data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +57 -57
  753. data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +34 -34
  754. data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +35 -35
  755. data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +33 -33
  756. data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +26 -26
  757. data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +28 -28
  758. data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +47 -47
  759. data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +26 -26
  760. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +88 -88
  761. data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +27 -27
  762. data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +130 -130
  763. data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +46 -46
  764. data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -43
  765. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +37 -37
  766. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +37 -37
  767. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +35 -35
  768. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +37 -37
  769. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +257 -257
  770. data/lib/cosmos/top_level.rb +647 -596
  771. data/lib/cosmos/utilities.rb +11 -10
  772. data/lib/cosmos/utilities/crc.rb +166 -166
  773. data/lib/cosmos/utilities/csv.rb +83 -83
  774. data/lib/cosmos/utilities/logger.rb +137 -137
  775. data/lib/cosmos/utilities/low_fragmentation_array.rb +11 -11
  776. data/lib/cosmos/utilities/message_log.rb +74 -74
  777. data/lib/cosmos/utilities/quaternion.rb +258 -258
  778. data/lib/cosmos/utilities/ruby_lex_utils.rb +313 -313
  779. data/lib/cosmos/utilities/simulated_target.rb +99 -99
  780. data/lib/cosmos/utilities/sleeper.rb +44 -0
  781. data/lib/cosmos/version.rb +12 -12
  782. data/lib/cosmos/win32/excel.rb +66 -66
  783. data/lib/cosmos/win32/win32.rb +387 -387
  784. data/lib/cosmos/win32/win32_main.rb +311 -311
  785. data/roodi.yml +24 -24
  786. data/run_gui_tests.bat +32 -32
  787. data/spec/ccsds/ccsds_packet_spec.rb +67 -67
  788. data/spec/ccsds/ccsds_parser_spec.rb +148 -148
  789. data/spec/config/config_parser_spec.rb +322 -322
  790. data/spec/conversions/conversion_spec.rb +31 -31
  791. data/spec/conversions/generic_conversion_spec.rb +45 -45
  792. data/spec/conversions/new_packet_log_conversion_spec.rb +39 -39
  793. data/spec/conversions/polynomial_conversion_spec.rb +40 -40
  794. data/spec/conversions/processor_conversion_spec.rb +45 -45
  795. data/spec/conversions/received_count_conversion_spec.rb +43 -43
  796. data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -49
  797. data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -50
  798. data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -51
  799. data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -74
  800. data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -76
  801. data/spec/core_ext/array_spec.rb +186 -186
  802. data/spec/core_ext/class_spec.rb +36 -36
  803. data/spec/core_ext/cosmos_io_spec.rb +77 -77
  804. data/spec/core_ext/exception_spec.rb +91 -91
  805. data/spec/core_ext/file_spec.rb +72 -72
  806. data/spec/core_ext/hash_spec.rb +24 -24
  807. data/spec/core_ext/io_spec.rb +46 -46
  808. data/spec/core_ext/kernel_spec.rb +54 -54
  809. data/spec/core_ext/math_spec.rb +116 -116
  810. data/spec/core_ext/matrix_spec.rb +66 -66
  811. data/spec/core_ext/objectspace_spec.rb +29 -29
  812. data/spec/core_ext/range_spec.rb +21 -21
  813. data/spec/core_ext/socket_spec.rb +32 -32
  814. data/spec/core_ext/string_spec.rb +223 -223
  815. data/spec/core_ext/stringio_spec.rb +21 -21
  816. data/spec/core_ext/time_spec.rb +151 -151
  817. data/spec/gui/line_graph/line_clip_spec.rb +322 -322
  818. data/spec/install/config/system/system.txt +33 -33
  819. data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
  820. data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
  821. data/spec/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
  822. data/spec/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
  823. data/spec/install/config/targets/COSMOS/screens/version.txt +19 -19
  824. data/spec/install/config/targets/COSMOS/target.txt +5 -5
  825. data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -30
  826. data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +111 -111
  827. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -236
  828. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -25
  829. data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -5
  830. data/spec/install/config/targets/INST/lib/sim_inst.rb +305 -294
  831. data/spec/install/config/targets/INST/target.txt +10 -10
  832. data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +4 -4
  833. data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +4 -4
  834. data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
  835. data/spec/interfaces/cmd_tlm_server_interface_spec.rb +150 -150
  836. data/spec/interfaces/interface_spec.rb +130 -131
  837. data/spec/interfaces/linc_interface_spec.rb +199 -199
  838. data/spec/interfaces/serial_interface_spec.rb +56 -56
  839. data/spec/interfaces/simulated_target_interface_spec.rb +128 -128
  840. data/spec/interfaces/stream_interface_spec.rb +157 -157
  841. data/spec/interfaces/tcpip_client_interface_spec.rb +54 -54
  842. data/spec/interfaces/tcpip_server_interface_spec.rb +151 -151
  843. data/spec/interfaces/udp_interface_spec.rb +175 -177
  844. data/spec/io/buffered_file_spec.rb +113 -113
  845. data/spec/io/io_multiplexer_spec.rb +94 -94
  846. data/spec/io/json_drb_object_spec.rb +99 -99
  847. data/spec/io/json_drb_spec.rb +311 -311
  848. data/spec/io/json_rpc_spec.rb +264 -264
  849. data/spec/io/raw_logger_pair_spec.rb +76 -76
  850. data/spec/io/raw_logger_spec.rb +133 -133
  851. data/spec/io/serial_driver_spec.rb +61 -61
  852. data/spec/io/stderr_spec.rb +32 -32
  853. data/spec/io/stdout_spec.rb +32 -32
  854. data/spec/io/tcpip_server_spec.rb +338 -338
  855. data/spec/io/udp_sockets_spec.rb +94 -94
  856. data/spec/io/win32_serial_driver_spec.rb +88 -88
  857. data/spec/packet_logs/meta_packet_log_writer_spec.rb +170 -170
  858. data/spec/packet_logs/packet_log_reader_spec.rb +408 -408
  859. data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -30
  860. data/spec/packet_logs/packet_log_writer_spec.rb +223 -223
  861. data/spec/packets/binary_accessor_spec.rb +2073 -2073
  862. data/spec/packets/commands_spec.rb +369 -369
  863. data/spec/packets/limits_response_spec.rb +25 -25
  864. data/spec/packets/limits_spec.rb +326 -326
  865. data/spec/packets/packet_config_spec.rb +1620 -1620
  866. data/spec/packets/packet_item_limits_spec.rb +161 -161
  867. data/spec/packets/packet_item_spec.rb +386 -386
  868. data/spec/packets/packet_spec.rb +1057 -949
  869. data/spec/packets/structure_item_spec.rb +195 -195
  870. data/spec/packets/structure_spec.rb +419 -419
  871. data/spec/packets/telemetry_spec.rb +535 -535
  872. data/spec/processors/new_packet_log_processor_spec.rb +39 -39
  873. data/spec/processors/processor_spec.rb +55 -55
  874. data/spec/processors/statistics_processor_spec.rb +60 -60
  875. data/spec/processors/watermark_processor_spec.rb +51 -51
  876. data/spec/script/script_spec.rb +654 -654
  877. data/spec/spec_helper.rb +154 -148
  878. data/spec/streams/burst_stream_protocol_spec.rb +32 -32
  879. data/spec/streams/fixed_stream_protocol_spec.rb +110 -110
  880. data/spec/streams/length_stream_protocol_spec.rb +297 -297
  881. data/spec/streams/preidentified_stream_protocol_spec.rb +118 -118
  882. data/spec/streams/serial_stream_spec.rb +105 -105
  883. data/spec/streams/stream_protocol_spec.rb +332 -332
  884. data/spec/streams/stream_spec.rb +29 -29
  885. data/spec/streams/tcpip_client_stream_spec.rb +54 -54
  886. data/spec/streams/tcpip_socket_stream_spec.rb +146 -146
  887. data/spec/streams/template_stream_protocol_spec.rb +151 -151
  888. data/spec/streams/terminated_stream_protocol_spec.rb +123 -123
  889. data/spec/system/system_spec.rb +645 -645
  890. data/spec/system/target_spec.rb +248 -248
  891. data/spec/tools/cmd_tlm_server/api_spec.rb +1087 -1113
  892. data/spec/tools/cmd_tlm_server/background_task_spec.rb +32 -32
  893. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +81 -81
  894. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +411 -411
  895. data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +415 -415
  896. data/spec/tools/cmd_tlm_server/commanding_spec.rb +123 -123
  897. data/spec/tools/cmd_tlm_server/connections_spec.rb +147 -147
  898. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +306 -306
  899. data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -238
  900. data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -143
  901. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +98 -101
  902. data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -208
  903. data/spec/top_level/top_level_spec.rb +334 -321
  904. data/spec/utilities/crc_spec.rb +45 -45
  905. data/spec/utilities/csv_spec.rb +97 -97
  906. data/spec/utilities/logger_spec.rb +102 -102
  907. data/spec/utilities/message_log_spec.rb +89 -89
  908. data/spec/utilities/quaternion_spec.rb +107 -107
  909. data/spec/utilities/ruby_lex_utils_spec.rb +86 -86
  910. data/tasks/manifest.rake +22 -22
  911. data/tasks/spec.rake +23 -23
  912. metadata +18 -2
@@ -1,32 +1,32 @@
1
- # encoding: ascii-8bit
2
-
3
- # Copyright 2014 Ball Aerospace & Technologies Corp.
4
- # All Rights Reserved.
5
- #
6
- # This program is free software; you can modify and/or redistribute it
7
- # under the terms of the GNU General Public License
8
- # as published by the Free Software Foundation; version 3 with
9
- # attribution addendums as found in the LICENSE.txt
10
-
11
- require 'spec_helper'
12
- require 'cosmos'
13
- require 'cosmos/tools/cmd_tlm_server/background_task'
14
-
15
- module Cosmos
16
-
17
- describe BackgroundTask do
18
-
19
- describe "call" do
20
- it "should raise an error" do
21
- expect { BackgroundTask.new.call }.to raise_error
22
- end
23
- end
24
-
25
- describe "stop" do
26
- it "should exist" do
27
- BackgroundTask.new.should respond_to(:stop)
28
- end
29
- end
30
- end
31
- end
32
-
1
+ # encoding: ascii-8bit
2
+
3
+ # Copyright 2014 Ball Aerospace & Technologies Corp.
4
+ # All Rights Reserved.
5
+ #
6
+ # This program is free software; you can modify and/or redistribute it
7
+ # under the terms of the GNU General Public License
8
+ # as published by the Free Software Foundation; version 3 with
9
+ # attribution addendums as found in the LICENSE.txt
10
+
11
+ require 'spec_helper'
12
+ require 'cosmos'
13
+ require 'cosmos/tools/cmd_tlm_server/background_task'
14
+
15
+ module Cosmos
16
+
17
+ describe BackgroundTask do
18
+
19
+ describe "call" do
20
+ it "should raise an error" do
21
+ expect { BackgroundTask.new.call }.to raise_error
22
+ end
23
+ end
24
+
25
+ describe "stop" do
26
+ it "should exist" do
27
+ BackgroundTask.new.should respond_to(:stop)
28
+ end
29
+ end
30
+ end
31
+ end
32
+
@@ -1,81 +1,81 @@
1
- # encoding: ascii-8bit
2
-
3
- # Copyright 2014 Ball Aerospace & Technologies Corp.
4
- # All Rights Reserved.
5
- #
6
- # This program is free software; you can modify and/or redistribute it
7
- # under the terms of the GNU General Public License
8
- # as published by the Free Software Foundation; version 3 with
9
- # attribution addendums as found in the LICENSE.txt
10
-
11
- require 'spec_helper'
12
- require 'cosmos'
13
- require 'cosmos/tools/cmd_tlm_server/background_tasks'
14
- require 'tempfile'
15
- load 'cosmos.rb' # Ensure COSMOS::USERPATH/lib is set
16
-
17
- module Cosmos
18
-
19
- describe BackgroundTasks do
20
- after(:all) do
21
- clean_config()
22
- end
23
-
24
- describe "start, stop" do
25
- it "should call start on each task" do
26
- File.open(File.join(Cosmos::USERPATH,'lib','my_bg_task1.rb'),'w') do |file|
27
- file.puts "require 'cosmos/tools/cmd_tlm_server/background_task'"
28
- file.puts "class MyBgTask1 < Cosmos::BackgroundTask"
29
- file.puts " def call; sleep 1 while true; end"
30
- file.puts " def stop; raise 'Error'; end"
31
- file.puts "end"
32
- end
33
- tf = Tempfile.new('unittest')
34
- tf.puts 'BACKGROUND_TASK my_bg_task1.rb'
35
- tf.close
36
- config = CmdTlmServerConfig.new(tf.path)
37
- bt = BackgroundTasks.new(config)
38
- bt.start
39
- sleep 0.1
40
- # 2 because the RSpec main thread plus the background task
41
- Thread.list.length.should eql(2)
42
- bt.stop
43
- sleep 0.2
44
- Thread.list.length.should eql(1)
45
-
46
- tf.unlink
47
- File.delete(File.join(Cosmos::USERPATH,'lib','my_bg_task1.rb'))
48
- end
49
-
50
- it "should handle exceptions" do
51
- tf = Tempfile.new('unittest')
52
- tf.puts 'BACKGROUND_TASK my_bg_task2.rb'
53
- tf.close
54
- capture_io do |stdout|
55
- File.open(File.join(Cosmos::USERPATH,'lib','my_bg_task2.rb'),'w') do |file|
56
- file.puts "require 'cosmos/tools/cmd_tlm_server/background_task'"
57
- file.puts "class MyBgTask2 < Cosmos::BackgroundTask"
58
- file.puts " def call; raise 'Error'; end"
59
- file.puts " def stop; raise 'Error'; end"
60
- file.puts "end"
61
- end
62
- config = CmdTlmServerConfig.new(tf.path)
63
- bt = BackgroundTasks.new(config)
64
- bt.start
65
- # 2 because the RSpec main thread plus the background task
66
- Thread.list.length.should eql(2)
67
- sleep 1.1 # Allow the thread to crash
68
- Thread.list.length.should eql(1)
69
- bt.stop
70
- sleep 0.2
71
- Thread.list.length.should eql(1)
72
-
73
- stdout.string.should match "Background Task thread unexpectedly died"
74
- end
75
- tf.unlink
76
- File.delete(File.join(Cosmos::USERPATH,'lib','my_bg_task2.rb'))
77
- end
78
- end
79
-
80
- end
81
- end
1
+ # encoding: ascii-8bit
2
+
3
+ # Copyright 2014 Ball Aerospace & Technologies Corp.
4
+ # All Rights Reserved.
5
+ #
6
+ # This program is free software; you can modify and/or redistribute it
7
+ # under the terms of the GNU General Public License
8
+ # as published by the Free Software Foundation; version 3 with
9
+ # attribution addendums as found in the LICENSE.txt
10
+
11
+ require 'spec_helper'
12
+ require 'cosmos'
13
+ require 'cosmos/tools/cmd_tlm_server/background_tasks'
14
+ require 'tempfile'
15
+ load 'cosmos.rb' # Ensure COSMOS::USERPATH/lib is set
16
+
17
+ module Cosmos
18
+
19
+ describe BackgroundTasks do
20
+ after(:all) do
21
+ clean_config()
22
+ end
23
+
24
+ describe "start, stop" do
25
+ it "should call start on each task" do
26
+ File.open(File.join(Cosmos::USERPATH,'lib','my_bg_task1.rb'),'w') do |file|
27
+ file.puts "require 'cosmos/tools/cmd_tlm_server/background_task'"
28
+ file.puts "class MyBgTask1 < Cosmos::BackgroundTask"
29
+ file.puts " def call; sleep 1 while true; end"
30
+ file.puts " def stop; raise 'Error'; end"
31
+ file.puts "end"
32
+ end
33
+ tf = Tempfile.new('unittest')
34
+ tf.puts 'BACKGROUND_TASK my_bg_task1.rb'
35
+ tf.close
36
+ config = CmdTlmServerConfig.new(tf.path)
37
+ bt = BackgroundTasks.new(config)
38
+ bt.start
39
+ sleep 0.1
40
+ # 2 because the RSpec main thread plus the background task
41
+ Thread.list.length.should eql(2)
42
+ bt.stop
43
+ sleep 0.2
44
+ Thread.list.length.should eql(1)
45
+
46
+ tf.unlink
47
+ File.delete(File.join(Cosmos::USERPATH,'lib','my_bg_task1.rb'))
48
+ end
49
+
50
+ it "should handle exceptions" do
51
+ tf = Tempfile.new('unittest')
52
+ tf.puts 'BACKGROUND_TASK my_bg_task2.rb'
53
+ tf.close
54
+ capture_io do |stdout|
55
+ File.open(File.join(Cosmos::USERPATH,'lib','my_bg_task2.rb'),'w') do |file|
56
+ file.puts "require 'cosmos/tools/cmd_tlm_server/background_task'"
57
+ file.puts "class MyBgTask2 < Cosmos::BackgroundTask"
58
+ file.puts " def call; raise 'Error'; end"
59
+ file.puts " def stop; raise 'Error'; end"
60
+ file.puts "end"
61
+ end
62
+ config = CmdTlmServerConfig.new(tf.path)
63
+ bt = BackgroundTasks.new(config)
64
+ bt.start
65
+ # 2 because the RSpec main thread plus the background task
66
+ Thread.list.length.should eql(2)
67
+ sleep 1.1 # Allow the thread to crash
68
+ Thread.list.length.should eql(1)
69
+ bt.stop
70
+ sleep 0.2
71
+ Thread.list.length.should eql(1)
72
+
73
+ stdout.string.should match "Background Task thread unexpectedly died"
74
+ end
75
+ tf.unlink
76
+ File.delete(File.join(Cosmos::USERPATH,'lib','my_bg_task2.rb'))
77
+ end
78
+ end
79
+
80
+ end
81
+ end
@@ -1,411 +1,411 @@
1
- # encoding: ascii-8bit
2
-
3
- # Copyright 2014 Ball Aerospace & Technologies Corp.
4
- # All Rights Reserved.
5
- #
6
- # This program is free software; you can modify and/or redistribute it
7
- # under the terms of the GNU General Public License
8
- # as published by the Free Software Foundation; version 3 with
9
- # attribution addendums as found in the LICENSE.txt
10
-
11
- require 'spec_helper'
12
- require 'cosmos'
13
- require 'cosmos/tools/cmd_tlm_server/cmd_tlm_server'
14
- require 'cosmos/tools/cmd_tlm_server/cmd_tlm_server_config'
15
- require 'tempfile'
16
- load 'cosmos.rb' # Ensure COSMOS::USERPATH/lib is set
17
-
18
- module Cosmos
19
-
20
- describe CmdTlmServerConfig do
21
- before(:all) do
22
- @interface_filename = File.join(Cosmos::USERPATH,'lib','cts_config_test_interface.rb')
23
- File.open(@interface_filename,'w') do |file|
24
- file.puts "require 'cosmos'"
25
- file.puts "require 'cosmos/interfaces/interface'"
26
- file.puts "module Cosmos"
27
- file.puts " class CtsConfigTestInterface < Interface"
28
- file.puts " def initialize(test = true)"
29
- file.puts " super()"
30
- file.puts " end"
31
- file.puts " end"
32
- file.puts "end"
33
- end
34
-
35
- @keywords = %w(TITLE PACKET_LOG_WRITER AUTO_INTERFACE_TARGETS INTERFACE_TARGET INTERFACE ROUTER)
36
- @interface_keywords = %w(DONT_CONNECT DONT_RECONNECT RECONNECT_DELAY DISABLE_DISCONNECT LOG DONT_LOG TARGET)
37
- end
38
-
39
- after(:all) do
40
- clean_config()
41
- File.delete @interface_filename
42
- end
43
-
44
- describe "process_file" do
45
- it "should complain if there is an unknown keyword" do
46
- tf = Tempfile.new('unittest')
47
- tf.puts "UNKNOWN"
48
- tf.close
49
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Unknown keyword: UNKNOWN")
50
- tf.unlink
51
- end
52
-
53
- it "should complain if there are not enough parameters" do
54
- @keywords.each do |keyword|
55
- next if %w(AUTO_INTERFACE_TARGETS).include? keyword
56
- tf = Tempfile.new('unittest')
57
- tf.puts keyword
58
- tf.close
59
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Not enough parameters for #{keyword}.")
60
- tf.unlink
61
- end
62
-
63
- @interface_keywords.each do |keyword|
64
- next if %w(DONT_CONNECT DONT_RECONNECT DISABLE_DISCONNECT DONT_LOG).include? keyword
65
- tf = Tempfile.new('unittest')
66
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
67
- tf.puts keyword
68
- tf.close
69
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Not enough parameters for #{keyword}.")
70
- tf.unlink
71
- end
72
- end
73
-
74
- context "with TITLE" do
75
- it "should complain about too many parameters" do
76
- tf = Tempfile.new('unittest')
77
- tf.puts 'TITLE HI THERE'
78
- tf.close
79
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for TITLE.")
80
- tf.unlink
81
- end
82
-
83
- it "should set the title" do
84
- tf = Tempfile.new('unittest')
85
- tf.puts 'TITLE TEST'
86
- tf.close
87
- config = CmdTlmServerConfig.new(tf.path)
88
- config.title.should eql "TEST"
89
- tf.unlink
90
- end
91
- end
92
-
93
- context "with PACKET_LOG_WRITER" do
94
- it "should set the packet log writer" do
95
- tf = Tempfile.new('unittest')
96
- tf.puts 'PACKET_LOG_WRITER MY_WRITER packet_log_writer.rb'
97
- tf.close
98
- config =CmdTlmServerConfig.new(tf.path)
99
- config.packet_log_writer_pairs.keys.should eql ["DEFAULT","MY_WRITER"]
100
- tf.unlink
101
- end
102
-
103
- it "should set the packet log writer with parameters" do
104
- tf = Tempfile.new('unittest')
105
- tf.puts 'PACKET_LOG_WRITER MY_WRITER packet_log_writer.rb test_log_name false 3 1000 C:\log false'
106
- tf.close
107
- config = CmdTlmServerConfig.new(tf.path)
108
- config.packet_log_writer_pairs.keys.should eql ["DEFAULT","MY_WRITER"]
109
- config.packet_log_writer_pairs["DEFAULT"].cmd_log_writer.logging_enabled.should be_truthy
110
- config.packet_log_writer_pairs["MY_WRITER"].cmd_log_writer.logging_enabled.should be_falsey
111
- tf.unlink
112
- config.packet_log_writer_pairs.each do |name, plwp|
113
- plwp.cmd_log_writer.shutdown
114
- plwp.tlm_log_writer.shutdown
115
- end
116
- sleep(0.2)
117
- end
118
- end
119
-
120
- context "with AUTO_INTERFACE_TARGETS" do
121
- it "should complain about too many parameters" do
122
- tf = Tempfile.new('unittest')
123
- tf.puts 'AUTO_INTERFACE_TARGETS BLAH'
124
- tf.close
125
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for AUTO_INTERFACE_TARGETS.")
126
- tf.unlink
127
- end
128
-
129
- it "should automatically process interfaces" do
130
- # Stub out the CmdTlmServer
131
- allow(CmdTlmServer).to receive_message_chain(:instance, :subscribe_limits_events)
132
-
133
- tf = Tempfile.new('unittest')
134
- tf.puts 'AUTO_INTERFACE_TARGETS'
135
- tf.close
136
- config = CmdTlmServerConfig.new(tf.path)
137
- config.interfaces.keys.should eql %w(INST_INT COSMOSINT)
138
- tf.unlink
139
- end
140
- end
141
-
142
- context "with INTERFACE_TARGET" do
143
- it "should complain about too many parameters" do
144
- tf = Tempfile.new('unittest')
145
- tf.puts 'INTERFACE_TARGET BLAH config.txt MORE'
146
- tf.close
147
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for INTERFACE_TARGET.")
148
- tf.unlink
149
- end
150
-
151
- it "should complain about unknown targets" do
152
- tf = Tempfile.new('unittest')
153
- tf.puts 'INTERFACE_TARGET BLAH'
154
- tf.close
155
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Unknown target: BLAH")
156
- tf.unlink
157
- end
158
-
159
- it "should complain about unknown target files" do
160
- tf = Tempfile.new('unittest')
161
- tf.puts 'INTERFACE_TARGET TEST'
162
- tf.close
163
- System.targets["TEST"] = Target.new("TEST")
164
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, /TEST\/cmd_tlm_server.txt does not exist/)
165
- tf.unlink
166
- end
167
-
168
- it "should process an interface" do
169
- tf = Tempfile.new('unittest')
170
- tf.puts 'INTERFACE_TARGET INST'
171
- tf.close
172
- config = CmdTlmServerConfig.new(tf.path)
173
- config.interfaces.keys.should eql %w(INST_INT)
174
- tf.unlink
175
- end
176
- end
177
-
178
- context "with DONT_CONNECT" do
179
- it "should complain about too many parameters" do
180
- tf = Tempfile.new('unittest')
181
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
182
- tf.puts 'DONT_CONNECT TRUE'
183
- tf.close
184
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for DONT_CONNECT.")
185
- tf.unlink
186
- end
187
-
188
- it "should set the interface to not connect on startup" do
189
- tf = Tempfile.new('unittest')
190
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
191
- tf.puts 'DONT_CONNECT'
192
- tf.close
193
- config = CmdTlmServerConfig.new(tf.path)
194
- config.interfaces['CTSCONFIGTESTINTERFACE'].connect_on_startup.should be_falsey
195
- tf.unlink
196
- end
197
- end
198
-
199
- context "with DONT_RECONNECT" do
200
- it "should complain about too many parameters" do
201
- tf = Tempfile.new('unittest')
202
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
203
- tf.puts 'DONT_RECONNECT TRUE'
204
- tf.close
205
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for DONT_RECONNECT.")
206
- tf.unlink
207
- end
208
-
209
- it "should set the interface to not auto reconnect" do
210
- tf = Tempfile.new('unittest')
211
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
212
- tf.puts 'DONT_RECONNECT'
213
- tf.close
214
- config = CmdTlmServerConfig.new(tf.path)
215
- config.interfaces['CTSCONFIGTESTINTERFACE'].auto_reconnect.should be_falsey
216
- tf.unlink
217
- end
218
- end
219
-
220
- context "with RECONNECT_DELAY" do
221
- it "should complain about too many parameters" do
222
- tf = Tempfile.new('unittest')
223
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
224
- tf.puts 'RECONNECT_DELAY 5.0 TRUE'
225
- tf.close
226
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for RECONNECT_DELAY.")
227
- tf.unlink
228
- end
229
-
230
- it "should set the delay between reconnect tries" do
231
- tf = Tempfile.new('unittest')
232
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
233
- tf.puts 'RECONNECT_DELAY 5.0'
234
- tf.close
235
- config = CmdTlmServerConfig.new(tf.path)
236
- config.interfaces['CTSCONFIGTESTINTERFACE'].reconnect_delay.should eql 5.0
237
- tf.unlink
238
- end
239
- end
240
-
241
- context "with DISABLE_DISCONNECT" do
242
- it "should complain about too many parameters" do
243
- tf = Tempfile.new('unittest')
244
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
245
- tf.puts 'DISABLE_DISCONNECT TRUE'
246
- tf.close
247
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for DISABLE_DISCONNECT.")
248
- tf.unlink
249
- end
250
-
251
- it "should set the interface to not allow disconnects" do
252
- tf = Tempfile.new('unittest')
253
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
254
- tf.puts 'DISABLE_DISCONNECT'
255
- tf.close
256
- config = CmdTlmServerConfig.new(tf.path)
257
- config.interfaces['CTSCONFIGTESTINTERFACE'].disable_disconnect.should be_truthy
258
- tf.unlink
259
- end
260
- end
261
-
262
- context "with LOG" do
263
- it "should complain about too many parameters" do
264
- tf = Tempfile.new('unittest')
265
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
266
- tf.puts 'LOG PacketLogWriter TRUE'
267
- tf.close
268
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for LOG.")
269
- tf.unlink
270
- end
271
-
272
- it "should complain about unknown log writers" do
273
- tf = Tempfile.new('unittest')
274
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
275
- tf.puts 'LOG MyLogWriter'
276
- tf.close
277
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Unknown packet log writer: MYLOGWRITER")
278
- tf.unlink
279
- end
280
-
281
- it "should add a packet log writer to the interface" do
282
- tf = Tempfile.new('unittest')
283
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
284
- tf.puts 'LOG DEFAULT'
285
- tf.close
286
- config = CmdTlmServerConfig.new(tf.path)
287
- config.interfaces['CTSCONFIGTESTINTERFACE'].packet_log_writer_pairs.length.should eql 1
288
- tf.unlink
289
-
290
- tf = Tempfile.new('unittest')
291
- tf.puts 'PACKET_LOG_WRITER MY_WRITER packet_log_writer.rb'
292
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
293
- tf.puts 'LOG DEFAULT'
294
- tf.puts 'LOG MY_WRITER'
295
- tf.close
296
- config = CmdTlmServerConfig.new(tf.path)
297
- config.interfaces['CTSCONFIGTESTINTERFACE'].packet_log_writer_pairs.length.should eql 2
298
- tf.unlink
299
- end
300
- end
301
-
302
- context "with DONT_LOG" do
303
- it "should complain about too many parameters" do
304
- tf = Tempfile.new('unittest')
305
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
306
- tf.puts 'DONT_LOG TRUE'
307
- tf.close
308
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for DONT_LOG.")
309
- tf.unlink
310
- end
311
-
312
- it "should remove loggers from the interface" do
313
- tf = Tempfile.new('unittest')
314
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
315
- tf.puts 'DONT_LOG'
316
- tf.close
317
- config = CmdTlmServerConfig.new(tf.path)
318
- config.interfaces['CTSCONFIGTESTINTERFACE'].packet_log_writer_pairs.length.should eql 0
319
- tf.unlink
320
- end
321
- end
322
-
323
- context "with TARGET" do
324
- it "should complain about too many parameters" do
325
- tf = Tempfile.new('unittest')
326
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
327
- tf.puts 'TARGET TEST TRUE'
328
- tf.close
329
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for TARGET.")
330
- tf.unlink
331
- end
332
-
333
- it "should complain about unknown targets" do
334
- tf = Tempfile.new('unittest')
335
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
336
- tf.puts 'TARGET BLAH'
337
- tf.close
338
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Unknown target BLAH mapped to interface CTSCONFIGTESTINTERFACE")
339
- tf.unlink
340
- end
341
- end
342
-
343
- context "with ROUTER" do
344
- it "should create a new router" do
345
- tf = Tempfile.new('unittest')
346
- tf.puts 'ROUTER MY_ROUTER1 cts_config_test_interface.rb'
347
- tf.puts 'ROUTER MY_ROUTER2 cts_config_test_interface.rb false'
348
- tf.close
349
- config = CmdTlmServerConfig.new(tf.path)
350
- config.routers.keys.should eql %w(MY_ROUTER1 MY_ROUTER2)
351
- tf.unlink
352
- end
353
- end
354
-
355
- context "with ROUTE" do
356
- it "should complain about too many parameters" do
357
- tf = Tempfile.new('unittest')
358
- tf.puts 'ROUTER ROUTER cts_config_test_interface.rb'
359
- tf.puts 'ROUTE interface more'
360
- tf.close
361
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for ROUTE.")
362
- tf.unlink
363
- end
364
-
365
- it "should complain if a router hasn't been defined" do
366
- tf = Tempfile.new('unittest')
367
- tf.puts 'ROUTE interface more'
368
- tf.close
369
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "No current router for ROUTE")
370
- tf.unlink
371
- end
372
-
373
- it "should complain if the interface is undefined" do
374
- tf = Tempfile.new('unittest')
375
- tf.puts 'ROUTER ROUTER cts_config_test_interface.rb'
376
- tf.puts 'ROUTE CTSCONFIGTESTINTERFACE'
377
- tf.close
378
- expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Unknown interface CTSCONFIGTESTINTERFACE mapped to router ROUTER")
379
- tf.unlink
380
- end
381
-
382
- it "should create the route" do
383
- tf = Tempfile.new('unittest')
384
- tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
385
- tf.puts 'ROUTER ROUTER cts_config_test_interface.rb'
386
- tf.puts 'ROUTE CTSCONFIGTESTINTERFACE'
387
- tf.close
388
- config = CmdTlmServerConfig.new(tf.path)
389
- config.routers['ROUTER'].interfaces[0].should be_a CtsConfigTestInterface
390
- tf.unlink
391
- end
392
- end
393
-
394
- context "with BACKGROUND_TASK" do
395
- it "should create a background task" do
396
- tf = Tempfile.new('unittest')
397
- tf.puts 'BACKGROUND_TASK cts_config_test_interface.rb'
398
- tf.puts 'BACKGROUND_TASK cts_config_test_interface.rb false'
399
- tf.close
400
- config = CmdTlmServerConfig.new(tf.path)
401
- config.background_tasks.length.should eql 2
402
- config.background_tasks[0].should be_a CtsConfigTestInterface
403
- config.background_tasks[1].should be_a CtsConfigTestInterface
404
- tf.unlink
405
- end
406
- end
407
-
408
- end
409
- end
410
- end
411
-
1
+ # encoding: ascii-8bit
2
+
3
+ # Copyright 2014 Ball Aerospace & Technologies Corp.
4
+ # All Rights Reserved.
5
+ #
6
+ # This program is free software; you can modify and/or redistribute it
7
+ # under the terms of the GNU General Public License
8
+ # as published by the Free Software Foundation; version 3 with
9
+ # attribution addendums as found in the LICENSE.txt
10
+
11
+ require 'spec_helper'
12
+ require 'cosmos'
13
+ require 'cosmos/tools/cmd_tlm_server/cmd_tlm_server'
14
+ require 'cosmos/tools/cmd_tlm_server/cmd_tlm_server_config'
15
+ require 'tempfile'
16
+ load 'cosmos.rb' # Ensure COSMOS::USERPATH/lib is set
17
+
18
+ module Cosmos
19
+
20
+ describe CmdTlmServerConfig do
21
+ before(:all) do
22
+ @interface_filename = File.join(Cosmos::USERPATH,'lib','cts_config_test_interface.rb')
23
+ File.open(@interface_filename,'w') do |file|
24
+ file.puts "require 'cosmos'"
25
+ file.puts "require 'cosmos/interfaces/interface'"
26
+ file.puts "module Cosmos"
27
+ file.puts " class CtsConfigTestInterface < Interface"
28
+ file.puts " def initialize(test = true)"
29
+ file.puts " super()"
30
+ file.puts " end"
31
+ file.puts " end"
32
+ file.puts "end"
33
+ end
34
+
35
+ @keywords = %w(TITLE PACKET_LOG_WRITER AUTO_INTERFACE_TARGETS INTERFACE_TARGET INTERFACE ROUTER)
36
+ @interface_keywords = %w(DONT_CONNECT DONT_RECONNECT RECONNECT_DELAY DISABLE_DISCONNECT LOG DONT_LOG TARGET)
37
+ end
38
+
39
+ after(:all) do
40
+ clean_config()
41
+ File.delete @interface_filename
42
+ end
43
+
44
+ describe "process_file" do
45
+ it "should complain if there is an unknown keyword" do
46
+ tf = Tempfile.new('unittest')
47
+ tf.puts "UNKNOWN"
48
+ tf.close
49
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Unknown keyword: UNKNOWN")
50
+ tf.unlink
51
+ end
52
+
53
+ it "should complain if there are not enough parameters" do
54
+ @keywords.each do |keyword|
55
+ next if %w(AUTO_INTERFACE_TARGETS).include? keyword
56
+ tf = Tempfile.new('unittest')
57
+ tf.puts keyword
58
+ tf.close
59
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Not enough parameters for #{keyword}.")
60
+ tf.unlink
61
+ end
62
+
63
+ @interface_keywords.each do |keyword|
64
+ next if %w(DONT_CONNECT DONT_RECONNECT DISABLE_DISCONNECT DONT_LOG).include? keyword
65
+ tf = Tempfile.new('unittest')
66
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
67
+ tf.puts keyword
68
+ tf.close
69
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Not enough parameters for #{keyword}.")
70
+ tf.unlink
71
+ end
72
+ end
73
+
74
+ context "with TITLE" do
75
+ it "should complain about too many parameters" do
76
+ tf = Tempfile.new('unittest')
77
+ tf.puts 'TITLE HI THERE'
78
+ tf.close
79
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for TITLE.")
80
+ tf.unlink
81
+ end
82
+
83
+ it "should set the title" do
84
+ tf = Tempfile.new('unittest')
85
+ tf.puts 'TITLE TEST'
86
+ tf.close
87
+ config = CmdTlmServerConfig.new(tf.path)
88
+ config.title.should eql "TEST"
89
+ tf.unlink
90
+ end
91
+ end
92
+
93
+ context "with PACKET_LOG_WRITER" do
94
+ it "should set the packet log writer" do
95
+ tf = Tempfile.new('unittest')
96
+ tf.puts 'PACKET_LOG_WRITER MY_WRITER packet_log_writer.rb'
97
+ tf.close
98
+ config =CmdTlmServerConfig.new(tf.path)
99
+ config.packet_log_writer_pairs.keys.should eql ["DEFAULT","MY_WRITER"]
100
+ tf.unlink
101
+ end
102
+
103
+ it "should set the packet log writer with parameters" do
104
+ tf = Tempfile.new('unittest')
105
+ tf.puts 'PACKET_LOG_WRITER MY_WRITER packet_log_writer.rb test_log_name false 3 1000 C:\log false'
106
+ tf.close
107
+ config = CmdTlmServerConfig.new(tf.path)
108
+ config.packet_log_writer_pairs.keys.should eql ["DEFAULT","MY_WRITER"]
109
+ config.packet_log_writer_pairs["DEFAULT"].cmd_log_writer.logging_enabled.should be_truthy
110
+ config.packet_log_writer_pairs["MY_WRITER"].cmd_log_writer.logging_enabled.should be_falsey
111
+ tf.unlink
112
+ config.packet_log_writer_pairs.each do |name, plwp|
113
+ plwp.cmd_log_writer.shutdown
114
+ plwp.tlm_log_writer.shutdown
115
+ end
116
+ sleep(0.2)
117
+ end
118
+ end
119
+
120
+ context "with AUTO_INTERFACE_TARGETS" do
121
+ it "should complain about too many parameters" do
122
+ tf = Tempfile.new('unittest')
123
+ tf.puts 'AUTO_INTERFACE_TARGETS BLAH'
124
+ tf.close
125
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for AUTO_INTERFACE_TARGETS.")
126
+ tf.unlink
127
+ end
128
+
129
+ it "should automatically process interfaces" do
130
+ # Stub out the CmdTlmServer
131
+ allow(CmdTlmServer).to receive_message_chain(:instance, :subscribe_limits_events)
132
+
133
+ tf = Tempfile.new('unittest')
134
+ tf.puts 'AUTO_INTERFACE_TARGETS'
135
+ tf.close
136
+ config = CmdTlmServerConfig.new(tf.path)
137
+ config.interfaces.keys.should eql %w(INST_INT COSMOSINT)
138
+ tf.unlink
139
+ end
140
+ end
141
+
142
+ context "with INTERFACE_TARGET" do
143
+ it "should complain about too many parameters" do
144
+ tf = Tempfile.new('unittest')
145
+ tf.puts 'INTERFACE_TARGET BLAH config.txt MORE'
146
+ tf.close
147
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for INTERFACE_TARGET.")
148
+ tf.unlink
149
+ end
150
+
151
+ it "should complain about unknown targets" do
152
+ tf = Tempfile.new('unittest')
153
+ tf.puts 'INTERFACE_TARGET BLAH'
154
+ tf.close
155
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Unknown target: BLAH")
156
+ tf.unlink
157
+ end
158
+
159
+ it "should complain about unknown target files" do
160
+ tf = Tempfile.new('unittest')
161
+ tf.puts 'INTERFACE_TARGET TEST'
162
+ tf.close
163
+ System.targets["TEST"] = Target.new("TEST")
164
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, /TEST\/cmd_tlm_server.txt does not exist/)
165
+ tf.unlink
166
+ end
167
+
168
+ it "should process an interface" do
169
+ tf = Tempfile.new('unittest')
170
+ tf.puts 'INTERFACE_TARGET INST'
171
+ tf.close
172
+ config = CmdTlmServerConfig.new(tf.path)
173
+ config.interfaces.keys.should eql %w(INST_INT)
174
+ tf.unlink
175
+ end
176
+ end
177
+
178
+ context "with DONT_CONNECT" do
179
+ it "should complain about too many parameters" do
180
+ tf = Tempfile.new('unittest')
181
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
182
+ tf.puts 'DONT_CONNECT TRUE'
183
+ tf.close
184
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for DONT_CONNECT.")
185
+ tf.unlink
186
+ end
187
+
188
+ it "should set the interface to not connect on startup" do
189
+ tf = Tempfile.new('unittest')
190
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
191
+ tf.puts 'DONT_CONNECT'
192
+ tf.close
193
+ config = CmdTlmServerConfig.new(tf.path)
194
+ config.interfaces['CTSCONFIGTESTINTERFACE'].connect_on_startup.should be_falsey
195
+ tf.unlink
196
+ end
197
+ end
198
+
199
+ context "with DONT_RECONNECT" do
200
+ it "should complain about too many parameters" do
201
+ tf = Tempfile.new('unittest')
202
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
203
+ tf.puts 'DONT_RECONNECT TRUE'
204
+ tf.close
205
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for DONT_RECONNECT.")
206
+ tf.unlink
207
+ end
208
+
209
+ it "should set the interface to not auto reconnect" do
210
+ tf = Tempfile.new('unittest')
211
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
212
+ tf.puts 'DONT_RECONNECT'
213
+ tf.close
214
+ config = CmdTlmServerConfig.new(tf.path)
215
+ config.interfaces['CTSCONFIGTESTINTERFACE'].auto_reconnect.should be_falsey
216
+ tf.unlink
217
+ end
218
+ end
219
+
220
+ context "with RECONNECT_DELAY" do
221
+ it "should complain about too many parameters" do
222
+ tf = Tempfile.new('unittest')
223
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
224
+ tf.puts 'RECONNECT_DELAY 5.0 TRUE'
225
+ tf.close
226
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for RECONNECT_DELAY.")
227
+ tf.unlink
228
+ end
229
+
230
+ it "should set the delay between reconnect tries" do
231
+ tf = Tempfile.new('unittest')
232
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
233
+ tf.puts 'RECONNECT_DELAY 5.0'
234
+ tf.close
235
+ config = CmdTlmServerConfig.new(tf.path)
236
+ config.interfaces['CTSCONFIGTESTINTERFACE'].reconnect_delay.should eql 5.0
237
+ tf.unlink
238
+ end
239
+ end
240
+
241
+ context "with DISABLE_DISCONNECT" do
242
+ it "should complain about too many parameters" do
243
+ tf = Tempfile.new('unittest')
244
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
245
+ tf.puts 'DISABLE_DISCONNECT TRUE'
246
+ tf.close
247
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for DISABLE_DISCONNECT.")
248
+ tf.unlink
249
+ end
250
+
251
+ it "should set the interface to not allow disconnects" do
252
+ tf = Tempfile.new('unittest')
253
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
254
+ tf.puts 'DISABLE_DISCONNECT'
255
+ tf.close
256
+ config = CmdTlmServerConfig.new(tf.path)
257
+ config.interfaces['CTSCONFIGTESTINTERFACE'].disable_disconnect.should be_truthy
258
+ tf.unlink
259
+ end
260
+ end
261
+
262
+ context "with LOG" do
263
+ it "should complain about too many parameters" do
264
+ tf = Tempfile.new('unittest')
265
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
266
+ tf.puts 'LOG PacketLogWriter TRUE'
267
+ tf.close
268
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for LOG.")
269
+ tf.unlink
270
+ end
271
+
272
+ it "should complain about unknown log writers" do
273
+ tf = Tempfile.new('unittest')
274
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
275
+ tf.puts 'LOG MyLogWriter'
276
+ tf.close
277
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Unknown packet log writer: MYLOGWRITER")
278
+ tf.unlink
279
+ end
280
+
281
+ it "should add a packet log writer to the interface" do
282
+ tf = Tempfile.new('unittest')
283
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
284
+ tf.puts 'LOG DEFAULT'
285
+ tf.close
286
+ config = CmdTlmServerConfig.new(tf.path)
287
+ config.interfaces['CTSCONFIGTESTINTERFACE'].packet_log_writer_pairs.length.should eql 1
288
+ tf.unlink
289
+
290
+ tf = Tempfile.new('unittest')
291
+ tf.puts 'PACKET_LOG_WRITER MY_WRITER packet_log_writer.rb'
292
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
293
+ tf.puts 'LOG DEFAULT'
294
+ tf.puts 'LOG MY_WRITER'
295
+ tf.close
296
+ config = CmdTlmServerConfig.new(tf.path)
297
+ config.interfaces['CTSCONFIGTESTINTERFACE'].packet_log_writer_pairs.length.should eql 2
298
+ tf.unlink
299
+ end
300
+ end
301
+
302
+ context "with DONT_LOG" do
303
+ it "should complain about too many parameters" do
304
+ tf = Tempfile.new('unittest')
305
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
306
+ tf.puts 'DONT_LOG TRUE'
307
+ tf.close
308
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for DONT_LOG.")
309
+ tf.unlink
310
+ end
311
+
312
+ it "should remove loggers from the interface" do
313
+ tf = Tempfile.new('unittest')
314
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
315
+ tf.puts 'DONT_LOG'
316
+ tf.close
317
+ config = CmdTlmServerConfig.new(tf.path)
318
+ config.interfaces['CTSCONFIGTESTINTERFACE'].packet_log_writer_pairs.length.should eql 0
319
+ tf.unlink
320
+ end
321
+ end
322
+
323
+ context "with TARGET" do
324
+ it "should complain about too many parameters" do
325
+ tf = Tempfile.new('unittest')
326
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
327
+ tf.puts 'TARGET TEST TRUE'
328
+ tf.close
329
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for TARGET.")
330
+ tf.unlink
331
+ end
332
+
333
+ it "should complain about unknown targets" do
334
+ tf = Tempfile.new('unittest')
335
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
336
+ tf.puts 'TARGET BLAH'
337
+ tf.close
338
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Unknown target BLAH mapped to interface CTSCONFIGTESTINTERFACE")
339
+ tf.unlink
340
+ end
341
+ end
342
+
343
+ context "with ROUTER" do
344
+ it "should create a new router" do
345
+ tf = Tempfile.new('unittest')
346
+ tf.puts 'ROUTER MY_ROUTER1 cts_config_test_interface.rb'
347
+ tf.puts 'ROUTER MY_ROUTER2 cts_config_test_interface.rb false'
348
+ tf.close
349
+ config = CmdTlmServerConfig.new(tf.path)
350
+ config.routers.keys.should eql %w(MY_ROUTER1 MY_ROUTER2)
351
+ tf.unlink
352
+ end
353
+ end
354
+
355
+ context "with ROUTE" do
356
+ it "should complain about too many parameters" do
357
+ tf = Tempfile.new('unittest')
358
+ tf.puts 'ROUTER ROUTER cts_config_test_interface.rb'
359
+ tf.puts 'ROUTE interface more'
360
+ tf.close
361
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Too many parameters for ROUTE.")
362
+ tf.unlink
363
+ end
364
+
365
+ it "should complain if a router hasn't been defined" do
366
+ tf = Tempfile.new('unittest')
367
+ tf.puts 'ROUTE interface more'
368
+ tf.close
369
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "No current router for ROUTE")
370
+ tf.unlink
371
+ end
372
+
373
+ it "should complain if the interface is undefined" do
374
+ tf = Tempfile.new('unittest')
375
+ tf.puts 'ROUTER ROUTER cts_config_test_interface.rb'
376
+ tf.puts 'ROUTE CTSCONFIGTESTINTERFACE'
377
+ tf.close
378
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Unknown interface CTSCONFIGTESTINTERFACE mapped to router ROUTER")
379
+ tf.unlink
380
+ end
381
+
382
+ it "should create the route" do
383
+ tf = Tempfile.new('unittest')
384
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
385
+ tf.puts 'ROUTER ROUTER cts_config_test_interface.rb'
386
+ tf.puts 'ROUTE CTSCONFIGTESTINTERFACE'
387
+ tf.close
388
+ config = CmdTlmServerConfig.new(tf.path)
389
+ config.routers['ROUTER'].interfaces[0].should be_a CtsConfigTestInterface
390
+ tf.unlink
391
+ end
392
+ end
393
+
394
+ context "with BACKGROUND_TASK" do
395
+ it "should create a background task" do
396
+ tf = Tempfile.new('unittest')
397
+ tf.puts 'BACKGROUND_TASK cts_config_test_interface.rb'
398
+ tf.puts 'BACKGROUND_TASK cts_config_test_interface.rb false'
399
+ tf.close
400
+ config = CmdTlmServerConfig.new(tf.path)
401
+ config.background_tasks.length.should eql 2
402
+ config.background_tasks[0].should be_a CtsConfigTestInterface
403
+ config.background_tasks[1].should be_a CtsConfigTestInterface
404
+ tf.unlink
405
+ end
406
+ end
407
+
408
+ end
409
+ end
410
+ end
411
+