cosmos 4.2.4-java → 4.3.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/Gemfile +1 -1
  4. data/Manifest.txt +12 -0
  5. data/autohotkey/tools/cmd_sequence.ahk +21 -20
  6. data/autohotkey/tools/cmd_sequence2.ahk +1 -1
  7. data/autohotkey/tools/config_editor.ahk +1 -1
  8. data/autohotkey/tools/launcher.ahk +1 -0
  9. data/autohotkey/tools/packet_viewer.ahk +6 -5
  10. data/autohotkey/tools/test_runner.ahk +8 -8
  11. data/bin/cosmos +37 -0
  12. data/bin/dart_util +0 -0
  13. data/data/config/item_modifiers.yaml +9 -0
  14. data/data/crc.txt +91 -86
  15. data/demo/Rakefile +2 -0
  16. data/demo/config/dart/Gemfile +1 -1
  17. data/demo/config/data/crc.txt +8 -5
  18. data/demo/config/system/system.txt +28 -0
  19. data/demo/config/system/system2.txt +21 -3
  20. data/demo/config/system/system_alt_ports.txt +69 -0
  21. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +1 -0
  22. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server_chain.txt +18 -0
  23. data/demo/procedures/cosmos_api_test.rb +18 -14
  24. data/demo/procedures/local_screen_example.rb +51 -0
  25. data/ext/cosmos/ext/cosmos_io/cosmos_io.c +32 -4
  26. data/ext/cosmos/ext/packet/packet.c +6 -0
  27. data/ext/mkrf_conf.rb +2 -2
  28. data/install/config/dart/Gemfile +1 -1
  29. data/install/config/data/crc.txt +2 -2
  30. data/install/config/system/system.txt +23 -1
  31. data/lib/cosmos/conversions.rb +2 -0
  32. data/lib/cosmos/conversions/packet_time_formatted_conversion.rb +38 -0
  33. data/lib/cosmos/conversions/packet_time_seconds_conversion.rb +38 -0
  34. data/lib/cosmos/core_ext/cosmos_io.rb +2 -1
  35. data/lib/cosmos/dart/Gemfile +1 -1
  36. data/lib/cosmos/dart/examples/dart_stream_client.rb +6 -2
  37. data/lib/cosmos/dart/lib/dart_common.rb +1 -1
  38. data/lib/cosmos/dart/lib/dart_database_cleaner.rb +2 -2
  39. data/lib/cosmos/dart/lib/dart_decommutator.rb +4 -4
  40. data/lib/cosmos/dart/lib/dart_importer.rb +3 -3
  41. data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +2 -2
  42. data/lib/cosmos/dart/processes/dart_ingester.rb +2 -0
  43. data/lib/cosmos/dart/processes/dart_util.rb +4 -4
  44. data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +3 -3
  45. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +9 -5
  46. data/lib/cosmos/gui/dialogs/details_dialog.rb +29 -29
  47. data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +1 -1
  48. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +3 -3
  49. data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +2 -2
  50. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +1 -1
  51. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +10 -10
  52. data/lib/cosmos/gui/qt.rb +10 -1
  53. data/lib/cosmos/gui/qt_tool.rb +17 -10
  54. data/lib/cosmos/gui/text/ruby_editor.rb +47 -8
  55. data/lib/cosmos/gui/utilities/classification_banner.rb +60 -0
  56. data/lib/cosmos/gui/utilities/script_module_gui.rb +26 -0
  57. data/lib/cosmos/interfaces.rb +1 -0
  58. data/lib/cosmos/interfaces/interface.rb +4 -0
  59. data/lib/cosmos/interfaces/protocols/ignore_packet_protocol.rb +46 -0
  60. data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +68 -23
  61. data/lib/cosmos/packet_logs/packet_log_reader.rb +69 -26
  62. data/lib/cosmos/packet_logs/packet_log_writer.rb +13 -1
  63. data/lib/cosmos/packets/commands.rb +5 -1
  64. data/lib/cosmos/packets/packet.rb +36 -2
  65. data/lib/cosmos/packets/packet_config.rb +0 -1
  66. data/lib/cosmos/packets/parsers/format_string_parser.rb +0 -1
  67. data/lib/cosmos/packets/parsers/xtce_parser.rb +1 -1
  68. data/lib/cosmos/packets/telemetry.rb +4 -0
  69. data/lib/cosmos/script/api_shared.rb +2 -0
  70. data/lib/cosmos/script/limits.rb +4 -0
  71. data/lib/cosmos/script/script.rb +27 -11
  72. data/lib/cosmos/script/telemetry.rb +3 -1
  73. data/lib/cosmos/script/tools.rb +18 -8
  74. data/lib/cosmos/system/system.rb +21 -0
  75. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +26 -24
  76. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +29 -29
  77. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +65 -40
  78. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +6 -6
  79. data/lib/cosmos/tools/cmd_tlm_server/api.rb +13 -0
  80. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +12 -9
  81. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +7 -1
  82. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +8 -8
  83. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +13 -2
  84. data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +2 -2
  85. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +13 -13
  86. data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +4 -4
  87. data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +8 -8
  88. data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +5 -5
  89. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +35 -20
  90. data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +15 -11
  91. data/lib/cosmos/tools/config_editor/config_editor.rb +69 -69
  92. data/lib/cosmos/tools/data_viewer/data_viewer.rb +42 -38
  93. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +1 -0
  94. data/lib/cosmos/tools/data_viewer/dump_component.rb +1 -0
  95. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +4 -4
  96. data/lib/cosmos/tools/launcher/launcher.rb +1 -1
  97. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +28 -24
  98. data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +42 -42
  99. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +56 -53
  100. data/lib/cosmos/tools/script_runner/script_runner.rb +112 -95
  101. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +48 -30
  102. data/lib/cosmos/tools/table_manager/table_manager.rb +42 -42
  103. data/lib/cosmos/tools/test_runner/test_runner.rb +45 -27
  104. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +3 -3
  105. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +45 -45
  106. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +4 -4
  107. data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +3 -3
  108. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +7 -7
  109. data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +10 -10
  110. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +10 -3
  111. data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +6 -6
  112. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +14 -14
  113. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +83 -83
  114. data/lib/cosmos/tools/tlm_viewer/screen.rb +73 -13
  115. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +15 -15
  116. data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
  117. data/lib/cosmos/tools/tlm_viewer/widgets/canvasellipse_widget.rb +40 -0
  118. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +1 -1
  119. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +6 -1
  120. data/lib/cosmos/top_level.rb +14 -1
  121. data/lib/cosmos/version.rb +5 -5
  122. data/lib/cosmos/win32/excel.rb +63 -12
  123. data/make_gems.sh +10 -0
  124. data/spec/conversions/packet_time_formatted_conversion_spec.rb +58 -0
  125. data/spec/conversions/packet_time_seconds_conversion_spec.rb +60 -0
  126. data/spec/interfaces/protocols/ignore_packet_protocol_spec.rb +243 -0
  127. data/spec/interfaces/protocols/preidentified_protocol_spec.rb +227 -4
  128. data/spec/io/serial_driver_spec.rb +15 -13
  129. data/spec/packet_logs/packet_log_reader_spec.rb +72 -17
  130. data/spec/packets/packet_config_spec.rb +5 -16
  131. data/spec/packets/parsers/format_string_parser_spec.rb +0 -11
  132. data/spec/packets/parsers/macro_parser_spec.rb +36 -36
  133. data/spec/packets/parsers/state_parser_spec.rb +36 -0
  134. data/spec/packets/telemetry_spec.rb +11 -9
  135. data/spec/script/script_spec.rb +2 -3
  136. data/spec/script/scripting_spec.rb +2 -1
  137. data/spec/script/tools_spec.rb +0 -1
  138. data/spec/tools/cmd_tlm_server/api_spec.rb +28 -20
  139. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +33 -0
  140. data/spec/tools/cmd_tlm_server/commanding_spec.rb +25 -1
  141. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +15 -0
  142. data/tasks/gemfile_stats.rake +3 -2
  143. metadata +14 -2
