cosmos 4.1.1-java → 4.2.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -2
  3. data/.travis.yml +2 -0
  4. data/.yardopts +1 -0
  5. data/Gemfile +1 -0
  6. data/Manifest.txt +130 -0
  7. data/autohotkey/tools/ConfigEditorAHK +19 -0
  8. data/autohotkey/tools/cmd_extractor.ahk +4 -4
  9. data/autohotkey/tools/cmd_sequence.ahk +9 -5
  10. data/autohotkey/tools/config_editor.ahk +197 -0
  11. data/autohotkey/tools/packet_viewer.ahk +12 -6
  12. data/autohotkey/tools/replay.ahk +29 -29
  13. data/autohotkey/tools/script_runner.ahk +10 -2
  14. data/autohotkey/tools/tlm_extractor.ahk +7 -8
  15. data/autohotkey/tools/tlm_grapher.ahk +21 -9
  16. data/bin/dart_import +2 -0
  17. data/cosmos.gemspec +18 -16
  18. data/data/config/cmd_tlm_server.yaml +9 -0
  19. data/data/config/interface_modifiers.yaml +17 -0
  20. data/data/config/item_modifiers.yaml +3 -3
  21. data/data/crc.txt +184 -90
  22. data/data/dart.png +0 -0
  23. data/demo/Gemfile +1 -0
  24. data/demo/Rakefile +4 -0
  25. data/demo/config/dart/Gemfile +54 -0
  26. data/demo/config/data/crc.txt +28 -21
  27. data/demo/config/system/system.txt +3 -0
  28. data/demo/config/system/system2.txt +3 -0
  29. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +3 -3
  30. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +1 -1
  31. data/demo/config/targets/INST/lib/sim_inst.rb +1 -1
  32. data/demo/config/targets/INST/screens/adcs.txt +2 -1
  33. data/demo/config/targets/INST/screens/array.txt +1 -1
  34. data/demo/config/targets/INST/screens/block.txt +1 -1
  35. data/demo/config/targets/INST/screens/commanding.txt +7 -2
  36. data/demo/config/targets/INST/screens/graphs.txt +1 -1
  37. data/demo/config/targets/INST/screens/ground.txt +1 -1
  38. data/demo/config/targets/INST/screens/hs.txt +2 -1
  39. data/demo/config/targets/INST/screens/latest.txt +1 -1
  40. data/demo/config/targets/INST/screens/limits.txt +1 -1
  41. data/demo/config/targets/INST/screens/other.txt +1 -1
  42. data/demo/config/targets/INST/screens/tabs.txt +1 -1
  43. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
  44. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +3 -1
  45. data/demo/config/tools/launcher/launcher.txt +3 -2
  46. data/demo/tools/Dart +16 -0
  47. data/demo/tools/Dart.bat +9 -0
  48. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +0 -0
  49. data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +0 -0
  50. data/install/Gemfile +1 -0
  51. data/install/Rakefile +4 -0
  52. data/install/config/dart/Gemfile +54 -0
  53. data/install/config/data/crc.txt +6 -3
  54. data/install/config/system/system.txt +3 -0
  55. data/install/config/tools/launcher/launcher.txt +3 -2
  56. data/install/tools/Dart +16 -0
  57. data/install/tools/Dart.bat +9 -0
  58. data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +0 -0
  59. data/install/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +0 -0
  60. data/lib/cosmos/core_ext/time.rb +8 -8
  61. data/lib/cosmos/dart/.rspec +1 -0
  62. data/lib/cosmos/dart/Gemfile +69 -0
  63. data/lib/cosmos/dart/Rakefile +7 -0
  64. data/lib/cosmos/dart/app/assets/config/manifest.js +4 -0
  65. data/lib/cosmos/dart/app/assets/images/.keep +0 -0
  66. data/lib/cosmos/dart/app/assets/javascripts/application.js +13 -0
  67. data/lib/cosmos/dart/app/assets/javascripts/cable.js +13 -0
  68. data/lib/cosmos/dart/app/assets/stylesheets/application.css.scss +15 -0
  69. data/lib/cosmos/dart/app/channels/application_cable/channel.rb +4 -0
  70. data/lib/cosmos/dart/app/channels/application_cable/connection.rb +4 -0
  71. data/lib/cosmos/dart/app/controllers/application_controller.rb +3 -0
  72. data/lib/cosmos/dart/app/helpers/application_helper.rb +2 -0
  73. data/lib/cosmos/dart/app/jobs/application_job.rb +2 -0
  74. data/lib/cosmos/dart/app/mailers/application_mailer.rb +4 -0
  75. data/lib/cosmos/dart/app/models/application_record.rb +3 -0
  76. data/lib/cosmos/dart/app/models/item.rb +6 -0
  77. data/lib/cosmos/dart/app/models/item_to_decom_table_mapping.rb +9 -0
  78. data/lib/cosmos/dart/app/models/packet.rb +4 -0
  79. data/lib/cosmos/dart/app/models/packet_config.rb +7 -0
  80. data/lib/cosmos/dart/app/models/packet_log.rb +3 -0
  81. data/lib/cosmos/dart/app/models/packet_log_entry.rb +41 -0
  82. data/lib/cosmos/dart/app/models/system_config.rb +2 -0
  83. data/lib/cosmos/dart/app/models/target.rb +4 -0
  84. data/lib/cosmos/dart/app/views/layouts/application.html.erb +14 -0
  85. data/lib/cosmos/dart/app/views/layouts/mailer.html.erb +13 -0
  86. data/lib/cosmos/dart/app/views/layouts/mailer.text.erb +1 -0
  87. data/lib/cosmos/dart/bin/bundle +3 -0
  88. data/lib/cosmos/dart/bin/rails +4 -0
  89. data/lib/cosmos/dart/bin/rake +4 -0
  90. data/lib/cosmos/dart/bin/setup +34 -0
  91. data/lib/cosmos/dart/bin/update +29 -0
  92. data/lib/cosmos/dart/config.ru +5 -0
  93. data/lib/cosmos/dart/config/application.rb +29 -0
  94. data/lib/cosmos/dart/config/boot.rb +3 -0
  95. data/lib/cosmos/dart/config/cable.yml +9 -0
  96. data/lib/cosmos/dart/config/database.yml +23 -0
  97. data/lib/cosmos/dart/config/environment.rb +5 -0
  98. data/lib/cosmos/dart/config/environments/development.rb +62 -0
  99. data/lib/cosmos/dart/config/environments/production.rb +84 -0
  100. data/lib/cosmos/dart/config/environments/test.rb +42 -0
  101. data/lib/cosmos/dart/config/initializers/application_controller_renderer.rb +6 -0
  102. data/lib/cosmos/dart/config/initializers/assets.rb +12 -0
  103. data/lib/cosmos/dart/config/initializers/backtrace_silencers.rb +7 -0
  104. data/lib/cosmos/dart/config/initializers/cookies_serializer.rb +5 -0
  105. data/lib/cosmos/dart/config/initializers/filter_parameter_logging.rb +4 -0
  106. data/lib/cosmos/dart/config/initializers/inflections.rb +16 -0
  107. data/lib/cosmos/dart/config/initializers/mime_types.rb +4 -0
  108. data/lib/cosmos/dart/config/initializers/new_framework_defaults.rb +25 -0
  109. data/lib/cosmos/dart/config/initializers/session_store.rb +3 -0
  110. data/lib/cosmos/dart/config/initializers/wrap_parameters.rb +14 -0
  111. data/lib/cosmos/dart/config/locales/en.yml +23 -0
  112. data/lib/cosmos/dart/config/puma.rb +47 -0
  113. data/lib/cosmos/dart/config/routes.rb +3 -0
  114. data/lib/cosmos/dart/config/secrets.yml +22 -0
  115. data/lib/cosmos/dart/db/migrate/20170406172907_create_targets.rb +8 -0
  116. data/lib/cosmos/dart/db/migrate/20170406172927_create_packets.rb +10 -0
  117. data/lib/cosmos/dart/db/migrate/20170406172937_create_packet_logs.rb +9 -0
  118. data/lib/cosmos/dart/db/migrate/20170406172943_create_packet_log_entries.rb +16 -0
  119. data/lib/cosmos/dart/db/migrate/20170406183500_change_packet_log_entries_primary_key.rb +5 -0
  120. data/lib/cosmos/dart/db/migrate/20170407153618_add_unique_requirements.rb +7 -0
  121. data/lib/cosmos/dart/db/migrate/20170511155447_add_meta_id_to_packet_log_entries.rb +6 -0
  122. data/lib/cosmos/dart/db/migrate/20170523185056_rename_received_time_and_add_is_tlm_to_packet_log_entries.rb +7 -0
  123. data/lib/cosmos/dart/db/migrate/20170525201157_create_items.rb +10 -0
  124. data/lib/cosmos/dart/db/migrate/20170525201315_create_system_configs.rb +9 -0
  125. data/lib/cosmos/dart/db/migrate/20170525201624_create_packet_configs.rb +11 -0
  126. data/lib/cosmos/dart/db/migrate/20170525201745_create_item_to_decom_table_mappings.rb +12 -0
  127. data/lib/cosmos/dart/db/migrate/20170525201939_create_decom_tables.rb +12 -0
  128. data/lib/cosmos/dart/db/migrate/20170525202051_add_decom_state_to_packet_log_entry.rb +5 -0
  129. data/lib/cosmos/dart/db/migrate/20170913160409_update_items.rb +6 -0
  130. data/lib/cosmos/dart/db/migrate/20170913160558_update_item_to_decom_table_mapping.rb +11 -0
  131. data/lib/cosmos/dart/db/migrate/20170913160916_udpate_decom_table.rb +6 -0
  132. data/lib/cosmos/dart/db/migrate/20170913212026_add_ready_to_packet_configs.rb +5 -0
  133. data/lib/cosmos/dart/db/migrate/20170913223556_modify_tables.rb +9 -0
  134. data/lib/cosmos/dart/db/migrate/20170914215744_modify_mapping_table.rb +6 -0
  135. data/lib/cosmos/dart/db/migrate/20170919201433_add_system_config_id_to_packet_config.rb +11 -0
  136. data/lib/cosmos/dart/db/migrate/20170919210307_add_max_table_index_to_packet_configs.rb +5 -0
  137. data/lib/cosmos/dart/db/migrate/20171215225546_add_ready_to_packet_log_entries.rb +5 -0
  138. data/lib/cosmos/dart/db/migrate/20180116214338_add_index_for_ple_ready_to_packet_log_entries.rb +5 -0
  139. data/lib/cosmos/dart/db/schema.rb +103 -0
  140. data/lib/cosmos/dart/db/seeds.rb +7 -0
  141. data/lib/cosmos/dart/examples/dart_decom_client.rb +45 -0
  142. data/lib/cosmos/dart/examples/dart_stream_client.rb +93 -0
  143. data/lib/cosmos/dart/lib/dart_common.rb +749 -0
  144. data/lib/cosmos/dart/lib/dart_database_cleaner.rb +172 -0
  145. data/lib/cosmos/dart/lib/dart_decom_query.rb +184 -0
  146. data/lib/cosmos/dart/lib/dart_decommutator.rb +235 -0
  147. data/lib/cosmos/dart/lib/dart_importer.rb +154 -0
  148. data/lib/cosmos/dart/lib/dart_logging.rb +50 -0
  149. data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +139 -0
  150. data/lib/cosmos/dart/lib/dart_reducer_manager.rb +85 -0
  151. data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +263 -0
  152. data/lib/cosmos/dart/lib/dart_tcpip_server_interface.rb +142 -0
  153. data/lib/cosmos/dart/processes/dart.rb +145 -0
  154. data/lib/cosmos/dart/processes/dart_decom_server.rb +39 -0
  155. data/lib/cosmos/dart/processes/dart_import.rb +63 -0
  156. data/lib/cosmos/dart/processes/dart_ingester.rb +92 -0
  157. data/lib/cosmos/dart/processes/dart_reducer.rb +27 -0
  158. data/lib/cosmos/dart/processes/dart_stream_server.rb +31 -0
  159. data/lib/cosmos/dart/processes/dart_worker.rb +37 -0
  160. data/lib/cosmos/dart/spec/dart/dart_common_spec.rb +333 -0
  161. data/lib/cosmos/dart/spec/dart/dart_database_cleaner_spec.rb +455 -0
  162. data/lib/cosmos/dart/spec/dart/dart_decom_query_spec.rb +153 -0
  163. data/lib/cosmos/dart/spec/dart/dart_decommutator_spec.rb +336 -0
  164. data/lib/cosmos/dart/spec/dart/dart_importer_spec.rb +83 -0
  165. data/lib/cosmos/dart/spec/dart/dart_logging_spec.rb +30 -0
  166. data/lib/cosmos/dart/spec/dart/dart_packet_log_writer_spec.rb +149 -0
  167. data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +289 -0
  168. data/lib/cosmos/dart/spec/dart/dart_tcpip_server_interface_spec.rb +241 -0
  169. data/lib/cosmos/dart/spec/rails_helper.rb +60 -0
  170. data/lib/cosmos/dart/spec/spec_helper.rb +139 -0
  171. data/lib/cosmos/gui/dialogs/about_dialog.rb +1 -1
  172. data/lib/cosmos/gui/dialogs/dart_dialog.rb +60 -0
  173. data/lib/cosmos/gui/dialogs/legal_dialog.rb +1 -0
  174. data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +0 -3
  175. data/lib/cosmos/gui/qt.rb +10 -1
  176. data/lib/cosmos/gui/text/completion.rb +10 -9
  177. data/lib/cosmos/gui/text/completion_text_edit.rb +16 -14
  178. data/lib/cosmos/gui/text/ruby_editor.rb +2 -2
  179. data/lib/cosmos/gui/widgets/dart_frame.rb +142 -0
  180. data/lib/cosmos/gui/widgets/dart_meta_frame.rb +119 -0
  181. data/lib/cosmos/gui/widgets/packet_log_frame.rb +42 -12
  182. data/lib/cosmos/interfaces/interface.rb +1 -2
  183. data/lib/cosmos/interfaces/protocols/crc_protocol.rb +26 -8
  184. data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +8 -2
  185. data/lib/cosmos/interfaces/protocols/protocol.rb +2 -1
  186. data/lib/cosmos/interfaces/protocols/template_protocol.rb +1 -1
  187. data/lib/cosmos/interfaces/stream_interface.rb +1 -0
  188. data/lib/cosmos/interfaces/tcpip_server_interface.rb +2 -3
  189. data/lib/cosmos/io/json_drb_object.rb +1 -1
  190. data/lib/cosmos/io/json_rpc.rb +2 -1
  191. data/lib/cosmos/io/win32_serial_driver.rb +2 -9
  192. data/lib/cosmos/packet_logs/packet_log_writer.rb +1 -1
  193. data/lib/cosmos/packets/packet.rb +22 -12
  194. data/lib/cosmos/packets/packet_config.rb +2 -1
  195. data/lib/cosmos/packets/packet_item.rb +26 -24
  196. data/lib/cosmos/packets/parsers/macro_parser.rb +5 -2
  197. data/lib/cosmos/packets/parsers/packet_item_parser.rb +35 -17
  198. data/lib/cosmos/packets/parsers/packet_parser.rb +3 -10
  199. data/lib/cosmos/packets/parsers/xtce_converter.rb +21 -35
  200. data/lib/cosmos/packets/parsers/xtce_parser.rb +54 -46
  201. data/lib/cosmos/packets/structure.rb +10 -2
  202. data/lib/cosmos/packets/structure_item.rb +22 -8
  203. data/lib/cosmos/processors/statistics_processor.rb +2 -0
  204. data/lib/cosmos/script/api_shared.rb +13 -12
  205. data/lib/cosmos/script/cmd_tlm_server.rb +4 -0
  206. data/lib/cosmos/script/commands.rb +3 -15
  207. data/lib/cosmos/script/script.rb +69 -23
  208. data/lib/cosmos/streams/tcpip_client_stream.rb +2 -2
  209. data/lib/cosmos/system/system.rb +42 -25
  210. data/lib/cosmos/system/target.rb +6 -2
  211. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +177 -36
  212. data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +3 -2
  213. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +34 -8
  214. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +80 -25
  215. data/lib/cosmos/tools/cmd_tlm_server/api.rb +19 -4
  216. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +15 -14
  217. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +15 -9
  218. data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +1 -9
  219. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +1 -6
  220. data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +1 -3
  221. data/lib/cosmos/tools/cmd_tlm_server/gui/replay_tab.rb +84 -7
  222. data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +0 -1
  223. data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +1 -5
  224. data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +3 -2
  225. data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +159 -27
  226. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +1 -1
  227. data/lib/cosmos/tools/config_editor/config_editor.rb +17 -52
  228. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +0 -5
  229. data/lib/cosmos/tools/data_viewer/data_viewer.rb +111 -0
  230. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +31 -18
  231. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +12 -3
  232. data/lib/cosmos/tools/script_runner/script_runner.rb +27 -14
  233. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +104 -37
  234. data/lib/cosmos/tools/table_manager/table_config.rb +1 -1
  235. data/lib/cosmos/tools/table_manager/table_item_parser.rb +4 -2
  236. data/lib/cosmos/tools/table_manager/table_manager.rb +0 -5
  237. data/lib/cosmos/tools/table_manager/table_manager_core.rb +0 -1
  238. data/lib/cosmos/tools/test_runner/test.rb +1 -3
  239. data/lib/cosmos/tools/test_runner/test_runner.rb +26 -15
  240. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +290 -137
  241. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +122 -25
  242. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +67 -0
  243. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +28 -0
  244. data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +36 -0
  245. data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +42 -3
  246. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +88 -14
  247. data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +2 -5
  248. data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +2 -6
  249. data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +74 -18
  250. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +3 -7
  251. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +159 -0
  252. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +49 -2
  253. data/lib/cosmos/tools/tlm_viewer/screen.rb +3 -0
  254. data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +0 -2
  255. data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
  256. data/lib/cosmos/tools/tlm_viewer/widgets/backgroundbutton_widget.rb +54 -0
  257. data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +5 -5
  258. data/lib/cosmos/top_level.rb +1 -0
  259. data/lib/cosmos/utilities/crc.rb +3 -0
  260. data/lib/cosmos/utilities/csv.rb +1 -0
  261. data/lib/cosmos/utilities/message_log.rb +2 -1
  262. data/lib/cosmos/utilities/simulated_target.rb +8 -8
  263. data/lib/cosmos/version.rb +5 -5
  264. data/lib/cosmos/win32/win32.rb +4 -10
  265. data/run_gui_tests.bat +2 -1
  266. data/spec/config/config_parser_spec.rb +4 -4
  267. data/spec/core_ext/array_spec.rb +1 -1
  268. data/spec/core_ext/exception_spec.rb +12 -12
  269. data/spec/core_ext/file_spec.rb +6 -6
  270. data/spec/core_ext/hash_spec.rb +1 -1
  271. data/spec/core_ext/socket_spec.rb +2 -2
  272. data/spec/core_ext/string_spec.rb +13 -13
  273. data/spec/core_ext/time_spec.rb +0 -2
  274. data/spec/gui/utilities/script_module_gui_spec.rb +3 -3
  275. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +6 -6
  276. data/spec/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +4 -0
  277. data/spec/interfaces/cmd_tlm_server_interface_spec.rb +6 -2
  278. data/spec/interfaces/interface_spec.rb +0 -1
  279. data/spec/interfaces/linc_interface_spec.rb +0 -5
  280. data/spec/interfaces/protocols/crc_protocol_spec.rb +201 -85
  281. data/spec/interfaces/protocols/fixed_protocol_spec.rb +33 -9
  282. data/spec/interfaces/protocols/length_protocol_spec.rb +1 -1
  283. data/spec/interfaces/protocols/override_protocol_spec.rb +6 -2
  284. data/spec/interfaces/protocols/preidentified_protocol_spec.rb +1 -5
  285. data/spec/interfaces/protocols/template_protocol_spec.rb +0 -1
  286. data/spec/interfaces/simulated_target_interface_spec.rb +5 -5
  287. data/spec/interfaces/udp_interface_spec.rb +2 -4
  288. data/spec/io/buffered_file_spec.rb +8 -12
  289. data/spec/io/json_drb_spec.rb +9 -9
  290. data/spec/io/json_rpc_spec.rb +4 -4
  291. data/spec/io/raw_logger_spec.rb +4 -3
  292. data/spec/packet_logs/packet_log_reader_spec.rb +3 -6
  293. data/spec/packet_logs/packet_log_writer_spec.rb +4 -4
  294. data/spec/packets/binary_accessor_spec.rb +5 -8
  295. data/spec/packets/commands_spec.rb +2 -2
  296. data/spec/packets/limits_spec.rb +2 -2
  297. data/spec/packets/packet_config_spec.rb +12 -0
  298. data/spec/packets/packet_item_limits_spec.rb +1 -1
  299. data/spec/packets/packet_item_spec.rb +9 -9
  300. data/spec/packets/packet_spec.rb +15 -5
  301. data/spec/packets/parsers/packet_item_parser_spec.rb +27 -0
  302. data/spec/packets/parsers/xtce_parser_spec.rb +27 -30
  303. data/spec/packets/structure_spec.rb +2 -1
  304. data/spec/packets/telemetry_spec.rb +3 -5
  305. data/spec/processors/statistics_processor_spec.rb +35 -0
  306. data/spec/script/cmd_tlm_server_spec.rb +4 -21
  307. data/spec/script/commands_disconnect_spec.rb +46 -58
  308. data/spec/script/commands_spec.rb +40 -61
  309. data/spec/script/limits_spec.rb +1 -21
  310. data/spec/script/script_spec.rb +32 -41
  311. data/spec/script/scripting_spec.rb +166 -185
  312. data/spec/script/telemetry_spec.rb +10 -5
  313. data/spec/script/tools_spec.rb +2 -24
  314. data/spec/spec_helper.rb +11 -5
  315. data/spec/system/system_spec.rb +17 -12
  316. data/spec/tools/cmd_tlm_server/api_spec.rb +21 -10
  317. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -16
  318. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +0 -1
  319. data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +16 -27
  320. data/spec/tools/cmd_tlm_server/commanding_spec.rb +2 -6
  321. data/spec/tools/cmd_tlm_server/connections_spec.rb +0 -4
  322. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +13 -13
  323. data/spec/tools/cmd_tlm_server/interfaces_spec.rb +5 -9
  324. data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +11 -3
  325. data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +0 -4
  326. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +5 -5
  327. data/spec/tools/cmd_tlm_server/routers_spec.rb +5 -9
  328. data/spec/tools/table_manager/table_config_spec.rb +0 -1
  329. data/spec/tools/table_manager/tablemanager_core_spec.rb +23 -23
  330. data/spec/tools/tlm_viewer/tlm_viewer_config_spec.rb +6 -4
  331. data/spec/top_level/top_level_spec.rb +9 -9
  332. data/spec/utilities/csv_spec.rb +2 -12
  333. data/spec/utilities/logger_spec.rb +6 -6
  334. data/spec/utilities/message_log_spec.rb +3 -11
  335. data/tasks/gemfile_stats.rake +2 -2
  336. metadata +167 -60
