Method: OpenC3::TargetModel#update_store

Defined in:
lib/openc3/models/target_model.rb

#update_store(system) ⇒ Object



667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
# File 'lib/openc3/models/target_model.rb', line 667

def update_store(system)
  target = system.targets[@name]

  # Add in the information from the target and update
  @requires = target.requires
  @ignored_parameters = target.ignored_parameters
  @ignored_items = target.ignored_items
  @cmd_tlm_files = target.cmd_tlm_files
  @cmd_unique_id_mode = target.cmd_unique_id_mode
  @tlm_unique_id_mode = target.tlm_unique_id_mode
  @id = target.id
  @limits_groups = system.limits.groups.keys
  update()

  # Store Packet Definitions
  system.telemetry.all.each do |target_name, packets|
    Store.del("#{@scope}__openc3tlm__#{target_name}")
    packets.each do |packet_name, packet|
      Logger.info "Configuring tlm packet: #{target_name} #{packet_name}"
      begin
        Store.hset("#{@scope}__openc3tlm__#{target_name}", packet_name, JSON.generate(packet.as_json(:allow_nan => true)))
      rescue JSON::GeneratorError => err
        Logger.error("Invalid text present in #{target_name} #{packet_name} tlm packet")
        raise err
      end
      json_hash = Hash.new
      packet.sorted_items.each do |item|
        json_hash[item.name] = nil
      end
      CvtModel.set(json_hash, target_name: packet.target_name, packet_name: packet.packet_name, scope: @scope)
    end
  end
  system.commands.all.each do |target_name, packets|
    Store.del("#{@scope}__openc3cmd__#{target_name}")
    packets.each do |packet_name, packet|
      Logger.info "Configuring cmd packet: #{target_name} #{packet_name}"
      begin
        Store.hset("#{@scope}__openc3cmd__#{target_name}", packet_name, JSON.generate(packet.as_json(:allow_nan => true)))
      rescue JSON::GeneratorError => err
        Logger.error("Invalid text present in #{target_name} #{packet_name} cmd packet")
        raise err
      end
    end
  end
  # Store Limits Groups
  system.limits.groups.each do |group, items|
    begin
      Store.hset("#{@scope}__limits_groups", group, JSON.generate(items))
    rescue JSON::GeneratorError => err
      Logger.error("Invalid text present in #{group} limits group")
      raise err
    end
  end
  # Merge in Limits Sets
  sets = Store.hgetall("#{@scope}__limits_sets")
  sets ||= {}
  system.limits.sets.each do |set|
    sets[set.to_s] = "false" unless sets.key?(set.to_s)
  end
  Store.hmset("#{@scope}__limits_sets", *sets)

  return system
end