@@ -118,9 +118,9 @@ module Cosmos
118
118
  @end_time = ''
119
119
  else
120
120
  packet = read_at_index(@packet_offsets.length - 1, :FORWARD)
121
- @end_time = packet.received_time.formatted(true, 3, true) if packet and packet.received_time
121
+ @end_time = packet.packet_time.formatted(true, 3, true) if packet and packet.packet_time
122
122
  packet = read_at_index(0, :FORWARD)
123
- @start_time = packet.received_time.formatted(true, 3, true) if packet and packet.received_time
123
+ @start_time = packet.packet_time.formatted(true, 3, true) if packet and packet.packet_time
124
124
  end
125
125
  rescue Exception => error
126
126
  Logger.error "Error in Analysis Thread\n#{error.formatted}"
@@ -261,7 +261,7 @@ module Cosmos
261
261
  @current_time_object = @start_time_object.dup
262
262
  else
263
263
  packet = read_at_index(0, :FORWARD)
264
- @start_time = packet.received_time.formatted(true, 3, true) if packet and packet.received_time
264
+ @start_time = packet.packet_time.formatted(true, 3, true) if packet and packet.packet_time
265
265
  end
266
266
  else
267
267
  stop()
@@ -277,7 +277,7 @@ module Cosmos
277
277
  @current_time_object = @end_time_object.dup
278
278
  else
279
279
  packet = read_at_index(@packet_offsets.length - 1, :FORWARD)
280
- @end_time = packet.received_time.formatted(true, 3, true) if packet and packet.received_time
280
+ @end_time = packet.packet_time.formatted(true, 3, true) if packet and packet.packet_time
281
281
  end
282
282
  else
283
283
  stop()
@@ -337,12 +337,12 @@ module Cosmos
337
337
  if @playback_delay
338
338
  # Fixed Time Delay
339
339
  delay_time = @playback_delay - (Time.now.sys - packet_start)
340
- elsif previous_packet and packet.received_time and previous_packet.received_time
340
+ elsif previous_packet and packet.packet_time and previous_packet.packet_time
341
341
  # Realtime
342
342
  if direction == :FORWARD
343
- delay_time = packet.received_time - previous_packet.received_time - (Time.now.sys - packet_start)
343
+ delay_time = packet.packet_time - previous_packet.packet_time - (Time.now.sys - packet_start)
344
344
  else
345
- delay_time = previous_packet.received_time - packet.received_time - (Time.now.sys - packet_start)
345
+ delay_time = previous_packet.packet_time - packet.packet_time - (Time.now.sys - packet_start)
346
346
  end
347
347
  end
348
348
  if delay_time > 0.0
