cosmos 4.2.4-java → 4.3.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 (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
@@ -305,21 +305,24 @@ module Cosmos
305
305
  if log_change
306
306
  # Write to Server Messages that limits state has changed
307
307
  tgt_pkt_item_str = "#{packet.target_name} #{packet.packet_name} #{item.name} = #{value} is"
308
+ packet_time = packet.packet_time
309
+ pkt_time_str = ""
310
+ pkt_time_str << " (#{packet.packet_time.sys.formatted})" if packet_time
308
311
  case item.limits.state
309
312
  when :BLUE
310
- Logger.info "<B>#{tgt_pkt_item_str} #{item.limits.state}"
313
+ Logger.info "<B>#{tgt_pkt_item_str} #{item.limits.state}#{pkt_time_str}"
311
314
  when :GREEN, :GREEN_LOW, :GREEN_HIGH
312
- Logger.info "<G>#{tgt_pkt_item_str} #{item.limits.state}"
315
+ Logger.info "<G>#{tgt_pkt_item_str} #{item.limits.state}#{pkt_time_str}"
313
316
  when :YELLOW, :YELLOW_LOW, :YELLOW_HIGH
314
- Logger.warn "<Y>#{tgt_pkt_item_str} #{item.limits.state}"
317
+ Logger.warn "<Y>#{tgt_pkt_item_str} #{item.limits.state}#{pkt_time_str}"
315
318
  when :RED, :RED_LOW, :RED_HIGH
316
- Logger.error "<R>#{tgt_pkt_item_str} #{item.limits.state}"
319
+ Logger.error "<R>#{tgt_pkt_item_str} #{item.limits.state}#{pkt_time_str}"
317
320
  else
318
- Logger.error "#{tgt_pkt_item_str} UNKNOWN"
321
+ Logger.error "#{tgt_pkt_item_str} UNKNOWN#{pkt_time_str}"
319
322
  end
320
323
  end
321
324
 
322
- post_limits_event(:LIMITS_CHANGE, [packet.target_name, packet.packet_name, item.name, old_limits_state, item.limits.state])
325
+ post_limits_event(:LIMITS_CHANGE, [packet.target_name, packet.packet_name, item.name, old_limits_state, item.limits.state, packet_time ? packet_time.tv_sec : nil, packet_time ? packet_time.tv_usec : nil])
323
326
 
324
327
  if @mode == :CMD_TLM_SERVER
325
328
  if item.limits.response
@@ -457,7 +460,7 @@ module Cosmos
457
460
  received_time = packet.received_time
458
461
  received_time ||= Time.now.sys
459
462
  queue << [packet.buffer, target_name, packet_name,
460
- received_time.tv_sec, received_time.tv_usec, packet.received_count]
463
+ received_time.tv_sec, received_time.tv_usec, packet.received_count, packet.stored, packet.extra]
461
464
  if queue.length > queue_size
462
465
  # Drop queue
463
466
  queues_to_drop << id
@@ -529,7 +532,7 @@ module Cosmos
529
532
  received_time = packet.received_time
530
533
  received_time ||= Time.now.sys
531
534
  @@instance.packet_data_queues[id][0] << [packet.buffer, 'SYSTEM', 'META',
532
- received_time.tv_sec, received_time.tv_usec, packet.received_count]
535
+ received_time.tv_sec, received_time.tv_usec, packet.received_count, packet.stored, packet.extra]
533
536
  end
534
537
  end
535
538
  return id
@@ -572,7 +575,7 @@ module Cosmos
572
575
  rescue ThreadError
573
576
  received_time ||= Time.now.sys
574
577
  return [@last_subscribed_packet.buffer, @last_subscribed_packet.target_name,
575
- @last_subscribed_packet.packet_name, received_time.tv_sec, received_time.tv_usec, @last_subscribed_packet.received_count]
578
+ @last_subscribed_packet.packet_name, received_time.tv_sec, received_time.tv_usec, @last_subscribed_packet.received_count, @last_subscribed_packet.stored, @last_subscribed_packet.extra]
576
579
  end
