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,118 +1,118 @@
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/streams/preidentified_stream_protocol'
13
- require 'cosmos/interfaces/interface'
14
- require 'cosmos/streams/stream'
15
-
16
- module Cosmos
17
-
18
- class MyInterface < Interface; end
19
-
20
- describe PreidentifiedStreamProtocol do
21
- before(:each) do
22
- @psp = PreidentifiedStreamProtocol.new
23
- end
24
-
25
- after(:all) do
26
- clean_config()
27
- end
28
-
29
- it "should handle receiving a bad packet length" do
30
- @psp = PreidentifiedStreamProtocol.new(nil, 5)
31
- pkt = System.telemetry.packet("COSMOS","VERSION")
32
- class MyStream < Stream
33
- def connected?; true; end
34
- def read; $buffer; end
35
- def write(data); $buffer = data; end
36
- end
37
- stream = MyStream.new
38
- @psp.connect(stream)
39
- time = Time.new(2020,1,31,12,15,30.5)
40
- pkt.received_time = time
41
- @psp.write(pkt)
42
- expect { packet = @psp.read }.to raise_error(RuntimeError)
43
- end
44
-
45
- describe "initialize" do
46
- it "should initialize attributes" do
47
- @psp.bytes_read.should eql 0
48
- @psp.bytes_written.should eql 0
49
- @psp.interface.should be_nil
50
- @psp.stream.should be_nil
51
- @psp.post_read_data_callback.should be_nil
52
- @psp.post_read_packet_callback.should be_nil
53
- @psp.pre_write_packet_callback.should be_nil
54
- end
55
- end
56
-
57
- describe "write" do
58
- it "should create a packet header" do
59
- pkt = System.telemetry.packet("COSMOS","VERSION")
60
- class MyStream < Stream
61
- def connected?; true; end
62
- def read; $buffer; end
63
- def write(data); $buffer = data; end
64
- end
65
- stream = MyStream.new
66
- @psp.connect(stream)
67
- time = Time.new(2020,1,31,12,15,30.5)
68
- pkt.received_time = time
69
- @psp.write(pkt)
70
- $buffer[0..3].unpack('N')[0].should eql time.to_f.to_i
71
- $buffer[4..7].unpack('N')[0].should eql 500000
72
- offset = 8
73
- tgt_name_length = $buffer[offset].unpack('C')[0]
74
- offset += 1 # for the length field
75
- $buffer[offset...(offset+tgt_name_length)].should eql 'COSMOS'
76
- offset += tgt_name_length
77
- pkt_name_length = $buffer[offset].unpack('C')[0]
78
- offset += 1 # for the length field
79
- $buffer[offset...(offset+pkt_name_length)].should eql 'VERSION'
80
- offset += pkt_name_length
81
- $buffer[offset..(offset+3)].unpack('N')[0].should eql pkt.buffer.length
82
- offset += 4
83
- $buffer[offset..-1].should eql pkt.buffer
84
- end
85
- end
86
-
87
- describe "read" do
88
- it "should return a packet" do
89
- pkt = System.telemetry.packet("COSMOS","VERSION")
90
- pkt.write("PKT_ID", 1)
91
- pkt.write("COSMOS", "TEST")
92
- class MyStream < Stream
93
- def connected?; true; end
94
- def read; $buffer; end
95
- def write(data); $buffer = data; end
96
- end
97
- stream = MyStream.new
98
- @psp.connect(stream)
99
- time = Time.new(2020,1,31,12,15,30.5)
100
- pkt.received_time = time
101
- @psp.write(pkt)
102
- packet = @psp.read
103
- packet.target_name.should eql 'COSMOS'
104
- packet.packet_name.should eql 'VERSION'
105
- packet.identified?.should be_truthy
106
- packet.defined?.should be_falsey
107
-
108
- pkt2 = System.telemetry.update!("COSMOS","VERSION",packet.buffer)
109
- pkt2.read('PKT_ID').should eql 1
110
- pkt2.read('COSMOS').should eql 'TEST'
111
- pkt2.identified?.should be_truthy
112
- pkt2.defined?.should be_truthy
113
- end
114
- end
115
-
116
- end
117
- end
118
-
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/streams/preidentified_stream_protocol'
13
+ require 'cosmos/interfaces/interface'
14
+ require 'cosmos/streams/stream'
15
+
16
+ module Cosmos
17
+
18
+ class MyInterface < Interface; end
19
+
20
+ describe PreidentifiedStreamProtocol do
21
+ before(:each) do
22
+ @psp = PreidentifiedStreamProtocol.new
23
+ end
24
+
25
+ after(:all) do
26
+ clean_config()
27
+ end
28
+
29
+ it "should handle receiving a bad packet length" do
30
+ @psp = PreidentifiedStreamProtocol.new(nil, 5)
31
+ pkt = System.telemetry.packet("COSMOS","VERSION")
32
+ class MyStream < Stream
33
+ def connected?; true; end
34
+ def read; $buffer; end
35
+ def write(data); $buffer = data; end
36
+ end
37
+ stream = MyStream.new
38
+ @psp.connect(stream)
39
+ time = Time.new(2020,1,31,12,15,30.5)
40
+ pkt.received_time = time
41
+ @psp.write(pkt)
42
+ expect { packet = @psp.read }.to raise_error(RuntimeError)
43
+ end
44
+
45
+ describe "initialize" do
46
+ it "should initialize attributes" do
47
+ @psp.bytes_read.should eql 0
48
+ @psp.bytes_written.should eql 0
49
+ @psp.interface.should be_nil
50
+ @psp.stream.should be_nil
51
+ @psp.post_read_data_callback.should be_nil
52
+ @psp.post_read_packet_callback.should be_nil
53
+ @psp.pre_write_packet_callback.should be_nil
54
+ end
55
+ end
56
+
57
+ describe "write" do
58
+ it "should create a packet header" do
59
+ pkt = System.telemetry.packet("COSMOS","VERSION")
60
+ class MyStream < Stream
61
+ def connected?; true; end
62
+ def read; $buffer; end
63
+ def write(data); $buffer = data; end
64
+ end
65
+ stream = MyStream.new
66
+ @psp.connect(stream)
67
+ time = Time.new(2020,1,31,12,15,30.5)
68
+ pkt.received_time = time
69
+ @psp.write(pkt)
70
+ $buffer[0..3].unpack('N')[0].should eql time.to_f.to_i
71
+ $buffer[4..7].unpack('N')[0].should eql 500000
72
+ offset = 8
73
+ tgt_name_length = $buffer[offset].unpack('C')[0]
74
+ offset += 1 # for the length field
75
+ $buffer[offset...(offset+tgt_name_length)].should eql 'COSMOS'
76
+ offset += tgt_name_length
77
+ pkt_name_length = $buffer[offset].unpack('C')[0]
78
+ offset += 1 # for the length field
79
+ $buffer[offset...(offset+pkt_name_length)].should eql 'VERSION'
80
+ offset += pkt_name_length
81
+ $buffer[offset..(offset+3)].unpack('N')[0].should eql pkt.buffer.length
82
+ offset += 4
83
+ $buffer[offset..-1].should eql pkt.buffer
84
+ end
85
+ end
86
+
87
+ describe "read" do
88
+ it "should return a packet" do
89
+ pkt = System.telemetry.packet("COSMOS","VERSION")
90
+ pkt.write("PKT_ID", 1)
91
+ pkt.write("COSMOS", "TEST")
92
+ class MyStream < Stream
93
+ def connected?; true; end
94
+ def read; $buffer; end
95
+ def write(data); $buffer = data; end
96
+ end
97
+ stream = MyStream.new
98
+ @psp.connect(stream)
99
+ time = Time.new(2020,1,31,12,15,30.5)
100
+ pkt.received_time = time
101
+ @psp.write(pkt)
102
+ packet = @psp.read
103
+ packet.target_name.should eql 'COSMOS'
104
+ packet.packet_name.should eql 'VERSION'
105
+ packet.identified?.should be_truthy
106
+ packet.defined?.should be_falsey
107
+
108
+ pkt2 = System.telemetry.update!("COSMOS","VERSION",packet.buffer)
109
+ pkt2.read('PKT_ID').should eql 1
110
+ pkt2.read('COSMOS').should eql 'TEST'
111
+ pkt2.identified?.should be_truthy
112
+ pkt2.defined?.should be_truthy
113
+ end
114
+ end
115
+
116
+ end
117
+ end
118
+
@@ -1,105 +1,105 @@
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/streams/serial_stream'
13
-
14
- module Cosmos
15
-
16
- describe SerialStream do
17
- describe "initialize" do
18
- it "should complain if neither a read or write port given" do
19
- expect { SerialStream.new(nil,nil,9600,:EVEN,1,nil,nil) }.to raise_error("Either a write port or read port must be given")
20
- end
21
- end
22
-
23
- describe "connected?" do
24
- it "should be connected when initialized" do
25
- driver = double("driver")
26
- expect(SerialDriver).to receive(:new).and_return(driver)
27
- ss = SerialStream.new('COM1',nil,9600,:EVEN,1,nil,nil)
28
- ss.connected?.should be_truthy
29
- end
30
- end
31
-
32
- describe "read" do
33
- it "should raise an error if no read port given" do
34
- driver = double("driver")
35
- expect(SerialDriver).to receive(:new).and_return(driver)
36
- ss = SerialStream.new('COM1',nil,9600,:EVEN,1,nil,nil)
37
- expect { ss.read }.to raise_error("Attempt to read from write only stream")
38
- end
39
-
40
- it "should call read from the driver" do
41
- driver = double("driver")
42
- expect(driver).to receive(:read).and_return 'test'
43
- expect(SerialDriver).to receive(:new).and_return(driver)
44
- ss = SerialStream.new('COM1','COM1',9600,:EVEN,1,nil,nil)
45
- ss.read.should eql 'test'
46
- end
47
- end
48
-
49
- describe "write" do
50
- it "should raise an error if no write port given" do
51
- driver = double("driver")
52
- expect(SerialDriver).to receive(:new).and_return(driver)
53
- ss = SerialStream.new(nil,'COM1',9600,:EVEN,1,nil,nil)
54
- expect { ss.write('') }.to raise_error("Attempt to write to read only stream")
55
- end
56
-
57
- it "should call write from the driver" do
58
- driver = double("driver")
59
- expect(driver).to receive(:write).with('test')
60
- expect(SerialDriver).to receive(:new).and_return(driver)
61
- ss = SerialStream.new('COM1','COM1',9600,:EVEN,1,nil,nil)
62
- ss.write('test')
63
- end
64
- end
65
-
66
- describe "disconnect" do
67
- it "should close the write driver" do
68
- driver = double("driver")
69
- expect(driver).to receive(:closed?).and_return(false)
70
- expect(driver).to receive(:close)
71
- expect(SerialDriver).to receive(:new).and_return(driver)
72
- ss = SerialStream.new('COM1',nil,9600,:EVEN,1,nil,nil)
73
- ss.connected?.should be_truthy
74
- ss.disconnect
75
- ss.connected?.should be_falsey
76
- end
77
-
78
- it "should close the read driver" do
79
- driver = double("driver")
80
- expect(driver).to receive(:closed?).and_return(false)
81
- expect(driver).to receive(:close)
82
- expect(SerialDriver).to receive(:new).and_return(driver)
83
- ss = SerialStream.new(nil,'COM1',9600,:EVEN,1,nil,nil)
84
- ss.connected?.should be_truthy
85
- ss.disconnect
86
- ss.connected?.should be_falsey
87
- end
88
-
89
- it "shouldn't close the driver twice" do
90
- driver = double("driver")
91
- expect(driver).to receive(:closed?).and_return(false, true)
92
- expect(driver).to receive(:close).once
93
- expect(SerialDriver).to receive(:new).and_return(driver)
94
- ss = SerialStream.new('COM1','COM1',9600,:EVEN,1,nil,nil)
95
- ss.connected?.should be_truthy
96
- ss.disconnect
97
- ss.connected?.should be_falsey
98
- ss.disconnect
99
- ss.connected?.should be_falsey
100
- end
101
- end
102
-
103
- end
104
- end
105
-
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/streams/serial_stream'
13
+
14
+ module Cosmos
15
+
16
+ describe SerialStream do
17
+ describe "initialize" do
18
+ it "should complain if neither a read or write port given" do
19
+ expect { SerialStream.new(nil,nil,9600,:EVEN,1,nil,nil) }.to raise_error("Either a write port or read port must be given")
20
+ end
21
+ end
22
+
23
+ describe "connected?" do
24
+ it "should be connected when initialized" do
25
+ driver = double("driver")
26
+ expect(SerialDriver).to receive(:new).and_return(driver)
27
+ ss = SerialStream.new('COM1',nil,9600,:EVEN,1,nil,nil)
28
+ ss.connected?.should be_truthy
29
+ end
30
+ end
31
+
32
+ describe "read" do
33
+ it "should raise an error if no read port given" do
34
+ driver = double("driver")
35
+ expect(SerialDriver).to receive(:new).and_return(driver)
36
+ ss = SerialStream.new('COM1',nil,9600,:EVEN,1,nil,nil)
37
+ expect { ss.read }.to raise_error("Attempt to read from write only stream")
38
+ end
39
+
40
+ it "should call read from the driver" do
41
+ driver = double("driver")
42
+ expect(driver).to receive(:read).and_return 'test'
43
+ expect(SerialDriver).to receive(:new).and_return(driver)
44
+ ss = SerialStream.new('COM1','COM1',9600,:EVEN,1,nil,nil)
45
+ ss.read.should eql 'test'
46
+ end
47
+ end
48
+
49
+ describe "write" do
50
+ it "should raise an error if no write port given" do
51
+ driver = double("driver")
52
+ expect(SerialDriver).to receive(:new).and_return(driver)
53
+ ss = SerialStream.new(nil,'COM1',9600,:EVEN,1,nil,nil)
54
+ expect { ss.write('') }.to raise_error("Attempt to write to read only stream")
55
+ end
56
+
57
+ it "should call write from the driver" do
58
+ driver = double("driver")
59
+ expect(driver).to receive(:write).with('test')
60
+ expect(SerialDriver).to receive(:new).and_return(driver)
61
+ ss = SerialStream.new('COM1','COM1',9600,:EVEN,1,nil,nil)
62
+ ss.write('test')
63
+ end
64
+ end
65
+
66
+ describe "disconnect" do
67
+ it "should close the write driver" do
68
+ driver = double("driver")
69
+ expect(driver).to receive(:closed?).and_return(false)
70
+ expect(driver).to receive(:close)
71
+ expect(SerialDriver).to receive(:new).and_return(driver)
72
+ ss = SerialStream.new('COM1',nil,9600,:EVEN,1,nil,nil)
73
+ ss.connected?.should be_truthy
74
+ ss.disconnect
75
+ ss.connected?.should be_falsey
76
+ end
77
+
78
+ it "should close the read driver" do
79
+ driver = double("driver")
80
+ expect(driver).to receive(:closed?).and_return(false)
81
+ expect(driver).to receive(:close)
82
+ expect(SerialDriver).to receive(:new).and_return(driver)
83
+ ss = SerialStream.new(nil,'COM1',9600,:EVEN,1,nil,nil)
84
+ ss.connected?.should be_truthy
85
+ ss.disconnect
86
+ ss.connected?.should be_falsey
87
+ end
88
+
89
+ it "shouldn't close the driver twice" do
90
+ driver = double("driver")
91
+ expect(driver).to receive(:closed?).and_return(false, true)
92
+ expect(driver).to receive(:close).once
93
+ expect(SerialDriver).to receive(:new).and_return(driver)
94
+ ss = SerialStream.new('COM1','COM1',9600,:EVEN,1,nil,nil)
95
+ ss.connected?.should be_truthy
96
+ ss.disconnect
97
+ ss.connected?.should be_falsey
98
+ ss.disconnect
99
+ ss.connected?.should be_falsey
100
+ end
101
+ end
102
+
103
+ end
104
+ end
105
+
@@ -1,332 +1,332 @@
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/streams/stream_protocol'
13
- require 'cosmos/interfaces/interface'
14
- require 'cosmos/streams/stream'
15
-
16
- module Cosmos
17
-
18
- describe StreamProtocol do
19
- before(:each) do
20
- @sp = StreamProtocol.new
21
- end
22
-
23
- describe "initialize" do
24
- it "should initialize attributes" do
25
- @sp.bytes_read.should eql 0
26
- @sp.bytes_written.should eql 0
27
- @sp.interface.should be_nil
28
- @sp.stream.should be_nil
29
- @sp.post_read_data_callback.should be_nil
30
- @sp.post_read_packet_callback.should be_nil
31
- @sp.pre_write_packet_callback.should be_nil
32
- end
33
- end
34
-
35
- describe "interface=" do
36
- it "should set the interface" do
37
- class MyInterface1 < Interface; end
38
- interface = MyInterface1.new
39
- @sp.interface = interface
40
- @sp.interface.should eql interface
41
- end
42
-
43
- it "should set the post_read_data callback" do
44
- class MyInterface2 < Interface
45
- def post_read_data(buffer); 1; end
46
- end
47
- interface = MyInterface2.new
48
- @sp.interface = interface
49
- @sp.post_read_data_callback.call(nil).should eql 1
50
- end
51
-
52
- it "should set the post_read_packet callback" do
53
- class MyInterface3 < Interface
54
- def post_read_packet(packet); 2; end
55
- end
56
- interface = MyInterface3.new
57
- @sp.interface = interface
58
- @sp.post_read_packet_callback.call(nil).should eql 2
59
- end
60
-
61
- it "should set the pre_write_packet callback" do
62
- class MyInterface4 < Interface
63
- def pre_write_packet(packet); 3; end
64
- end
65
- interface = MyInterface4.new
66
- @sp.interface = interface
67
- @sp.pre_write_packet_callback.call(nil).should eql 3
68
- end
69
- end
70
-
71
- describe "connect" do
72
- it "should set the stream" do
73
- class MyStream1 < Stream; end
74
- stream = MyStream1.new
75
- @sp.connect(stream)
76
- @sp.stream.should eql stream
77
- end
78
- end
79
-
80
- describe "connected" do
81
- it "should return false if the stream hasn't been set" do
82
- @sp.connected?.should be_falsey
83
- end
84
-
85
- it "should return the status of the stream connection" do
86
- class MyStream2 < Stream
87
- def connected?; true; end
88
- end
89
- stream = MyStream2.new
90
- @sp.connect(stream)
91
- @sp.connected?.should be_truthy
92
- end
93
- end
94
-
95
- describe "disconnect" do
96
- it "should call disconnect on the stream" do
97
- $test = false
98
- class MyStream3 < Stream
99
- def disconnect; $test = true; end
100
- end
101
- stream = MyStream3.new
102
- @sp.connect(stream)
103
- $test.should be_falsey
104
- @sp.disconnect
105
- $test.should be_truthy
106
- end
107
- end
108
-
109
- describe "read" do
110
- it "should read data from the stream" do
111
- class MyStream33 < Stream
112
- def connected?; true; end
113
- def read; "\x01\x02\x03\x04"; end
114
- end
115
- stream = MyStream33.new
116
- @sp.connect(stream)
117
- packet = @sp.read
118
- packet.length.should eql 4
119
- end
120
-
121
- it "should handle timeouts from the stream" do
122
- class MyStream4 < Stream
123
- def connected?; true; end
124
- def read; raise Timeout::Error; end
125
- end
126
- stream = MyStream4.new
127
- @sp.connect(stream)
128
- @sp.read.should be_nil
129
- end
130
-
131
- it "should handle a sync pattern" do
132
- $read_cnt = 0
133
- class MyStream5 < Stream
134
- def connected?; true; end
135
- def read
136
- $read_cnt += 1
137
- case $read_cnt
138
- when 1
139
- "\x00\x00\x00\x00\x00\x00"
140
- when 2
141
- "\x00\x12\x34\x10\x20"
142
- when 3
143
- ""
144
- end
145
- end
146
- end
147
- @sp = StreamProtocol.new(0, '0x1234')
148
- stream = MyStream5.new
149
- @sp.connect(stream)
150
- packet = @sp.read
151
- packet.length.should eql 4 # sync plus two bytes
152
- end
153
-
154
- it "should handle a sync pattern split across reads" do
155
- $read_cnt = 0
156
- class MyStream6 < Stream
157
- def connected?; true; end
158
- def read
159
- $read_cnt += 1
160
- case $read_cnt
161
- when 1
162
- "\x00\x00\x00\x00\x00\x00\x00\x12"
163
- when 2
164
- "\x34\x20"
165
- when 3
166
- ""
167
- end
168
- end
169
- end
170
- @sp = StreamProtocol.new(0, '0x1234')
171
- stream = MyStream6.new
172
- @sp.connect(stream)
173
- packet = @sp.read
174
- packet.length.should eql 3 # sync plus one byte
175
- end
176
-
177
- it "should handle a false positive sync pattern" do
178
- $read_cnt = 0
179
- class MyStream7 < Stream
180
- def connected?; true; end
181
- def read
182
- $read_cnt += 1
183
- case $read_cnt
184
- when 1
185
- "\x00\x00\x12\x00\x00\x12"
186
- when 2
187
- "\x34\x20"
188
- when 3
189
- ""
190
- end
191
- end
192
- end
193
- @sp = StreamProtocol.new(0, '0x1234')
194
- stream = MyStream7.new
195
- @sp.connect(stream)
196
- packet = @sp.read
197
- packet.length.should eql 3 # sync plus one byte
198
- end
199
-
200
- it "should discard leading bytes from the stream" do
201
- class MyStream8 < Stream
202
- def connected?; true; end
203
- def read
204
- "\x01\x02\x03\x04"
205
- end
206
- end
207
- @sp = StreamProtocol.new(2, nil)
208
- stream = MyStream8.new
209
- @sp.connect(stream)
210
- packet = @sp.read
211
- packet.length.should eql 2
212
- packet.buffer.formatted.should match(/03 04/)
213
- end
214
-
215
- it "should call the post_read_data method on the inteface" do
216
- class MyStream9 < Stream
217
- def connected?; true; end
218
- def read
219
- "\x01\x02\x03\x04"
220
- end
221
- end
222
- class MyInterface5 < Interface
223
- def post_read_data(buffer); "\x00\x01\x02\x03"; end
224
- end
225
- interface = MyInterface5.new
226
- @sp.interface = interface
227
- stream = MyStream9.new
228
- @sp.connect(stream)
229
- packet = @sp.read
230
- packet.length.should eql 4
231
- packet.buffer.formatted.should match(/00 01 02 03/)
232
-
233
- # Simulate the interface returning an empty string which means to skip
234
- # this packet and go back to reading data.
235
- $read_cnt = 0
236
- class MyInterface5 < Interface
237
- def post_read_data(buffer)
238
- $read_cnt += 1
239
- case $read_cnt
240
- when 1
241
- ""
242
- when 2
243
- "\x01\x02"
244
- end
245
- end
246
- end
247
- interface = MyInterface5.new
248
- @sp.interface = interface
249
- packet = @sp.read
250
- packet.length.should eql 2
251
-
252
- # Simulate the interface returning nil which means the connection is
253
- # lost.
254
- $read_cnt = 0
255
- class MyInterface5 < Interface
256
- def post_read_data(buffer); nil; end
257
- end
258
- interface = MyInterface5.new
259
- @sp.interface = interface
260
- packet = @sp.read
261
- packet.should be_nil
262
- end
263
-
264
- it "should call the post_read_packet method on the inteface" do
265
- class MyStream10 < Stream
266
- def connected?; true; end
267
- def read
268
- "\x01\x02\x03\x04"
269
- end
270
- end
271
- class MyInterface6 < Interface
272
- def post_read_packet(packet)
273
- packet.buffer = "\x00\x01\x02\x03"
274
- packet
275
- end
276
- end
277
- interface = MyInterface6.new
278
- @sp.interface = interface
279
- stream = MyStream10.new
280
- @sp.connect(stream)
281
- packet = @sp.read
282
- packet.length.should eql 4
283
- packet.buffer.formatted.should match(/00 01 02 03/)
284
- end
285
- end
286
-
287
- describe "write" do
288
- it "should call pre_write_packet on the interface" do
289
- $buffer = ''
290
- class MyStream11 < Stream
291
- def connected?; true; end
292
- def write(buffer) $buffer = buffer; end
293
- end
294
- class MyInterface7 < Interface
295
- def pre_write_packet(packet); "\x01\x02\x03\x04"; end
296
- end
297
- packet = Packet.new(nil, nil, :BIG_ENDIAN, nil, "\x00\x01\x02\x03")
298
- @sp.interface = MyInterface7.new
299
- @sp.connect(MyStream11.new)
300
- @sp.write(packet)
301
- $buffer.should eql "\x01\02\03\04"
302
- end
303
-
304
- it "should write the packet buffer to the stream" do
305
- $buffer = ''
306
- class MyStream11 < Stream
307
- def connected?; true; end
308
- def write(buffer) $buffer = buffer; end
309
- end
310
- packet = Packet.new(nil, nil, :BIG_ENDIAN, nil, "\x01\x02\x03\x04")
311
- @sp.connect(MyStream11.new)
312
- @sp.write(packet)
313
- $buffer.should eql "\x01\02\03\04"
314
- end
315
- end
316
-
317
- describe "write_raw" do
318
- it "should write the raw buffer to the stream" do
319
- $buffer = ''
320
- class MyStream11 < Stream
321
- def connected?; true; end
322
- def write(buffer) $buffer = buffer; end
323
- end
324
- @sp.connect(MyStream11.new)
325
- @sp.write_raw("\x01\x02\x03\x04")
326
- $buffer.should eql "\x01\02\03\04"
327
- end
328
- end
329
-
330
- end
331
- end
332
-
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/streams/stream_protocol'
13
+ require 'cosmos/interfaces/interface'
14
+ require 'cosmos/streams/stream'
15
+
16
+ module Cosmos
17
+
18
+ describe StreamProtocol do
19
+ before(:each) do
20
+ @sp = StreamProtocol.new
21
+ end
22
+
23
+ describe "initialize" do
24
+ it "should initialize attributes" do
25
+ @sp.bytes_read.should eql 0
26
+ @sp.bytes_written.should eql 0
27
+ @sp.interface.should be_nil
28
+ @sp.stream.should be_nil
29
+ @sp.post_read_data_callback.should be_nil
30
+ @sp.post_read_packet_callback.should be_nil
31
+ @sp.pre_write_packet_callback.should be_nil
32
+ end
33
+ end
34
+
35
+ describe "interface=" do
36
+ it "should set the interface" do
37
+ class MyInterface1 < Interface; end
38
+ interface = MyInterface1.new
39
+ @sp.interface = interface
40
+ @sp.interface.should eql interface
41
+ end
42
+
43
+ it "should set the post_read_data callback" do
44
+ class MyInterface2 < Interface
45
+ def post_read_data(buffer); 1; end
46
+ end
47
+ interface = MyInterface2.new
48
+ @sp.interface = interface
49
+ @sp.post_read_data_callback.call(nil).should eql 1
50
+ end
51
+
52
+ it "should set the post_read_packet callback" do
53
+ class MyInterface3 < Interface
54
+ def post_read_packet(packet); 2; end
55
+ end
56
+ interface = MyInterface3.new
57
+ @sp.interface = interface
58
+ @sp.post_read_packet_callback.call(nil).should eql 2
59
+ end
60
+
61
+ it "should set the pre_write_packet callback" do
62
+ class MyInterface4 < Interface
63
+ def pre_write_packet(packet); 3; end
64
+ end
65
+ interface = MyInterface4.new
66
+ @sp.interface = interface
67
+ @sp.pre_write_packet_callback.call(nil).should eql 3
68
+ end
69
+ end
70
+
71
+ describe "connect" do
72
+ it "should set the stream" do
73
+ class MyStream1 < Stream; end
74
+ stream = MyStream1.new
75
+ @sp.connect(stream)
76
+ @sp.stream.should eql stream
77
+ end
78
+ end
79
+
80
+ describe "connected" do
81
+ it "should return false if the stream hasn't been set" do
82
+ @sp.connected?.should be_falsey
83
+ end
84
+
85
+ it "should return the status of the stream connection" do
86
+ class MyStream2 < Stream
87
+ def connected?; true; end
88
+ end
89
+ stream = MyStream2.new
90
+ @sp.connect(stream)
91
+ @sp.connected?.should be_truthy
92
+ end
93
+ end
94
+
95
+ describe "disconnect" do
96
+ it "should call disconnect on the stream" do
97
+ $test = false
98
+ class MyStream3 < Stream
99
+ def disconnect; $test = true; end
100
+ end
101
+ stream = MyStream3.new
102
+ @sp.connect(stream)
103
+ $test.should be_falsey
104
+ @sp.disconnect
105
+ $test.should be_truthy
106
+ end
107
+ end
108
+
109
+ describe "read" do
110
+ it "should read data from the stream" do
111
+ class MyStream33 < Stream
112
+ def connected?; true; end
113
+ def read; "\x01\x02\x03\x04"; end
114
+ end
115
+ stream = MyStream33.new
116
+ @sp.connect(stream)
117
+ packet = @sp.read
118
+ packet.length.should eql 4
119
+ end
120
+
121
+ it "should handle timeouts from the stream" do
122
+ class MyStream4 < Stream
123
+ def connected?; true; end
124
+ def read; raise Timeout::Error; end
125
+ end
126
+ stream = MyStream4.new
127
+ @sp.connect(stream)
128
+ @sp.read.should be_nil
129
+ end
130
+
131
+ it "should handle a sync pattern" do
132
+ $read_cnt = 0
133
+ class MyStream5 < Stream
134
+ def connected?; true; end
135
+ def read
136
+ $read_cnt += 1
137
+ case $read_cnt
138
+ when 1
139
+ "\x00\x00\x00\x00\x00\x00"
140
+ when 2
141
+ "\x00\x12\x34\x10\x20"
142
+ when 3
143
+ ""
144
+ end
145
+ end
146
+ end
147
+ @sp = StreamProtocol.new(0, '0x1234')
148
+ stream = MyStream5.new
149
+ @sp.connect(stream)
150
+ packet = @sp.read
151
+ packet.length.should eql 4 # sync plus two bytes
152
+ end
153
+
154
+ it "should handle a sync pattern split across reads" do
155
+ $read_cnt = 0
156
+ class MyStream6 < Stream
157
+ def connected?; true; end
158
+ def read
159
+ $read_cnt += 1
160
+ case $read_cnt
161
+ when 1
162
+ "\x00\x00\x00\x00\x00\x00\x00\x12"
163
+ when 2
164
+ "\x34\x20"
165
+ when 3
166
+ ""
167
+ end
168
+ end
169
+ end
170
+ @sp = StreamProtocol.new(0, '0x1234')
171
+ stream = MyStream6.new
172
+ @sp.connect(stream)
173
+ packet = @sp.read
174
+ packet.length.should eql 3 # sync plus one byte
175
+ end
176
+
177
+ it "should handle a false positive sync pattern" do
178
+ $read_cnt = 0
179
+ class MyStream7 < Stream
180
+ def connected?; true; end
181
+ def read
182
+ $read_cnt += 1
183
+ case $read_cnt
184
+ when 1
185
+ "\x00\x00\x12\x00\x00\x12"
186
+ when 2
187
+ "\x34\x20"
188
+ when 3
189
+ ""
190
+ end
191
+ end
192
+ end
193
+ @sp = StreamProtocol.new(0, '0x1234')
194
+ stream = MyStream7.new
195
+ @sp.connect(stream)
196
+ packet = @sp.read
197
+ packet.length.should eql 3 # sync plus one byte
198
+ end
199
+
200
+ it "should discard leading bytes from the stream" do
201
+ class MyStream8 < Stream
202
+ def connected?; true; end
203
+ def read
204
+ "\x01\x02\x03\x04"
205
+ end
206
+ end
207
+ @sp = StreamProtocol.new(2, nil)
208
+ stream = MyStream8.new
209
+ @sp.connect(stream)
210
+ packet = @sp.read
211
+ packet.length.should eql 2
212
+ packet.buffer.formatted.should match(/03 04/)
213
+ end
214
+
215
+ it "should call the post_read_data method on the inteface" do
216
+ class MyStream9 < Stream
217
+ def connected?; true; end
218
+ def read
219
+ "\x01\x02\x03\x04"
220
+ end
221
+ end
222
+ class MyInterface5 < Interface
223
+ def post_read_data(buffer); "\x00\x01\x02\x03"; end
224
+ end
225
+ interface = MyInterface5.new
226
+ @sp.interface = interface
227
+ stream = MyStream9.new
228
+ @sp.connect(stream)
229
+ packet = @sp.read
230
+ packet.length.should eql 4
231
+ packet.buffer.formatted.should match(/00 01 02 03/)
232
+
233
+ # Simulate the interface returning an empty string which means to skip
234
+ # this packet and go back to reading data.
235
+ $read_cnt = 0
236
+ class MyInterface5 < Interface
237
+ def post_read_data(buffer)
238
+ $read_cnt += 1
239
+ case $read_cnt
240
+ when 1
241
+ ""
242
+ when 2
243
+ "\x01\x02"
244
+ end
245
+ end
246
+ end
247
+ interface = MyInterface5.new
248
+ @sp.interface = interface
249
+ packet = @sp.read
250
+ packet.length.should eql 2
251
+
252
+ # Simulate the interface returning nil which means the connection is
253
+ # lost.
254
+ $read_cnt = 0
255
+ class MyInterface5 < Interface
256
+ def post_read_data(buffer); nil; end
257
+ end
258
+ interface = MyInterface5.new
259
+ @sp.interface = interface
260
+ packet = @sp.read
261
+ packet.should be_nil
262
+ end
263
+
264
+ it "should call the post_read_packet method on the inteface" do
265
+ class MyStream10 < Stream
266
+ def connected?; true; end
267
+ def read
268
+ "\x01\x02\x03\x04"
269
+ end
270
+ end
271
+ class MyInterface6 < Interface
272
+ def post_read_packet(packet)
273
+ packet.buffer = "\x00\x01\x02\x03"
274
+ packet
275
+ end
276
+ end
277
+ interface = MyInterface6.new
278
+ @sp.interface = interface
279
+ stream = MyStream10.new
280
+ @sp.connect(stream)
281
+ packet = @sp.read
282
+ packet.length.should eql 4
283
+ packet.buffer.formatted.should match(/00 01 02 03/)
284
+ end
285
+ end
286
+
287
+ describe "write" do
288
+ it "should call pre_write_packet on the interface" do
289
+ $buffer = ''
290
+ class MyStream11 < Stream
291
+ def connected?; true; end
292
+ def write(buffer) $buffer = buffer; end
293
+ end
294
+ class MyInterface7 < Interface
295
+ def pre_write_packet(packet); "\x01\x02\x03\x04"; end
296
+ end
297
+ packet = Packet.new(nil, nil, :BIG_ENDIAN, nil, "\x00\x01\x02\x03")
298
+ @sp.interface = MyInterface7.new
299
+ @sp.connect(MyStream11.new)
300
+ @sp.write(packet)
301
+ $buffer.should eql "\x01\02\03\04"
302
+ end
303
+
304
+ it "should write the packet buffer to the stream" do
305
+ $buffer = ''
306
+ class MyStream11 < Stream
307
+ def connected?; true; end
308
+ def write(buffer) $buffer = buffer; end
309
+ end
310
+ packet = Packet.new(nil, nil, :BIG_ENDIAN, nil, "\x01\x02\x03\x04")
311
+ @sp.connect(MyStream11.new)
312
+ @sp.write(packet)
313
+ $buffer.should eql "\x01\02\03\04"
314
+ end
315
+ end
316
+
317
+ describe "write_raw" do
318
+ it "should write the raw buffer to the stream" do
319
+ $buffer = ''
320
+ class MyStream11 < Stream
321
+ def connected?; true; end
322
+ def write(buffer) $buffer = buffer; end
323
+ end
324
+ @sp.connect(MyStream11.new)
325
+ @sp.write_raw("\x01\x02\x03\x04")
326
+ $buffer.should eql "\x01\02\03\04"
327
+ end
328
+ end
329
+
330
+ end
331
+ end
332
+