@@ -386,8 +386,8 @@ module Cosmos
386
386
  else
387
387
  @playback_index = index - 1
388
388
  end
389
- @current_time_object = packet.received_time
390
- @current_time = packet.received_time.formatted(true, 3, true) if packet and packet.received_time
389
+ @current_time_object = packet.packet_time
390
+ @current_time = packet.packet_time.formatted(true, 3, true) if packet and packet.packet_time
391
391
 
392
392
  return packet
393
393
  else
@@ -431,8 +431,8 @@ module Cosmos
431
431
  end
432
432
  handle_packet(packet)
433
433
 
434
- @current_time_object = packet.received_time
435
- @current_time = packet.received_time.formatted(true, 3, true)
434
+ @current_time_object = packet.packet_time
435
+ @current_time = packet.packet_time.formatted(true, 3, true)
436
436
  if @first
437
437
  @first = false
438
438
  @start_time_object = @current_time_object.dup
@@ -462,12 +462,16 @@ module Cosmos
462
462
 
463
463
  if identified_packet and packet.target_name != 'UNKNOWN'
464
464
  identified_packet.received_time = packet.received_time
465
+ identified_packet.stored = packet.stored
466
+ identified_packet.extra = packet.extra
465
467
  packet = identified_packet
466
468
  target = System.targets[packet.target_name.upcase]
467
469
  interface = target.interface if target
468
470
  else
469
471
  unknown_packet = System.telemetry.update!('UNKNOWN', 'UNKNOWN', packet.buffer)
470
472
  unknown_packet.received_time = packet.received_time
473
+ unknown_packet.stored = packet.stored
474
+ unknown_packet.extra = packet.extra
471
475
  packet = unknown_packet
472
476
  data_length = packet.length
473
477
  string = "Unknown #{data_length} byte packet starting: "
@@ -11,9 +11,9 @@
11
11
  require 'cosmos'
12
12
  Cosmos.catch_fatal_exception do
13
13
  require 'cosmos/gui/qt_tool'
14
- require 'cosmos/tools/config_editor/config_editor_frame'
15
14
  require 'cosmos/gui/dialogs/progress_dialog'
16
15
  require 'cosmos/gui/dialogs/scroll_text_dialog'
16
+ require 'cosmos/tools/config_editor/config_editor_frame'
17
17
  end
18
18
 
19
19
  module Cosmos
@@ -94,106 +94,106 @@ module Cosmos
94
94
  super()
95
95
 
96
96
  # File actions
97
- @file_new = Qt::Action.new(Cosmos.get_icon('file.png'), tr('&New'), self)
98
- @file_new_keyseq = Qt::KeySequence.new(tr('Ctrl+N'))
97
+ @file_new = Qt::Action.new(Cosmos.get_icon('file.png'), '&New', self)
98
+ @file_new_keyseq = Qt::KeySequence.new('Ctrl+N')
99
99
  @file_new.shortcut = @file_new_keyseq
100
- @file_new.statusTip = tr('Start a new file')
100
+ @file_new.statusTip = 'Start a new file'
101
101
  @file_new.connect(SIGNAL('triggered()')) { file_new() }
102
102
 
103
- @file_close = Qt::Action.new(tr('&Close'), self)
104
- @file_close_keyseq = Qt::KeySequence.new(tr('Ctrl+W'))
103
+ @file_close = Qt::Action.new('&Close', self)
104
+ @file_close_keyseq = Qt::KeySequence.new('Ctrl+W')
105
105
  @file_close.shortcut = @file_close_keyseq
106
- @file_close.statusTip = tr('Close the file')
106
+ @file_close.statusTip = 'Close the file'
107
107
  @file_close.connect(SIGNAL('triggered()')) { file_close() }
108
108
 
109
- @file_reload = Qt::Action.new(tr('&Reload'), self)
110
- @file_reload_keyseq = Qt::KeySequence.new(tr('Ctrl+R'))
109
+ @file_reload = Qt::Action.new('&Reload', self)
110
+ @file_reload_keyseq = Qt::KeySequence.new('Ctrl+R')
111
111
  @file_reload.shortcut = @file_reload_keyseq
112
- @file_reload.statusTip = tr('Reload a file')
112
+ @file_reload.statusTip = 'Reload a file'
113
113
  @file_reload.connect(SIGNAL('triggered()')) { file_reload() }
114
114
 
115
- @file_save = Qt::Action.new(Cosmos.get_icon('save.png'), tr('&Save'), self)
116
- @file_save_keyseq = Qt::KeySequence.new(tr('Ctrl+S'))
115
+ @file_save = Qt::Action.new(Cosmos.get_icon('save.png'), '&Save', self)
116
+ @file_save_keyseq = Qt::KeySequence.new('Ctrl+S')
117
117
  @file_save.shortcut = @file_save_keyseq
118
- @file_save.statusTip = tr('Save the file')
118
+ @file_save.statusTip = 'Save the file'
119
119
  @file_save.connect(SIGNAL('triggered()')) { file_save(false) }
120
120
 
121
- @file_save_as = Qt::Action.new(Cosmos.get_icon('save_as.png'), tr('Save &As'), self)
122
- @file_save_as.statusTip = tr('Save the file')
121
+ @file_save_as = Qt::Action.new(Cosmos.get_icon('save_as.png'), 'Save &As', self)
122
+ @file_save_as.statusTip = 'Save the file'
123
123
  @file_save_as.connect(SIGNAL('triggered()')) { file_save(true) }