577
580
  else
578
581
  return queue.pop(non_block)
@@ -153,7 +153,7 @@ module Cosmos
153
153
  current_interface_or_router.name = interface_name
154
154
  @interfaces[interface_name] = current_interface_or_router
155
155
 
156
- when 'LOG', 'DONT_LOG', 'TARGET'
156
+ when 'LOG', 'LOG_STORED', 'DONT_LOG', 'TARGET'
157
157
  raise parser.error("No current interface for #{keyword}") unless current_interface_or_router and current_type == :INTERFACE
158
158
 
159
159
  case keyword
@@ -166,6 +166,12 @@ module Cosmos
166
166
  current_interface_log_added = true
167
167
  current_interface_or_router.packet_log_writer_pairs << packet_log_writer_pair unless current_interface_or_router.packet_log_writer_pairs.include?(packet_log_writer_pair)
168
168
 
169
+ when 'LOG_STORED'
170
+ parser.verify_num_parameters(1, 1, "#{keyword} <Packet Log Writer Name>")
171
+ packet_log_writer_pair = @packet_log_writer_pairs[params[0].upcase]
172
+ raise parser.error("Unknown packet log writer: #{params[0].upcase}") unless packet_log_writer_pair
173
+ current_interface_or_router.stored_packet_log_writer_pairs << packet_log_writer_pair unless current_interface_or_router.stored_packet_log_writer_pairs.include?(packet_log_writer_pair)
174
+
169
175
  when 'DONT_LOG'
170
176
  parser.verify_num_parameters(0, 0, "#{keyword}")
171
177
  current_interface_or_router.packet_log_writer_pairs = []
@@ -129,7 +129,7 @@ module Cosmos
129
129
  @first_output = 0
130
130
  @options = options
131
131
 
132
- statusBar.showMessage(tr("")) # Show blank message to initialize status bar
132
+ statusBar.showMessage("") # Show blank message to initialize status bar
133
133
 
134
134
  initialize_actions()
135
135
  initialize_menus()
@@ -194,26 +194,26 @@ module Cosmos
194
194
  super()
195
195
 
196
196
  # File actions
197
- @file_reload = Qt::Action.new(tr('&Reload Configuration'), self)
198
- @file_reload.statusTip = tr('Reload configuraton and reset')
197
+ @file_reload = Qt::Action.new('&Reload Configuration', self)
198
+ @file_reload.statusTip = 'Reload configuraton and reset'
199
199
  @file_reload.connect(SIGNAL('triggered()')) do
200
200
  CmdTlmServer.instance.reload()
201
201
  end
202
202
 
203
203
  # Edit actions
204
- @edit_clear_counters = Qt::Action.new(tr('&Clear Counters'), self)
205
- @edit_clear_counters.statusTip = tr('Clear counters for all interfaces and targets')
204
+ @edit_clear_counters = Qt::Action.new('&Clear Counters', self)
205
+ @edit_clear_counters.statusTip = 'Clear counters for all interfaces and targets'
206
206
  @edit_clear_counters.connect(SIGNAL('triggered()')) { CmdTlmServer.clear_counters }
207
207
  end
208
208
 
209
209
  def initialize_menus
210
- @file_menu = menuBar.addMenu(tr('&File'))
210
+ @file_menu = menuBar.addMenu('&File')
211
211
  @file_menu.addAction(@file_reload)
212
212
  @file_menu.addAction(@exit_action)
213
213
 
214
214
  # Do not allow clear counters in production mode
215
215
  unless @production
216
- @edit_menu = menuBar.addMenu(tr('&Edit'))
216
+ @edit_menu = menuBar.addMenu('&Edit')
217
217
  @edit_menu.addAction(@edit_clear_counters)
218
218
  end
219
219
 