@@ -11,7 +11,11 @@
11
11
  require 'ostruct'
12
12
 
13
13
  module Cosmos
14
+ # Parses a macro definition in a command or telemetry configuration file.
15
+ # Note: Using ERB to define multiple items is now the preferred solution.
14
16
  class MacroParser
17
+ @macro = nil
18
+
15
19
  # Adds a new item to the Macro
16
20
  def self.new_item
17
21
  return unless @macro
@@ -113,6 +117,5 @@ module Cosmos
113
117
  @macro.format_order = 'ds'
114
118
  end
115
119
  end
116
-
117
120
  end
118
- end # module Cosmos
121
+ end
@@ -8,24 +8,30 @@
8
8
  # as published by the Free Software Foundation; version 3 with
9
9
  # attribution addendums as found in the LICENSE.txt
10
10
 
11
- require 'cosmos/packets/packet_config'
12
11
  require 'cosmos/packets/packet_item'
13
12
 
14
13
  module Cosmos
15
-
14
+ # Parses a packet item definition and creates a new PacketItem
16
15
  class PacketItemParser
16
+ # This number is a little arbitrary but there are definitely issues at
17
+ # 1 million and you really shouldn't be doing anything this big anyway
18
+ BIG_ARRAY_SIZE = 100_000
19
+
17
20
  # @param parser [ConfigParser] Configuration parser