124
124
 
125
125
  # Edit actions
126
- @edit_undo = Qt::Action.new(Cosmos.get_icon('undo.png'), tr('&Undo'), self)
127
- @edit_undo_keyseq = Qt::KeySequence.new(tr('Ctrl+Z'))
126
+ @edit_undo = Qt::Action.new(Cosmos.get_icon('undo.png'), '&Undo', self)
127
+ @edit_undo_keyseq = Qt::KeySequence.new('Ctrl+Z')
128
128
  @edit_undo.shortcut = @edit_undo_keyseq
129
- @edit_undo.statusTip = tr('Undo')
129
+ @edit_undo.statusTip = 'Undo'
130
130
  @edit_undo.connect(SIGNAL('triggered()')) { active_config_editor_frame().undo }
131
131
 
132
- @edit_redo = Qt::Action.new(Cosmos.get_icon('redo.png'), tr('&Redo'), self)
133
- @edit_redo_keyseq = Qt::KeySequence.new(tr('Ctrl+Y'))
132
+ @edit_redo = Qt::Action.new(Cosmos.get_icon('redo.png'), '&Redo', self)
133
+ @edit_redo_keyseq = Qt::KeySequence.new('Ctrl+Y')
134
134
  @edit_redo.shortcut = @edit_redo_keyseq
135
- @edit_redo.statusTip = tr('Redo')
135
+ @edit_redo.statusTip = 'Redo'
136
136
  @edit_redo.connect(SIGNAL('triggered()')) { active_config_editor_frame().redo }
137
137
 
138
- @edit_cut = Qt::Action.new(Cosmos.get_icon('cut.png'), tr('Cu&t'), self)
139
- @edit_cut_keyseq = Qt::KeySequence.new(tr('Ctrl+X'))
138
+ @edit_cut = Qt::Action.new(Cosmos.get_icon('cut.png'), 'Cu&t', self)
139
+ @edit_cut_keyseq = Qt::KeySequence.new('Ctrl+X')
140
140
  @edit_cut.shortcut = @edit_cut_keyseq
141
- @edit_cut.statusTip = tr('Cut')
141
+ @edit_cut.statusTip = 'Cut'
142
142
  @edit_cut.connect(SIGNAL('triggered()')) { active_config_editor_frame().cut }
143
143
 
144
- @edit_copy = Qt::Action.new(Cosmos.get_icon('copy.png'), tr('&Copy'), self)
145
- @edit_copy_keyseq = Qt::KeySequence.new(tr('Ctrl+C'))
144
+ @edit_copy = Qt::Action.new(Cosmos.get_icon('copy.png'), '&Copy', self)
145
+ @edit_copy_keyseq = Qt::KeySequence.new('Ctrl+C')
146
146
  @edit_copy.shortcut = @edit_copy_keyseq
147
- @edit_copy.statusTip = tr('Copy')
147
+ @edit_copy.statusTip = 'Copy'
148
148
  @edit_copy.connect(SIGNAL('triggered()')) { active_config_editor_frame().copy }
149
149
 
150
- @edit_paste = Qt::Action.new(tr('&Paste'), self)
151
- @edit_paste_keyseq = Qt::KeySequence.new(tr('Ctrl+V'))
150
+ @edit_paste = Qt::Action.new('&Paste', self)
151
+ @edit_paste_keyseq = Qt::KeySequence.new('Ctrl+V')
152
152
  @edit_paste.shortcut = @edit_paste_keyseq
153
- @edit_paste.statusTip = tr('Paste')
153
+ @edit_paste.statusTip = 'Paste'
154
154
  @edit_paste.connect(SIGNAL('triggered()')) { active_config_editor_frame().paste }
155
155
 
156
- @edit_select_all = Qt::Action.new(tr('Select &All'), self)
157
- @edit_select_all_keyseq = Qt::KeySequence.new(tr('Ctrl+A'))
156
+ @edit_select_all = Qt::Action.new('Select &All', self)
157
+ @edit_select_all_keyseq = Qt::KeySequence.new('Ctrl+A')
158
158
  @edit_select_all.shortcut = @edit_select_all_keyseq
159
- @edit_select_all.statusTip = tr('Select All')
159
+ @edit_select_all.statusTip = 'Select All'
160
160
  @edit_select_all.connect(SIGNAL('triggered()')) { active_config_editor_frame().select_all }
161
161
 
162
- @edit_comment = Qt::Action.new(tr('Comment/Uncomment &Lines'), self)
163
- @edit_comment_keyseq = Qt::KeySequence.new(tr('Ctrl+K'))
162
+ @edit_comment = Qt::Action.new('Comment/Uncomment &Lines', self)
163
+ @edit_comment_keyseq = Qt::KeySequence.new('Ctrl+K')
164
164
  @edit_comment.shortcut = @edit_comment_keyseq
165
- @edit_comment.statusTip = tr('Comment/Uncomment Lines')
165
+ @edit_comment.statusTip = 'Comment/Uncomment Lines'
166
166
  @edit_comment.connect(SIGNAL('triggered()')) { active_config_editor_frame().comment_or_uncomment_lines }
167
167
 
168
168
  # Search Actions