@@ -641,7 +641,7 @@ module Cosmos
641
641
  end
642
642
  else
643
643
  options.replay = false
644
- end
644
+ end
645
645
  end
646
646
 
647
647
  super(option_parser, options)
@@ -52,6 +52,8 @@ module Cosmos
52
52
  if identified_command
53
53
  identified_command.received_time = packet.received_time
54
54
  identified_command.raw = packet.raw
55
+ identified_command.stored = packet.stored
56
+ identified_command.extra = packet.extra
55
57
  packet = identified_command
56
58
  end
57
59
  end
@@ -69,6 +71,8 @@ module Cosmos
69
71
  end
70
72
  command.received_time = packet.received_time
71
73
  command.raw = packet.raw
74
+ command.stored = packet.stored
75
+ command.extra = packet.extra
72
76
  command.buffer = packet.buffer
73
77
  command.received_count += 1
74
78
  Logger.info System.commands.format(command, target.ignored_parameters) if !command.messages_disabled and command.target_name != 'UNKNOWN'
@@ -99,8 +103,15 @@ module Cosmos
99
103
  end
100
104
 
101
105
  # Write to command packet logs
102
- interface.packet_log_writer_pairs.each do |packet_log_writer_pair|
103
- packet_log_writer_pair.cmd_log_writer.write(command)
106
+ if command.stored and !interface.stored_packet_log_writer_pairs.empty?
107
+ interface.stored_packet_log_writer_pairs.each do |packet_log_writer_pair|
108
+ packet_log_writer_pair.cmd_log_writer.write(command)
109
+ end
110
+ else
111
+ interface.packet_log_writer_pairs.each do |packet_log_writer_pair|
112
+ # Write errors are handled by the log writer
113
+ packet_log_writer_pair.cmd_log_writer.write(command)
114
+ end
104
115
  end
105
116
  end
106
117
 
@@ -127,7 +127,7 @@ module Cosmos
127
127
  def populate_interface_table(interfaces, interfaces_table)
128
128
  row = 0
129
129
  interfaces.all.each do |interface_name, interface|
130
- item = Qt::TableWidgetItem.new(Qt::Object.tr(interface_name))
130
+ item = Qt::TableWidgetItem.new(interface_name)
131
131
  item.setTextAlignment(ALIGN_CENTER)
132
132
  interfaces_table.setItem(row, 0, item)
133
133
  interfaces_table.setCellWidget(row, 1, create_button(interface, interface_name))
@@ -138,7 +138,7 @@ module Cosmos
138
138
  interface.bytes_written, interface.bytes_read,
139
139
  interface.write_count, interface.read_count].each do |val|
140
140
 
141
- item = Qt::TableWidgetItem.new(val.to_s)#Qt::Object.tr(val.to_s))
141
+ item = Qt::TableWidgetItem.new(val.to_s)
142
142
  item.setTextAlignment(ALIGN_CENTER)
143
143
  interfaces_table.setItem(row, index, item)
144
144
  index += 1
@@ -77,7 +77,7 @@ module Cosmos
77
77
 
78
78
  def populate_logging_actions(layout)
79
79
  # Add all the action buttons
80
- actions = Qt::GroupBox.new(Qt::Object.tr("Actions"))
80
+ actions = Qt::GroupBox.new("Actions")
81
81
  actions_layout = Qt::VBoxLayout.new(actions)
82
82
  button_layout = Qt::GridLayout.new
83
83
 
@@ -92,13 +92,13 @@ module Cosmos
92
92
 
93
93
  log_buttons.each do |text, location, method|
94
94
  next if text =~ /Stop/ and @production
95
- button = Qt::PushButton.new(Qt::Object.tr(text))
95
+ button = Qt::PushButton.new(text)
96
96
  button_layout.addWidget(button, location[0], location[1])
97
97
  button.connect(SIGNAL('clicked()')) do
98
98
  begin
