Class: OpenC3::Limits
Overview
Limits uses PacketConfig to parse the command and telemetry configuration files. It provides the API layer which other classes use to access information about and manipulate limits. This includes getting, setting and checking individual limit items as well as manipulating limits groups.
Constant Summary collapse
- LATEST_PACKET_NAME =
'LATEST'.freeze
Instance Attribute Summary collapse
Instance Method Summary collapse
-
#disable(target_name, packet_name, item_name) ⇒ Object
Disables limit checking for the specified item.
-
#enable(target_name, packet_name, item_name) ⇒ Object
Enables limit checking for the specified item.
-
#enabled?(target_name, packet_name, item_name) ⇒ Boolean
Checks whether the limits are enabled for the specified item.
-
#get(target_name, packet_name, item_name, limits_set = nil) ⇒ Array<limits_set, persistence, enabled, red_low, yellow_low, red_high, yellow_high, green_low (optional), green_high (optional)] Limits information
Get the limits for a telemetry item.
-
#groups ⇒ Hash(String, Array)
The defined limits groups.
-
#initialize(config) ⇒ Limits
constructor
A new instance of Limits.
-
#set(target_name, packet_name, item_name, red_low, yellow_low, yellow_high, red_high, green_low = nil, green_high = nil, limits_set = :CUSTOM, persistence = nil, enabled = true) ⇒ Array<limits_set, persistence, enabled, red_low, yellow_low, red_high, yellow_high, green_low (optional), green_high (optional)] Limits information
Set the limits for a telemetry item.
-
#sets ⇒ Array<Symbol>
The defined limits sets for all items in the packet.
-
#warnings ⇒ Array<String>
Array of strings listing all the warnings that were created while parsing the configuration file.
Constructor Details
#initialize(config) ⇒ Limits
Returns a new instance of Limits.
39 40 41 |
# File 'lib/openc3/packets/limits.rb', line 39 def initialize(config) @config = config end |
Instance Attribute Details
Instance Method Details
#disable(target_name, packet_name, item_name) ⇒ Object
Disables limit checking for the specified item
77 78 79 |
# File 'lib/openc3/packets/limits.rb', line 77 def disable(target_name, packet_name, item_name) _get_packet(target_name, packet_name).disable_limits(item_name) end |
#enable(target_name, packet_name, item_name) ⇒ Object
Enables limit checking for the specified item
70 71 72 |
# File 'lib/openc3/packets/limits.rb', line 70 def enable(target_name, packet_name, item_name) _get_packet(target_name, packet_name).enable_limits(item_name) end |
#enabled?(target_name, packet_name, item_name) ⇒ Boolean
Checks whether the limits are enabled for the specified item
63 64 65 |
# File 'lib/openc3/packets/limits.rb', line 63 def enabled?(target_name, packet_name, item_name) _get_packet(target_name, packet_name).get_item(item_name).limits.enabled end |
#get(target_name, packet_name, item_name, limits_set = nil) ⇒ Array<limits_set, persistence, enabled, red_low, yellow_low, red_high, yellow_high, green_low (optional), green_high (optional)] Limits information
Get the limits for a telemetry item
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/openc3/packets/limits.rb', line 88 def get(target_name, packet_name, item_name, limits_set = nil) limits = _get_packet(target_name, packet_name).get_item(item_name).limits if limits.values if limits_set limits_set = limits_set.to_s.upcase.intern else limits_set = System.limits_set end limits_for_set = limits.values[limits_set] if limits_for_set return [limits_set, limits.persistence_setting, limits.enabled, limits_for_set[0], limits_for_set[1], limits_for_set[2], limits_for_set[3], limits_for_set[4], limits_for_set[5]] else return [nil, nil, nil, nil, nil, nil, nil, nil, nil] end else return [nil, nil, nil, nil, nil, nil, nil, nil, nil] end end |
#groups ⇒ Hash(String, Array)
Returns The defined limits groups.
54 55 56 |
# File 'lib/openc3/packets/limits.rb', line 54 def groups return @config.limits_groups end |
#set(target_name, packet_name, item_name, red_low, yellow_low, yellow_high, red_high, green_low = nil, green_high = nil, limits_set = :CUSTOM, persistence = nil, enabled = true) ⇒ Array<limits_set, persistence, enabled, red_low, yellow_low, red_high, yellow_high, green_low (optional), green_high (optional)] Limits information
Set the limits for a telemetry item
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/openc3/packets/limits.rb', line 122 def set(target_name, packet_name, item_name, red_low, yellow_low, yellow_high, red_high, green_low = nil, green_high = nil, limits_set = :CUSTOM, persistence = nil, enabled = true) packet = _get_packet(target_name, packet_name) item = packet.get_item(item_name) limits = item.limits if limits_set limits_set = limits_set.to_s.upcase.intern else limits_set = System.limits_set end if !limits.values if limits_set == :DEFAULT limits.values = { :DEFAULT => [] } else raise "DEFAULT limits must be defined for #{target_name} #{packet_name} #{item_name} before setting limits set #{limits_set}" end end limits_for_set = limits.values[limits_set] unless limits_for_set limits.values[limits_set] = [] limits_for_set = limits.values[limits_set] end limits_for_set[0] = red_low.to_f limits_for_set[1] = yellow_low.to_f limits_for_set[2] = yellow_high.to_f limits_for_set[3] = red_high.to_f limits_for_set.delete_at(5) if limits_for_set[5] limits_for_set.delete_at(4) if limits_for_set[4] if green_low && green_high limits_for_set[4] = green_low.to_f limits_for_set[5] = green_high.to_f end limits.enabled = enabled if not enabled.nil? limits.persistence_setting = Integer(persistence) if persistence packet.update_limits_items_cache(item) @config.limits_sets << limits_set @config.limits_sets.uniq! return [limits_set, limits.persistence_setting, limits.enabled, limits_for_set[0], limits_for_set[1], limits_for_set[2], limits_for_set[3], limits_for_set[4], limits_for_set[5]] end |