169
- @search_find = Qt::Action.new(Cosmos.get_icon('search.png'), tr('&Find'), self)
170
- @search_find_keyseq = Qt::KeySequence.new(tr('Ctrl+F'))
169
+ @search_find = Qt::Action.new(Cosmos.get_icon('search.png'), '&Find', self)
170
+ @search_find_keyseq = Qt::KeySequence.new('Ctrl+F')
171
171
  @search_find.shortcut = @search_find_keyseq
172
- @search_find.statusTip = tr('Find text')
172
+ @search_find.statusTip = 'Find text'
173
173
  @search_find.connect(SIGNAL('triggered()')) do
174
174
  FindReplaceDialog.show_find(self)
175
175
  end
176
176
 
177
- @search_find_next = Qt::Action.new(tr('Find &Next'), self)
178
- @search_find_next_keyseq = Qt::KeySequence.new(tr('F3'))
177
+ @search_find_next = Qt::Action.new('Find &Next', self)
178
+ @search_find_next_keyseq = Qt::KeySequence.new('F3')
179
179
  @search_find_next.shortcut = @search_find_next_keyseq
180
- @search_find_next.statusTip = tr('Find next instance')
180
+ @search_find_next.statusTip = 'Find next instance'
181
181
  @search_find_next.connect(SIGNAL('triggered()')) do
182
182
  FindReplaceDialog.find_next(self)
183
183
  end
184
184
 
185
- @search_find_previous = Qt::Action.new(tr('Find &Previous'), self)
186
- @search_find_previous_keyseq = Qt::KeySequence.new(tr('Shift+F3'))
185
+ @search_find_previous = Qt::Action.new('Find &Previous', self)
186
+ @search_find_previous_keyseq = Qt::KeySequence.new('Shift+F3')
187
187
  @search_find_previous.shortcut = @search_find_previous_keyseq
188
- @search_find_previous.statusTip = tr('Find previous instance')
188
+ @search_find_previous.statusTip = 'Find previous instance'
189
189
  @search_find_previous.connect(SIGNAL('triggered()')) do
190
190
  FindReplaceDialog.find_previous(self)
191
191
  end
192
192
 
193
- @search_replace = Qt::Action.new(tr('&Replace'), self)
194
- @search_replace_keyseq = Qt::KeySequence.new(tr('Ctrl+H'))
193
+ @search_replace = Qt::Action.new('&Replace', self)
194
+ @search_replace_keyseq = Qt::KeySequence.new('Ctrl+H')
195
195
  @search_replace.shortcut = @search_replace_keyseq
196
- @search_replace.statusTip = tr('Replace')
196
+ @search_replace.statusTip = 'Replace'
197
197
  @search_replace.connect(SIGNAL('triggered()')) do
198
198
  FindReplaceDialog.show_replace(self)
199
199
  end
@@ -220,22 +220,22 @@ module Cosmos
220
220
  update_cursor()
221
221
  end
222
222
 
223
- @create_target = Qt::Action.new(tr('&Create Target'), self)
224
- @create_target.statusTip = tr('Create a new COSMOS target')
223
+ @create_target = Qt::Action.new('&Create Target', self)
224
+ @create_target.statusTip = 'Create a new COSMOS target'
225
225
  @create_target.connect(SIGNAL('triggered()')) { create_target() }
226
226
  end
227
227
 
228
228
  def initialize_menus
229
229
  # File Menu
230
- @file_menu = menuBar.addMenu(tr('&File'))
230
+ @file_menu = menuBar.addMenu('&File')
231
231
  @file_menu.addAction(@file_new)
232
232
 
233
233
  open_action = Qt::Action.new(self)
234
- open_action.shortcut = Qt::KeySequence.new(tr('Ctrl+O'))
234
+ open_action.shortcut = Qt::KeySequence.new('Ctrl+O')
235
235
  open_action.connect(SIGNAL('triggered()')) { file_open(@procedure_dir) }
236
236
  self.addAction(open_action)
237
237
 
238
- @file_open = @file_menu.addMenu(tr('&Open'))
238
+ @file_open = @file_menu.addMenu('&Open')
239
239
  @file_open.setIcon(Cosmos.get_icon('open.png'))
240
240
  target_dirs_action(@file_open, File.join(Cosmos::USERPATH,'config'), '', method(:file_open))
241
241
 
@@ -248,7 +248,7 @@ module Cosmos
248
248
  @file_menu.addAction(@exit_action)
249
249
 
250
250
  # Edit Menu
251
- mode_menu = menuBar.addMenu(tr('&Edit'))
251
+ mode_menu = menuBar.addMenu('&Edit')
252
252
  mode_menu.addAction(@edit_undo)
253
253
  mode_menu.addAction(@edit_redo)
254
254
  mode_menu.addSeparator()
@@ -261,18 +261,18 @@ module Cosmos
261
261
  mode_menu.addAction(@edit_comment)
262
262
 
263
263
  # Search Menu
264
- view_menu = menuBar.addMenu(tr('&Search'))
264
+ view_menu = menuBar.addMenu('&Search')
265
265
  view_menu.addAction(@search_find)
266
266
  view_menu.addAction(@search_find_next)
267
267
  view_menu.addAction(@search_find_previous)
268
268
  view_menu.addAction(@search_replace)
269
269
 
270
270
  # File Type Menu
271
- type_menu = menuBar.addMenu(tr('File &Type'))
271
+ type_menu = menuBar.addMenu('File &Type')
272
272
  type_menu.addActions(@type_group.actions)