99
99
  CmdTlmServer.instance.send(method, 'ALL')
100
100
  rescue Exception => error
101
- statusBar.showMessage(Qt::Object.tr(error.message))
101
+ statusBar.showMessage(error.message)
102
102
  end
103
103
  end
104
104
  end
@@ -109,13 +109,13 @@ module Cosmos
109
109
  end
110
110
 
111
111
  def create_log_layout(form_layout, log_writer, label_prefix)
112
- label = Qt::Label.new(Qt::Object.tr(log_writer.logging_enabled.to_s))
112
+ label = Qt::Label.new(log_writer.logging_enabled.to_s)
113
113
  label.setTextInteractionFlags(Qt::TextSelectableByMouse)
114
114
  form_layout.addRow("#{label_prefix} Logging:", label)
115
- label = Qt::Label.new(Qt::Object.tr(log_writer.queue.size.to_s))
115
+ label = Qt::Label.new(log_writer.queue.size.to_s)
116
116
  label.setTextInteractionFlags(Qt::TextSelectableByMouse)
117
117
  form_layout.addRow("#{label_prefix} Queue Size:", label)
118
- label = Qt::Label.new(Qt::Object.tr(log_writer.filename))
118
+ label = Qt::Label.new(log_writer.filename)
119
119
  label.setTextInteractionFlags(Qt::TextSelectableByMouse)
120
120
  form_layout.addRow("#{label_prefix} Filename:", label)
121
121
  file_size = 0
@@ -124,7 +124,7 @@ module Cosmos
124
124
  rescue Exception
125
125
  # Do nothing on error
126
126
  end
127
- label = Qt::Label.new(Qt::Object.tr(file_size.to_s))
127
+ label = Qt::Label.new(file_size.to_s)
128
128
  label.setTextInteractionFlags(Qt::TextSelectableByMouse)
129
129
  form_layout.addRow("#{label_prefix} File Size:", label)
130
130
  end
@@ -142,30 +142,30 @@ module Cosmos
142
142
 
143
143
  form_layout = Qt::FormLayout.new
144
144
  @logging_layouts[packet_log_writer_pair_name] = form_layout
145
- label = Qt::Label.new(Qt::Object.tr(interfaces.join(", ")))
145
+ label = Qt::Label.new(interfaces.join(", "))
146
146
  label.setTextInteractionFlags(Qt::TextSelectableByMouse)
147
147
  form_layout.addRow("Interfaces:", label)
148
148
  create_log_layout(form_layout, packet_log_writer_pair.cmd_log_writer, 'Cmd')
149
149
  create_log_layout(form_layout, packet_log_writer_pair.tlm_log_writer, 'Tlm')
150
150
 
151
151
  button_layout = Qt::HBoxLayout.new
152
- start_button = Qt::PushButton.new(Qt::Object.tr('Start Cmd Logging'))
152
+ start_button = Qt::PushButton.new('Start Cmd Logging')
153
153
  button_layout.addWidget(start_button)
154
154
  start_button.connect(SIGNAL('clicked()')) do
155
155
  CmdTlmServer.instance.start_cmd_log(packet_log_writer_pair_name)
156
156
  end
157
- start_button = Qt::PushButton.new(Qt::Object.tr('Start Tlm Logging'))
157
+ start_button = Qt::PushButton.new('Start Tlm Logging')
158
158
  button_layout.addWidget(start_button)
159
159
  start_button.connect(SIGNAL('clicked()')) do
160
160
  CmdTlmServer.instance.start_tlm_log(packet_log_writer_pair_name)
161
161
  end
162
162
  if @production == false
163
- stop_button = Qt::PushButton.new(Qt::Object.tr('Stop Cmd Logging'))
163
+ stop_button = Qt::PushButton.new('Stop Cmd Logging')
164
164
  button_layout.addWidget(stop_button)
165
165
  stop_button.connect(SIGNAL('clicked()')) do