18
21
  # @param packet [Packet] The packet the item should be added to
19
- # @param cmd_or_tlm [String] Whether this is :bn
20
- def self.parse(parser, packet, cmd_or_tlm)
21
- parser = PacketItemParser.new(parser)
22
+ # @param cmd_or_tlm [String] Whether this is a command or telemetry packet
23
+ # @param warnings [Array<String>] Array of warning strings from PacketConfig
24
+ def self.parse(parser, packet, cmd_or_tlm, warnings)
25
+ parser = PacketItemParser.new(parser, warnings)
22
26
  parser.verify_parameters(cmd_or_tlm)
23
27
  parser.create_packet_item(packet, cmd_or_tlm)
24
28
  end
25
29
 
26
30
  # @param parser [ConfigParser] Configuration parser
27
- def initialize(parser)
31
+ # @param warnings [Array<String>] Array of warning strings from PacketConfig
32
+ def initialize(parser, warnings)
28
33
  @parser = parser
34
+ @warnings = warnings
29
35
  @usage = get_usage()
30
36
  end
31
37
 
@@ -43,7 +49,13 @@ module Cosmos
43
49
  end
44
50
 
45
51
  def create_packet_item(packet, cmd_or_tlm)
46
- item = PacketItem.new(@parser.parameters[0],
52
+ item_name = @parser.parameters[0].upcase
53
+ if packet.items[item_name]
54
+ msg = "#{packet.target_name} #{packet.packet_name} #{item_name} redefined."
55
+ Logger.instance.warn msg
56
+ @warnings << msg
57
+ end
58
+ item = PacketItem.new(item_name,
47
59
  get_bit_offset(),
48
60
  get_bit_size(),
49
61
  get_data_type(),
@@ -94,7 +106,17 @@ module Cosmos
94
106
  def get_array_size
95
107
  return nil unless (@parser.keyword.include?('ARRAY'))
96
108
  index = append? ? 3 : 4
97
- Integer(@parser.parameters[index])
109
+ array_bit_size = Integer(@parser.parameters[index])
110
+ items = array_bit_size / get_bit_size()
111
+ if items >= BIG_ARRAY_SIZE
112
+ warning = "Performance Issue!\n"\
113
+ "In #{@parser.filename}:#{@parser.line_number} your definition of:\n"\
114
+ "#{@parser.line}\n"\
115
+ "creates an array with #{items} elements. Consider creating a BLOCK if this is binary data."
116
+ Logger.warn(warning)
117
+ @warnings << warning
118
+ end
119
+ array_bit_size
98
120
  rescue => err
99
121
  raise @parser.error(err, @usage)
100
122
  end
@@ -131,7 +153,7 @@ module Cosmos
131
153
 
132
154
  index = append? ? 3 : 4
133
155
  data_type = get_data_type()
134
- if data_type == :STRING or data_type == :BLOCK
156
+ if data_type == :STRING or data_type == :BLOCK
135
157
  # If the default value is 0x<data> (no quotes), it is treated as
136
158
  # binary data. Otherwise, the default value is considered to be a string.
137
159
  if (@parser.parameters[index].upcase.start_with?("0X") and
@@ -171,13 +193,11 @@ module Cosmos
171
193
  # There are many different usages of the ITEM and PARAMETER keywords so
172
194
  # parse the keyword and parameters to generate the correct usage information.
173
195
  def get_usage
174
- keyword = @parser.keyword
175
- params = @parser.parameters
176
- usage = "#{keyword} <ITEM NAME> "
177
- usage << "<BIT OFFSET> " unless keyword.include?("APPEND")
196
+ usage = "#{@parser.keyword} <ITEM NAME> "
197
+ usage << "<BIT OFFSET> " unless @parser.keyword.include?("APPEND")
178
198
  usage << bit_size_usage()
179
199
  usage << type_usage()
180
- usage << "<TOTAL ARRAY BIT SIZE> " if keyword.include?("ARRAY")
200
+ usage << "<TOTAL ARRAY BIT SIZE> " if @parser.keyword.include?("ARRAY")
181
201
  usage << id_usage()
182
202
  usage << "<DESCRIPTION (Optional)> <ENDIANNESS (Optional)>"
183
203
  usage
@@ -198,7 +218,6 @@ module Cosmos
198
218
 
199
219
  # Build up the parameter type usage based on the keyword
200
220
  usage = "<TYPE: "
201
- params = @parser.parameters
202
221
  # ARRAY types don't have min or max or default values
203
222
  if keyword.include?("ARRAY")
204
223
  usage << "INT/UINT/FLOAT/STRING/BLOCK> "
@@ -229,6 +248,5 @@ module Cosmos
229
248
  "<ID VALUE> "
230
249
  end
231
250
  end
232
-
233
251
  end
234
- end # module Cosmos
252
+ end
@@ -50,7 +50,7 @@ module Cosmos
50
50
  packet.sorted_items.each do |item|
51
51
  item.check_default_and_range_data_types()
52
52
  end
53
- rescue => err
53
+ rescue
54
54
  # Add the target name and packet name to the error message so the user
55
55
  # can debug where the error occurred
56
56
  raise $!, "#{packet.target_name} #{packet.packet_name} #{$!}", $!.backtrace
@@ -111,14 +111,7 @@ module Cosmos
111
111
  def self.finish_create_telemetry(packet, telemetry, latest_data, warnings)
112
112
  warning = PacketParser.check_for_duplicate('Telemetry', telemetry, packet)
113
113
  warnings << warning if warning
114
-
115
- # Add received time packet items
116
- item = packet.define_item('RECEIVED_TIMESECONDS', 0, 0, :DERIVED, nil, packet.default_endianness, :ERROR, '%0.6f', ReceivedTimeSecondsConversion.new)
117
- item.description = 'COSMOS Received Time (UTC, Floating point, Unix epoch)'
118
- item = packet.define_item('RECEIVED_TIMEFORMATTED', 0, 0, :DERIVED, nil, packet.default_endianness, :ERROR, nil, ReceivedTimeFormattedConversion.new)
119
- item.description = 'COSMOS Received Time (Local time zone, Formatted string)'
120
- item = packet.define_item('RECEIVED_COUNT', 0, 0, :DERIVED, nil, packet.default_endianness, :ERROR, nil, ReceivedCountConversion.new)
121
- item.description = 'COSMOS packet received count'
114
+ packet.define_reserved_items()
122
115
 
123
116
  unless telemetry[packet.target_name]
124
117
  telemetry[packet.target_name] = {}
@@ -128,4 +121,4 @@ module Cosmos
128
121
  end
129
122
 
130
123
  end
131
- end # module Cosmos
124
+ end
@@ -168,13 +168,13 @@ module Cosmos
168
168
  unique[item.name] << item
169
169
  end
170
170
  end
171
- unique.each do |item_name, items|
172
- if items.length <= 1
173
- unique[item_name] = items[0]
171
+ unique.each do |item_name, unique_items|
172
+ if unique_items.length <= 1
173
+ unique[item_name] = unique_items[0]
174
174
  next
175
175
  end
176
176
  # TODO: need to make sure all the items in the array are exactly the same
177
- unique[item_name] = items[0]
177
+ unique[item_name] = unique_items[0]
178
178
  end
179
179
  unique
180
180
  end
@@ -260,6 +260,20 @@ module Cosmos
260
260
  end
261
261
  end
262
262
 
263
+ def to_xtce_limits(item, xml)
264
+ return unless item.limits && item.limits.values
265
+ item.limits.values.each do |limits_set, limits_values|
266
+ if limits_set == :DEFAULT
267
+ xml['xtce'].DefaultAlarm do
268
+ xml['xtce'].StaticAlarmRanges do
269
+ xml['xtce'].WarningRange(:minInclusive => limits_values[1], :maxInclusive => limits_values[2])
270
+ xml['xtce'].CriticalRange(:minInclusive => limits_values[0], :maxInclusive => limits_values[3])
271
+ end
272
+ end
273
+ end
274
+ end
275
+ end
276
+
263
277
  def to_xtce_int(item, param_or_arg, xml)
264
278
  attrs = { :name => (item.name + '_Type') }
265
279
  attrs[:initialValue] = item.default if item.default and !item.array_size
@@ -302,20 +316,7 @@ module Cosmos
302
316
  else
303
317
  xml['xtce'].IntegerDataEncoding(:sizeInBits => item.bit_size, :encoding => encoding)
304
318
  end
305
- if item.limits
306
- if item.limits.values
307
- item.limits.values.each do |limits_set, limits_values|
308
- if limits_set == :DEFAULT
309
- xml['xtce'].DefaultAlarm do
310
- xml['xtce'].StaticAlarmRanges do
311
- xml['xtce'].WarningRange(:minInclusive => limits_values[1], :maxInclusive => limits_values[2])
312
- xml['xtce'].CriticalRange(:minInclusive => limits_values[0], :maxInclusive => limits_values[3])
313
- end
314
- end
315
- end
316
- end
317
- end
318
- end
319
+ to_xtce_limits(item, xml)
319
320
  if item.range
320
321
  xml['xtce'].ValidRange(:minInclusive => item.range.first, :maxInclusive => item.range.last)
321
322
  end
@@ -337,22 +338,7 @@ module Cosmos
337
338
  else
338
339
  xml['xtce'].FloatDataEncoding(:sizeInBits => item.bit_size, :encoding => 'IEEE754_1985')
339
340
  end
340
-
341
- if item.limits
342
- if item.limits.values
343
- item.limits.values.each do |limits_set, limits_values|
344
- if limits_set == :DEFAULT
345
- xml['xtce'].DefaultAlarm do
346
- xml['xtce'].StaticAlarmRanges do
347
- xml['xtce'].WarningRange(:minInclusive => limits_values[1], :maxInclusive => limits_values[2])
348
- xml['xtce'].CriticalRange(:minInclusive => limits_values[0], :maxInclusive => limits_values[3])
349
- end
350
- end
351
- end
352
- end
353
- end
354
- end
355
-
341
+ to_xtce_limits(item, xml)
356
342
  if item.range
357
343
  xml['xtce'].ValidRange(:minInclusive => item.range.first, :maxInclusive => item.range.last)
358
344
  end
@@ -372,7 +358,7 @@ module Cosmos
372
358
  end
373
359
  attrs[:shortDescription] = item.description if item.description
374
360
  xml['xtce'].send(string_or_binary + param_or_arg + 'Type', attrs) do
375
- to_xtce_endianness(item, xml)
361
+ # Don't call to_xtce_endianness for Strings or Blocks
376
362
  to_xtce_units(item, xml)
377
363
  if string_or_binary == 'String'
378
364
  xml['xtce'].StringDataEncoding(:encoding => 'UTF-8') do
@@ -10,7 +10,6 @@
10
10
 
11
11
  require 'nokogiri'
12
12
  require 'ostruct'
13
- require 'cosmos/packets/packet_config'
14
13
 
15
14
  module Cosmos
16
15
 
@@ -55,16 +54,17 @@ module Cosmos
55
54
  @commands = commands
56
55
  @telemetry = telemetry
57
56
  @warnings = warnings
57
+ @current_packet = nil
58
58
  parse(filename, target_name)
59
59
  end
60
60
 
61
61
  def parse(filename, target_name)
62
62
  doc = File.open(filename) { |f| Nokogiri::XML(f, nil, nil, Nokogiri::XML::ParseOptions::STRICT | Nokogiri::XML::ParseOptions::NOBLANKS) }
63
- xtce_process_element(doc.root, 0)
63
+ xtce_process_element(doc.root)
64
64
  @current_target_name = target_name if target_name
65
65
  doc.root.children.each do |child|
66
- xtce_recurse_element(child, 1) do |element, depth|
67
- xtce_process_element(element, depth)
66
+ xtce_recurse_element(child) do |element|
67
+ xtce_process_element(element)
68
68
  end
69
69
  end
70
70
  finish_packet()
@@ -100,7 +100,13 @@ module Cosmos
100
100
  end
101
101
 
102
102
  def set_packet_endianness
103
- item_endianness = @current_packet.sorted_items.collect { |item| item.endianness }.uniq
103
+ item_endianness = @current_packet.sorted_items.collect do |item|
104
+ # Strings and Blocks endianness don't matter so ignore them
105
+ item.endianness if (item.data_type != :STRING && item.data_type != :BLOCK)
106
+ end
107
+ # Compact to get rid of nils from skipping Strings and Blocks
108
+ # Uniq to get rid of duplicates which results in an array of 1 or 2 items
109
+ item_endianness = item_endianness.compact.uniq
104
110
  if item_endianness.length == 1 # All items have the same endianness
105
111
  # default_endianness is read_only since it affects how items are added
106
112
  # thus we have to use instance_variable_set here to override it
@@ -137,7 +143,7 @@ module Cosmos
137
143
 
138
144
  XTCE_IGNORED_ELEMENTS = ['text', 'AliasSet', 'Alias', 'Header']
139
145
 
140
- def xtce_process_element(element, depth)
146
+ def xtce_process_element(element)
141
147
  if XTCE_IGNORED_ELEMENTS.include?(element.name)
142
148
  return false
143
149
  end
@@ -154,14 +160,17 @@ module Cosmos
154
160
  finish_packet()
155
161
  @current_cmd_or_tlm = PacketConfig::COMMAND
156
162
 
157
- when 'ParameterTypeSet', 'EnumerationList', 'ParameterSet', 'ContainerSet', 'EntryList', 'DefaultCalibrator', 'DefaultAlarm',
158
- 'RestrictionCriteria', 'ComparisonList', 'MetaCommandSet', 'DefaultCalibrator', 'ArgumentTypeSet', 'ArgumentList', 'ArgumentAssignmentList',
159
- 'LocationInContainerInBits'
160
-
163
+ when 'ParameterTypeSet', 'EnumerationList', 'ParameterSet', 'ContainerSet',
164
+ 'EntryList', 'DefaultCalibrator', 'DefaultAlarm', 'RestrictionCriteria',
165
+ 'ComparisonList', 'MetaCommandSet', 'ArgumentTypeSet', 'ArgumentList',
166
+ 'ArgumentAssignmentList', 'LocationInContainerInBits'
161
167
  # Do Nothing
162
168
 
163
- when 'EnumeratedParameterType', 'EnumeratedArgumentType', 'IntegerParameterType', 'IntegerArgumentType', 'FloatParameterType', 'FloatArgumentType',
164
- 'StringParameterType', 'StringArgumentType', 'BinaryParameterType', 'BinaryArgumentType'
169
+ when 'EnumeratedParameterType', 'EnumeratedArgumentType',
170
+ 'IntegerParameterType', 'IntegerArgumentType',
171
+ 'FloatParameterType', 'FloatArgumentType',
172
+ 'StringParameterType', 'StringArgumentType',
173
+ 'BinaryParameterType', 'BinaryArgumentType'
165
174
  @current_type = create_new_type(element)
166
175
  @current_type.endianness = :BIG_ENDIAN
167
176
 
@@ -187,10 +196,10 @@ module Cosmos
187
196
 
188
197
  when 'ByteOrderList'
189
198
  byte_list = []
190
- xtce_recurse_element(element, depth + 1) do |element, depth|
191
- if element.name == 'Byte'
192
- if element['byteSignificance']
193
- byte_list << element['byteSignificance'].to_i
199
+ xtce_recurse_element(element) do |block_element|
200
+ if block_element.name == 'Byte'
201
+ if block_element['byteSignificance']
202
+ byte_list << block_element['byteSignificance'].to_i
194
203
  end
195
204
  end
196
205
  true
@@ -228,9 +237,9 @@ module Cosmos
228
237
  return false # Already recursed
229
238
 
230
239
  when "SizeInBits"
231
- xtce_recurse_element(element, depth + 1) do |element, depth|
232
- if element.name == 'FixedValue'
233
- @current_type.sizeInBits = Integer(element.text)
240
+ xtce_recurse_element(element) do |block_element|
241
+ if block_element.name == 'FixedValue'
242
+ @current_type.sizeInBits = Integer(block_element.text)
234
243
  false
235
244
  else
236
245
  true
@@ -239,10 +248,10 @@ module Cosmos
239
248
  return false # Already recursed
240
249
 
241
250
  when 'UnitSet'
242
- xtce_recurse_element(element, depth + 1) do |element, depth|
243
- if element.name == 'Unit'
244
- units = element.text.to_s
245
- description = element['description'].to_s
251
+ xtce_recurse_element(element) do |block_element|
252
+ if block_element.name == 'Unit'
253
+ units = block_element.text.to_s
254
+ description = block_element['description'].to_s
246
255
  description = units if description.empty?
247
256
  units = description if units.empty?
248
257
 
@@ -252,7 +261,7 @@ module Cosmos
252
261
  else
253
262
  @current_type.units << ('/' + units)
254
263
  end
255
- @current_type.units << "^#{element['power']}" if element['power']
264
+ @current_type.units << "^#{block_element['power']}" if block_element['power']
256
265
 
257
266
  @current_type.units_full ||= ''
258
267
  if @current_type.units_full.empty?
@@ -266,12 +275,11 @@ module Cosmos
266
275
  return false # Already recursed
267
276
 
268
277
  when 'PolynomialCalibrator'
269
- xtce_recurse_element(element, depth + 1) do |element, depth|
270
- if element.name == 'Term'
271
- index = Float(element['exponent']).to_i
272
- coeff = Float(element['coefficient'])
278
+ xtce_recurse_element(element) do |block_element|
279
+ if block_element.name == 'Term'
280
+ exponent = Float(block_element['exponent']).to_i
273
281
  @current_type.conversion ||= PolynomialConversion.new([])
274
- @current_type.conversion.coeffs[index] = coeff
282
+ @current_type.conversion.coeffs[exponent] = Float(block_element['coefficient'])
275
283
  @current_type.conversion.coeffs.each_with_index do |value, index|
276
284
  @current_type.conversion.coeffs[index] = 0.0 if value.nil?
277
285
  end
@@ -281,15 +289,15 @@ module Cosmos
281
289
  return false # Already recursed
282
290
 
283
291
  when 'StaticAlarmRanges'
284
- xtce_recurse_element(element, depth + 1) do |element, depth|
285
- if element.name == 'WarningRange'
292
+ xtce_recurse_element(element) do |block_element|
293
+ if block_element.name == 'WarningRange'
286
294
  @current_type.limits ||= [0.0, 0.0, 0.0, 0.0]
287
- @current_type.limits[1] = Float(element['minInclusive']) if element['minInclusive']
288
- @current_type.limits[2] = Float(element['maxInclusive']) if element['maxInclusive']
289
- elsif element.name == 'CriticalRange'
295
+ @current_type.limits[1] = Float(block_element['minInclusive']) if block_element['minInclusive']
296
+ @current_type.limits[2] = Float(block_element['maxInclusive']) if block_element['maxInclusive']
297
+ elsif block_element.name == 'CriticalRange'
290
298
  @current_type.limits ||= [0.0, 0.0, 0.0, 0.0]
291
- @current_type.limits[0] = Float(element['minInclusive']) if element['minInclusive']
292
- @current_type.limits[3] = Float(element['maxInclusive']) if element['maxInclusive']
299
+ @current_type.limits[0] = Float(block_element['minInclusive']) if block_element['minInclusive']
300
+ @current_type.limits[3] = Float(block_element['maxInclusive']) if block_element['maxInclusive']
293
301
  end
294
302
  true
295
303
  end
@@ -345,7 +353,7 @@ module Cosmos
345
353
  end
346
354
 
347
355
  when 'ParameterRefEntry', 'ArgumentRefEntry', 'ArrayParameterRefEntry', 'ArrayArgumentRefEntry'
348
- process_ref_entry(element, depth)
356
+ process_ref_entry(element)
349
357
  return false # Already recursed
350
358
 
351
359
  when 'BaseContainer'
@@ -399,12 +407,12 @@ module Cosmos
399
407
  return true # Recurse further
400
408
  end
401
409
 
402
- def process_ref_entry(element, depth)
410
+ def process_ref_entry(element)
403
411
  reference_location, bit_offset = xtce_handle_location_in_container_in_bits(element)
404
412
  object, type, data_type, array_type = get_object_types(element)
405
413
  bit_size = Integer(type.sizeInBits)
406
414
  if array_type
407
- array_bit_size = process_array_type(element, depth, bit_size)
415
+ array_bit_size = process_array_type(element, bit_size)
408
416
  else
409
417
  array_bit_size = nil # in define_item, nil indicates the item is not an array
410
418
  end
@@ -477,14 +485,14 @@ module Cosmos
477
485
  return [object, type, data_type, array_type]
478
486
  end
479
487
 
480
- def process_array_type(element, depth, bit_size)
488
+ def process_array_type(element, bit_size)
481
489
  array_num_items = 1
482
490
  # Need to determine dimensions
483
- xtce_recurse_element(element, depth + 1) do |element, depth|
484
- if element.name == 'Dimension'
491
+ xtce_recurse_element(element) do |block_element|
492
+ if block_element.name == 'Dimension'
485
493
  starting_index = 0
486
494
  ending_index = 0
487
- element.children.each do |child_element|
495
+ block_element.children.each do |child_element|
488
496
  if child_element.name == 'StartingIndex'
489
497
  child_element.children.each do |child_element2|
490
498
  if child_element2.name == 'FixedValue'
@@ -623,10 +631,10 @@ module Cosmos
623
631
  return string
624
632
  end
625
633
 
626
- def xtce_recurse_element(element, depth, &block)
627
- return unless yield(element, depth)
634
+ def xtce_recurse_element(element, &block)
635
+ return unless yield(element)
628
636
  element.children.each do |child_element|
629
- xtce_recurse_element(child_element, depth + 1, &block)
637
+ xtce_recurse_element(child_element, &block)
630
638
  end
631
639
  end
632
640