273
273
 
274
274
  # Actions Menu
275
- actions_menu = menuBar.addMenu(tr('&Actions'))
275
+ actions_menu = menuBar.addMenu('&Actions')
276
276
  actions_menu.addAction(@create_target)
277
277
 
278
278
  # Help Menu
@@ -376,8 +376,8 @@ module Cosmos
376
376
  def tree_context_menu(point)
377
377
  menu = Qt::Menu.new()
378
378
 
379
- delete_action = Qt::Action.new(tr("Delete"), self)
380
- delete_action.statusTip = tr("Delete file")
379
+ delete_action = Qt::Action.new("Delete", self)
380
+ delete_action.statusTip = "Delete file"
381
381
  delete_action.connect(SIGNAL('triggered()')) do
382
382
  delete_path(@fs_model.filePath(@tree_view.indexAt(point)))
383
383
  end
@@ -490,11 +490,11 @@ module Cosmos
490
490
  saved = true
491
491
  update_title()
492
492
  update_tree()
493
- statusBar.showMessage(tr("#{filename} saved"))
493
+ statusBar.showMessage("#{filename} saved")
494
494
  @procedure_dir = File.dirname(filename)
495
495
  @procedure_dir << '/' if @procedure_dir[-1..-1] != '/' and @procedure_dir[-1..-1] != '\\'
496
496
  rescue => error
497
- statusBar.showMessage(tr("Error Saving File : #{error.class} : #{error.message}"))
497
+ statusBar.showMessage("Error Saving File : #{error.class} : #{error.message}")
498
498
  end
499
499
  end
500
500
 
@@ -656,23 +656,23 @@ module Cosmos
656
656
 
657
657
  menu = Qt::Menu.new()
658
658
 
659
- new_action = Qt::Action.new(tr("&New"), self)
660
- new_action.statusTip = tr("Create a new file")
659
+ new_action = Qt::Action.new("&New", self)
660
+ new_action.statusTip = "Create a new file"
661
661
  new_action.connect(SIGNAL('triggered()')) { file_new() }
662
662
  menu.addAction(new_action)
663
663
 
664
- close_action = Qt::Action.new(tr("&Close"), self)
665
- close_action.statusTip = tr("Close the file")
664
+ close_action = Qt::Action.new("&Close", self)
665
+ close_action.statusTip = "Close the file"
666
666
  close_action.connect(SIGNAL('triggered()')) { file_close() }
667
667
  menu.addAction(close_action)
668
668
 
669
- save_action = Qt::Action.new(tr("&Save"), self)
670
- save_action.statusTip = tr("Save the file")
669
+ save_action = Qt::Action.new("&Save", self)
670
+ save_action.statusTip = "Save the file"
671
671
  save_action.connect(SIGNAL('triggered()')) { file_save(false) }
672
672
  menu.addAction(save_action)
673
673
 
674
- save_action = Qt::Action.new(tr("Save &As"), self)
675
- save_action.statusTip = tr("Save the file as")
674
+ save_action = Qt::Action.new("Save &As", self)
675
+ save_action.statusTip = "Save the file as"
676
676
  save_action.connect(SIGNAL('triggered()')) { file_save(true) }
677
677
  menu.addAction(save_action)
678
678
 
@@ -10,8 +10,6 @@
10
10
 
11
11
  require 'cosmos'
12
12
  Cosmos.catch_fatal_exception do
13
- require 'cosmos/script'
14
- require 'cosmos/config/config_parser'
15
13
  require 'cosmos/gui/qt_tool'
16
14
  require 'cosmos/gui/dialogs/splash'
17
15
  require 'cosmos/gui/dialogs/progress_dialog'
@@ -22,6 +20,8 @@ Cosmos.catch_fatal_exception do
22
20
  require 'cosmos/gui/widgets/realtime_button_bar'
23
21
  require 'cosmos/tools/data_viewer/data_viewer_component'
24
22
  require 'cosmos/tools/data_viewer/dump_component'
23
+ require 'cosmos/config/config_parser'
24
+ require 'cosmos/script'
25
25
  end
26
26
 
27
27
  module Cosmos
@@ -97,62 +97,62 @@ module Cosmos
97
97
  super()
98
98
 
99
99
  # File Menu Actions
100
- @open_log = Qt::Action.new(tr('&Open Log File'), self)
101
- @open_log_keyseq = Qt::KeySequence.new(tr('Ctrl+O'))
100
+ @open_log = Qt::Action.new('&Open Log File', self)
101
+ @open_log_keyseq = Qt::KeySequence.new('Ctrl+O')
102
102
  @open_log.shortcut = @open_log_keyseq
103
- @open_log.statusTip = tr('Open telemetry log file for processing')
103
+ @open_log.statusTip = 'Open telemetry log file for processing'
104
104
  @open_log.connect(SIGNAL('triggered()')) { handle_open_log_file() }
105
105
 
106
- @query_dart = Qt::Action.new(tr('&Query DART Database'), self)
107
- @query_dart_keyseq = Qt::KeySequence.new(tr('Ctrl+D'))
106
+ @query_dart = Qt::Action.new('&Query DART Database', self)
107
+ @query_dart_keyseq = Qt::KeySequence.new('Ctrl+D')
108
108
  @query_dart.shortcut = @query_dart_keyseq