166
166
  CmdTlmServer.instance.stop_cmd_log(packet_log_writer_pair_name)
167
167
  end
168
- stop_button = Qt::PushButton.new(Qt::Object.tr('Stop Tlm Logging'))
168
+ stop_button = Qt::PushButton.new('Stop Tlm Logging')
169
169
  button_layout.addWidget(stop_button)
170
170
  stop_button.connect(SIGNAL('clicked()')) do
171
171
  CmdTlmServer.instance.stop_tlm_log(packet_log_writer_pair_name)
@@ -175,7 +175,7 @@ module Cosmos
175
175
  log_layout.addLayout(form_layout)
176
176
  layout.addWidget(log)
177
177
  end
178
- layout.addWidget(Qt::Label.new(Qt::Object.tr("Note: Buffered IO operations cause file size to not reflect total logged data size until the log file is closed.")))
178
+ layout.addWidget(Qt::Label.new("Note: Buffered IO operations cause file size to not reflect total logged data size until the log file is closed."))
179
179
  end
180
180
  end
181
181
  end
@@ -116,11 +116,11 @@ module Cosmos
116
116
  packets.sort.each do |packet_name, packet|
117
117
  packet.received_count ||= 0
118
118
  next if packet.hidden
119
- target_name_widget = Qt::TableWidgetItem.new(Qt::Object.tr(target_name))
119
+ target_name_widget = Qt::TableWidgetItem.new(target_name)
120
120
  target_name_widget.setTextAlignment(Qt::AlignRight | Qt::AlignVCenter)
121
121
  table.setItem(row, 0, target_name_widget)
122
- table.setItem(row, 1, Qt::TableWidgetItem.new(Qt::Object.tr(packet_name)))
123
- packet_count = Qt::TableWidgetItem.new(Qt::Object.tr(packet.received_count.to_s))
122
+ table.setItem(row, 1, Qt::TableWidgetItem.new(packet_name))
123
+ packet_count = Qt::TableWidgetItem.new(packet.received_count.to_s)
124
124
  packet_count.setTextAlignment(Qt::AlignCenter)
125
125
  table.setItem(row, 2, packet_count)
126
126
  view_raw = Qt::PushButton.new("View Raw")
@@ -151,7 +151,7 @@ module Cosmos
151
151
  end
152
152
  table.setCellWidget(row, 4, view_pv)
153
153
  else
154
- table_widget = Qt::TableWidgetItem.new(Qt::Object.tr('N/A'))
154
+ table_widget = Qt::TableWidgetItem.new('N/A')
155
155
  table_widget.setTextAlignment(Qt::AlignCenter)
156
156
  table.setItem(row, 4, table_widget)
157
157
  end
@@ -53,7 +53,7 @@ module Cosmos
53
53
  private
54
54
 
55
55
  def populate_limits_status(layout)
56
- limits = Qt::GroupBox.new(Qt::Object.tr("Limits Status"))
56
+ limits = Qt::GroupBox.new("Limits Status")
57
57
  limits_layout = Qt::FormLayout.new(limits)
58
58
  current_limits_set = System.limits_set.to_s
59
59
 
@@ -88,7 +88,7 @@ module Cosmos
88
88
  @previous_request_count = 0
89
89
  end
90
90
 
91
- api = Qt::GroupBox.new(Qt::Object.tr("API Status"))
91
+ api = Qt::GroupBox.new("API Status")
92
92
  api_layout = Qt::VBoxLayout.new(api)
93
93
  @api_table = Qt::TableWidget.new()
94
94
  @api_table.verticalHeader.hide()
@@ -97,14 +97,14 @@ module Cosmos
97
97
  @api_table.setHorizontalHeaderLabels(["Port", "Num Clients", "Requests", "Requests/Sec", "Avg Request Time", "Estimated Utilization"])
98
98
 
99
99
  if CmdTlmServer.mode == :CMD_TLM_SERVER
