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
@@ -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