109
- @query_dart.statusTip = tr('Query DART Database')
109
+ @query_dart.statusTip = 'Query DART Database'
110
110
  @query_dart.connect(SIGNAL('triggered()')) { handle_query_dart() }
111
111
 
112
- @handle_reset = Qt::Action.new(tr('&Reset'), self)
113
- @handle_reset_keyseq = Qt::KeySequence.new(tr('Ctrl+R'))
112
+ @handle_reset = Qt::Action.new('&Reset', self)
113
+ @handle_reset_keyseq = Qt::KeySequence.new('Ctrl+R')
114
114
  @handle_reset.shortcut = @handle_reset_keyseq
115
- @handle_reset.statusTip = tr('Reset Components')
115
+ @handle_reset.statusTip = 'Reset Components'
116
116
  @handle_reset.connect(SIGNAL('triggered()')) { handle_reset() }
117
117
 
118
- @replay_action = Qt::Action.new(tr('Toggle Replay Mode'), self)
119
- @replay_action.statusTip = tr('Toggle Replay Mode')
118
+ @replay_action = Qt::Action.new('Toggle Replay Mode', self)
119
+ @replay_action.statusTip = 'Toggle Replay Mode'
120
120
  @replay_action.connect(SIGNAL('triggered()')) { toggle_replay_mode() }
121
121
 
122
122
  # Search Actions
123
- @search_find = Qt::Action.new(Cosmos.get_icon('search.png'), tr('&Find'), self)
124
- @search_find_keyseq = Qt::KeySequence.new(tr('Ctrl+F'))
123
+ @search_find = Qt::Action.new(Cosmos.get_icon('search.png'), '&Find', self)
124
+ @search_find_keyseq = Qt::KeySequence.new('Ctrl+F')
125
125
  @search_find.shortcut = @search_find_keyseq
126
- @search_find.statusTip = tr('Find text')
126
+ @search_find.statusTip = 'Find text'
127
127
  @search_find.connect(SIGNAL('triggered()')) do
128
128
  FindReplaceDialog.show_find(self)
129
129
  end
130
130
 
131
- @search_find_next = Qt::Action.new(tr('Find &Next'), self)
132
- @search_find_next_keyseq = Qt::KeySequence.new(tr('F3'))
131
+ @search_find_next = Qt::Action.new('Find &Next', self)
132
+ @search_find_next_keyseq = Qt::KeySequence.new('F3')
133
133
  @search_find_next.shortcut = @search_find_next_keyseq
134
- @search_find_next.statusTip = tr('Find next instance')
134
+ @search_find_next.statusTip = 'Find next instance'
135
135
  @search_find_next.connect(SIGNAL('triggered()')) do
136
136
  FindReplaceDialog.find_next(self)
137
137
  end
138
138
 
139
- @search_find_previous = Qt::Action.new(tr('Find &Previous'), self)
140
- @search_find_previous_keyseq = Qt::KeySequence.new(tr('Shift+F3'))
139
+ @search_find_previous = Qt::Action.new('Find &Previous', self)
140
+ @search_find_previous_keyseq = Qt::KeySequence.new('Shift+F3')
141
141
  @search_find_previous.shortcut = @search_find_previous_keyseq
142
- @search_find_previous.statusTip = tr('Find previous instance')
142
+ @search_find_previous.statusTip = 'Find previous instance'
143
143
  @search_find_previous.connect(SIGNAL('triggered()')) do
144
144
  FindReplaceDialog.find_previous(self)
145
145
  end
146
146
 
147
147
  # Tab Menu Actions
148
- @delete_tab = Qt::Action.new(Cosmos.get_icon('delete_tab.png'), tr('&Delete Tab'), self)
149
- @delete_tab.statusTip = tr('Delete active tab')
148
+ @delete_tab = Qt::Action.new(Cosmos.get_icon('delete_tab.png'), '&Delete Tab', self)
149
+ @delete_tab.statusTip = 'Delete active tab'
150
150
  @delete_tab.connect(SIGNAL('triggered()')) { on_tab_delete() }
151
151
  end
152
152
 
153
153
  def initialize_menus
154
154
  # File Menu
155
- file_menu = menuBar.addMenu(tr('&File'))
155
+ file_menu = menuBar.addMenu('&File')
156
156
  file_menu.addAction(@open_log)
157
157
  file_menu.addAction(@query_dart)
158
158
  file_menu.addAction(@handle_reset)
@@ -161,13 +161,13 @@ module Cosmos
161
161
  file_menu.addAction(@exit_action)
162
162
 
163
163
  # Tab Menu
164
- @tab_menu = menuBar.addMenu(tr('&Tab'))
164
+ @tab_menu = menuBar.addMenu('&Tab')
165
165
  @tab_menu.addAction(@delete_tab)
166
166
  @tab_menu.addSeparator()
167
167
  @tab_menu_actions = []
168
168
 
169
169
  # Search Menu
170
- view_menu = menuBar.addMenu(tr('&Search'))
170
+ view_menu = menuBar.addMenu('&Search')
171
171
  view_menu.addAction(@search_find)
172
172
  view_menu.addAction(@search_find_next)
173
173
  view_menu.addAction(@search_find_previous)
@@ -307,7 +307,7 @@ module Cosmos
307
307
  break if @cancel_thread
308
308
  Qt.execute_in_main_thread(true) do
309
309
  @realtime_button_bar.state = 'Connecting'
