Class: Cosmos::TelemetryDecomTopic

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

Class Method Summary collapse

Methods inherited from Topic

clear_topics, initialize_streams, read_topics

Class Method Details

.topics(scope:) ⇒ Object



24
25
26
# File 'lib/cosmos/topics/telemetry_decom_topic.rb', line 24

def self.topics(scope:)
  super(scope, 'DECOM')
end

.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
# File 'lib/cosmos/topics/telemetry_decom_topic.rb', line 28

def self.write_packet(packet, id: nil, scope:)
  # 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 seperators 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,
    :target_name => packet.target_name,
    :packet_name => packet.packet_name,
    :received_count => packet.received_count,
    :json_data => JSON.generate(json_hash.as_json),
  }
  Store.write_topic("#{scope}__DECOM__{#{packet.target_name}}__#{packet.packet_name}", msg_hash, id)
  # 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