Class: OpenC3::TelemetryDecomTopic

Inherits:
Topic show all
Defined in:
lib/openc3/topics/telemetry_decom_topic.rb

Class Method Summary collapse

Methods inherited from Topic

clear_topics, get_cnt, method_missing

Class Method Details

.write_packet(packet, id: nil, scope:) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/openc3/topics/telemetry_decom_topic.rb', line 28

def self.write_packet(packet, id: nil, scope:)
  OpenC3.in_span("write_packet") do
    # Need to build a JSON hash of the decommutated data
    # Support "downward typing"
    # everything base name is RAW (including DERIVED)
    # Request for WITH_UNITS, etc will look down until it finds something
    # If nothing - item does not exist - nil
    # __ as separators ITEM1, ITEM1__C, ITEM1__F, ITEM1__U

    json_hash = CvtModel.build_json_from_packet(packet)
    # Write to stream
    msg_hash = {
      :time => packet.packet_time.to_nsec_from_epoch,
      :stored => packet.stored.to_s,
      :target_name => packet.target_name,
      :packet_name => packet.packet_name,
      :received_count => packet.received_count,
      :json_data => JSON.generate(json_hash.as_json(:allow_nan => true)),
    }
    Topic.write_topic("#{scope}__DECOM__{#{packet.target_name}}__#{packet.packet_name}", msg_hash, id)

    unless packet.stored
      # Also update the current value table with the latest decommutated data
      CvtModel.set(json_hash, target_name: packet.target_name, packet_name: packet.packet_name, scope: scope)
    end
  end
end