310
- statusBar.showMessage(tr("Error Connecting to Command and Telemetry Server"))
310
+ statusBar.showMessage("Error Connecting to Command and Telemetry Server")
311
311
  end
312
312
  break if @sleeper.sleep(1)
313
313
  break if @cancel_thread
@@ -318,7 +318,7 @@ module Cosmos
318
318
  break if @cancel_thread
319
319
  begin
320
320
  # Get a subscribed to packet
321
- packet_data, target_name, packet_name, received_time, received_count = get_packet_data(@subscription_id)
321
+ packet_data, target_name, packet_name, received_time, received_count, stored, extra = get_packet_data(@subscription_id)
322
322
  break unless packet_data
323
323
 
324
324
  # Put packet data into its packet
@@ -326,6 +326,8 @@ module Cosmos
326
326
  packet.buffer = packet_data
327
327
  packet.received_time = received_time
328
328
  packet.received_count = received_count
329
+ packet.stored = stored
330
+ packet.extra = extra
329
331
 
330
332
  # Make sure we are on the right configuration
331
333
  if target_name == 'SYSTEM' and packet_name == 'META'
@@ -344,12 +346,12 @@ module Cosmos
344
346
  end
345
347
  rescue DRb::DRbConnError
346
348
  break if @cancel_thread
347
- Qt.execute_in_main_thread(true) { statusBar.showMessage(tr("Error Connecting to Command and Telemetry Server")) }
349
+ Qt.execute_in_main_thread(true) { statusBar.showMessage("Error Connecting to Command and Telemetry Server") }
348
350
  break # Let outer loop resubscribe
349
351
  rescue RuntimeError => error
350
352
  raise error unless error.message =~ /queue/
351
353
  break if @cancel_thread
352
- Qt.execute_in_main_thread(true) { statusBar.showMessage(tr("Connection Dropped by Command and Telemetry Server: #{Time.now.sys.formatted}")) }
354
+ Qt.execute_in_main_thread(true) { statusBar.showMessage("Connection Dropped by Command and Telemetry Server: #{Time.now.sys.formatted}") }
353
355
  break # Let outer loop resubscribe
354
356
  end
355
357
  end
@@ -537,7 +539,7 @@ module Cosmos
537
539
  @interface.disconnect
538
540
  request_packet = Cosmos::Packet.new('DART', 'DART')
539
541
  request_packet.define_item('REQUEST', 0, 0, :BLOCK)
540
-
542
+
541
543
  @time_start ||= Time.utc(1970, 1, 1)
542
544
  @time_end ||= Time.now
543
545
  @time_delta = @time_end - @time_start
@@ -550,7 +552,7 @@ module Cosmos
550
552
  request['packets'] = @packets
551
553
  request['meta_filters'] = @meta_filters unless @meta_filters.empty?
552
554
  request_packet.write('REQUEST', JSON.dump(request))
553
-
555
+
554
556
  progress_dialog.append_text("Connecting to DART Database...")
555
557
  @interface.connect
556
558
  progress_dialog.append_text("Sending DART Database Query...")
@@ -570,16 +572,18 @@ module Cosmos
570
572
 
571
573
  # Switch to correct configuration from SYSTEM META when needed
572
574
  if packet.target_name == 'SYSTEM'.freeze and packet.packet_name == 'META'.freeze
573
- meta_packet = System.telemetry.update!('SYSTEM', 'META', packet.buffer)
575
+ meta_packet = System.telemetry.update!('SYSTEM', 'META', packet.buffer)
574
576
  Cosmos::System.load_configuration(meta_packet.read('CONFIG'))
575
577
  elsif first
576
578
  first = false
577
- @time_start = packet.received_time
579
+ @time_start = packet.packet_time
578
580
  @time_delta = @time_end - @time_start
579
581
  end
580
582
 
581
583
  defined_packet = System.telemetry.update!(packet.target_name, packet.packet_name, packet.buffer)
582
584
  defined_packet.received_time = packet.received_time
585
+ defined_packet.stored = packet.stored
586
+ defined_packet.extra = packet.extra
583
587
 
584
588
  break if @cancel_progress
585
589
  # Route packet to its component(s)
@@ -593,14 +597,14 @@ module Cosmos
593
597
  end
594
598
  end
595
599
 
596
- progress = ((@time_delta - (@time_end - defined_packet.received_time)).to_f / @time_delta.to_f)
600
+ progress = ((@time_delta - (@time_end - defined_packet.packet_time)).to_f / @time_delta.to_f)
597
601
  progress_dialog.set_overall_progress(progress) if !@cancel_progress
598
602
  end
599
603
  ensure
600
604
  progress_dialog.append_text("Canceled!") if @cancel_progress
601
605
  progress_dialog.complete
602
606
  end
603
- end
607
+ end
604
608
  rescue => error
605
609
  Qt::MessageBox.critical(self, 'Error!', "Error Querying DART Database\n#{error.formatted}")
606
610
  ensure
@@ -745,7 +749,7 @@ module Cosmos
745
749
  delete_component(tab_index)
746
750
  @tab_book.removeTab(tab_index)
747
751
 
748
- statusBar.showMessage(tr("Tab Deleted"))
752
+ statusBar.showMessage("Tab Deleted")
749
753
  end
750
754
  else
751
755
  Qt::MessageBox.information(self, 'Info', "No tabs exist")