Method: Cosmos::CommandDecomTopic.write_packet

Defined in:
lib/cosmos/topics/command_decom_topic.rb

.write_packet(packet, scope:) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/cosmos/topics/command_decom_topic.rb', line 28

def self.write_packet(packet, scope:)
  topic = "#{scope}__DECOMCMD__{#{packet.target_name}}__#{packet.packet_name}"
  msg_hash = { time: packet.received_time.to_nsec_from_epoch,
               target_name: packet.target_name,
               packet_name: packet.packet_name,
               stored: packet.stored,
               received_count: packet.received_count }
  json_hash = {}
  packet.sorted_items.each do |item|
    json_hash[item.name] = packet.read_item(item, :RAW)
    json_hash[item.name + "__C"] = packet.read_item(item, :CONVERTED) if item.write_conversion or item.states
    json_hash[item.name + "__F"] = packet.read_item(item, :FORMATTED) if item.format_string
    json_hash[item.name + "__U"] = packet.read_item(item, :WITH_UNITS) if item.units
  end
  msg_hash['json_data'] = JSON.generate(json_hash.as_json)
  Topic.write_topic(topic, msg_hash)
end