100
- @api_table.setItem(0, 0, Qt::TableWidgetItem.new(Qt::Object.tr(System.ports['CTS_API'].to_s)))
100
+ @api_table.setItem(0, 0, Qt::TableWidgetItem.new(System.ports['CTS_API'].to_s))
101
101
  else
102
- @api_table.setItem(0, 0, Qt::TableWidgetItem.new(Qt::Object.tr(System.ports['REPLAY_API'].to_s)))
102
+ @api_table.setItem(0, 0, Qt::TableWidgetItem.new(System.ports['REPLAY_API'].to_s))
103
103
  end
104
- item0 = Qt::TableWidgetItem.new(Qt::Object.tr(CmdTlmServer.json_drb.num_clients.to_s))
104
+ item0 = Qt::TableWidgetItem.new(CmdTlmServer.json_drb.num_clients.to_s)
105
105
  item0.setTextAlignment(Qt::AlignCenter)
106
106
  @api_table.setItem(0, 1, item0)
107
- item = Qt::TableWidgetItem.new(Qt::Object.tr(@previous_request_count.to_s))
107
+ item = Qt::TableWidgetItem.new(@previous_request_count.to_s)
108
108
  item.setTextAlignment(Qt::AlignCenter)
109
109
  @api_table.setItem(0, 2, item)
110
110
  item2 = Qt::TableWidgetItem.new("0.0")
@@ -122,7 +122,7 @@ module Cosmos
122
122
  end
123
123
 
124
124
  def populate_system_status(layout)
125
- system = Qt::GroupBox.new(Qt::Object.tr("System Status"))
125
+ system = Qt::GroupBox.new("System Status")
126
126
  system_layout = Qt::VBoxLayout.new(system)
127
127
  @system_table = Qt::TableWidget.new()
128
128
  @system_table.verticalHeader.hide()
@@ -148,7 +148,7 @@ module Cosmos
148
148
  end
149
149
 
150
150
  def populate_background_status(layout)
151
- background_tasks_groupbox = Qt::GroupBox.new(Qt::Object.tr("Background Tasks"))
151
+ background_tasks_groupbox = Qt::GroupBox.new("Background Tasks")
152
152
  background_tasks_layout = Qt::VBoxLayout.new(background_tasks_groupbox)
153
153
  @background_tasks_table = Qt::TableWidget.new()
154
154
  @background_tasks_table.verticalHeader.hide()
@@ -68,21 +68,21 @@ module Cosmos
68
68
  def populate_targets_table
69
69
  row = 0
70
70
  System.targets.sort.each do |target_name, target|
71
- target_name_widget = Qt::TableWidgetItem.new(Qt::Object.tr(target_name))
71
+ target_name_widget = Qt::TableWidgetItem.new(target_name)
72
72
  target_name_widget.setTextAlignment(Qt::AlignCenter)
73
73
  @targets_table.setItem(row, 0, target_name_widget)
74
74
  if target.interface
75
- interface_name_widget = Qt::TableWidgetItem.new(Qt::Object.tr(target.interface.name.to_s))
75
+ interface_name_widget = Qt::TableWidgetItem.new(target.interface.name.to_s)
76
76
  else
77
- interface_name_widget = Qt::TableWidgetItem.new(Qt::Object.tr(''))
77
+ interface_name_widget = Qt::TableWidgetItem.new('')
78
78
  end
79
79
  interface_name_widget.setTextAlignment(Qt::AlignCenter)
80
80
  @targets_table.setItem(row, 1, interface_name_widget)
81
- cmd_cnt = Qt::TableWidgetItem.new(Qt::Object.tr(target.cmd_cnt.to_s))
81
+ cmd_cnt = Qt::TableWidgetItem.new(target.cmd_cnt.to_s)
82
82
  cmd_cnt.setTextAlignment(Qt::AlignCenter)
83
83
  @targets_table.setItem(row, 2, cmd_cnt)
84
84
 
85
- tlm_cnt = Qt::TableWidgetItem.new(Qt::Object.tr(target.tlm_cnt.to_s))
85
+ tlm_cnt = Qt::TableWidgetItem.new(target.tlm_cnt.to_s)
86
86
  tlm_cnt.setTextAlignment(Qt::AlignCenter)
87
87
  @targets_table.setItem(row, 3, tlm_cnt)
88
88
 
@@ -140,34 +140,43 @@ module Cosmos
140
140
  protected
141
141
 
142
142
  def handle_packet(packet)
143
- # Identify and update packet
144
- if packet.identified?
145
- begin
146
- # Preidentifed packet - place it into the current value table
147
- identified_packet = System.telemetry.update!(packet.target_name,
148
- packet.packet_name,
149
- packet.buffer)
150
- rescue RuntimeError
151
- # Packet identified but we don't know about it
152
- # Clear packet_name and target_name and try to identify
153
- Logger.warn "Received unknown identified telemetry: #{packet.target_name} #{packet.packet_name}"
154
- packet.target_name = nil
155
- packet.packet_name = nil
143
+ if packet.stored
144
+ # Stored telemetry does not update the current value table
145
+ identified_packet = System.telemetry.identify_and_define_packet(packet, @interface.target_names)
146
+ else
147
+ # Identify and update packet
148
+ if packet.identified?
149
+ begin
150
+ # Preidentifed packet - place it into the current value table
151
+ identified_packet = System.telemetry.update!(packet.target_name,
152
+ packet.packet_name,
153
+ packet.buffer)
154
+ rescue RuntimeError
155
+ # Packet identified but we don't know about it
156
+ # Clear packet_name and target_name and try to identify
157
+ Logger.warn "Received unknown identified telemetry: #{packet.target_name} #{packet.packet_name}"
158
+ packet.target_name = nil
159
+ packet.packet_name = nil
160
+ identified_packet = System.telemetry.identify!(packet.buffer,
161
+ @interface.target_names)
162
+ end
163
+ else
164
+ # Packet needs to be identified
156
165
  identified_packet = System.telemetry.identify!(packet.buffer,
157
166
  @interface.target_names)
158
167
  end
159
- else
160
- # Packet needs to be identified
161
- identified_packet = System.telemetry.identify!(packet.buffer,
162
- @interface.target_names)
163
168
  end
164
169
 
165
170
  if identified_packet
166
171
  identified_packet.received_time = packet.received_time
172
+ identified_packet.stored = packet.stored
173
+ identified_packet.extra = packet.extra
167
174
  packet = identified_packet
168
175
  else
169
176
  unknown_packet = System.telemetry.update!('UNKNOWN', 'UNKNOWN', packet.buffer)
170
177
  unknown_packet.received_time = packet.received_time
178
+ unknown_packet.stored = packet.stored
179
+ unknown_packet.extra = packet.extra
171
180
  packet = unknown_packet
172
181
  data_length = packet.length
173
182
  string = "#{@interface.name} - Unknown #{data_length} byte packet starting: "
@@ -194,9 +203,15 @@ module Cosmos
194
203
  end
195
204
 
196
205
  # Write to packet log writers
197
- @interface.packet_log_writer_pairs.each do |packet_log_writer_pair|
198
- # Write errors are handled by the log writer
199
- packet_log_writer_pair.tlm_log_writer.write(packet)
206
+ if packet.stored and !@interface.stored_packet_log_writer_pairs.empty?
207
+ @interface.stored_packet_log_writer_pairs.each do |packet_log_writer_pair|
208
+ packet_log_writer_pair.tlm_log_writer.write(packet)
209
+ end
210
+ else
211
+ @interface.packet_log_writer_pairs.each do |packet_log_writer_pair|
212
+ # Write errors are handled by the log writer
213
+ packet_log_writer_pair.tlm_log_writer.write(packet)
214
+ end
200
215
  end
201
216
  end
202
217