Class: RSMP::ComponentBase
- Inherits:
-
Object
- Object
- RSMP::ComponentBase
- Includes:
- Inspect
- Defined in:
- lib/rsmp/component_base.rb
Overview
RSMP component base class.
Direct Known Subclasses
Constant Summary collapse
- AGGREGATED_STATUS_KEYS =
[ :local_control, :communication_distruption, :high_priority_alarm, :medium_priority_alarm, :low_priority_alarm, :normal, :rest, :not_connected ]
Instance Attribute Summary collapse
-
#aggregated_status ⇒ Object
readonly
Returns the value of attribute aggregated_status.
-
#aggregated_status_bools ⇒ Object
readonly
Returns the value of attribute aggregated_status_bools.
-
#alarms ⇒ Object
readonly
Returns the value of attribute alarms.
-
#c_id ⇒ Object
readonly
Returns the value of attribute c_id.
-
#grouped ⇒ Object
readonly
Returns the value of attribute grouped.
-
#node ⇒ Object
readonly
Returns the value of attribute node.
-
#statuses ⇒ Object
readonly
Returns the value of attribute statuses.
Instance Method Summary collapse
- #aggregated_status_changed(options = {}) ⇒ Object
- #clear_aggregated_status ⇒ Object
-
#initialize(node:, id:, grouped: false) ⇒ ComponentBase
constructor
A new instance of ComponentBase.
- #log(str, options) ⇒ Object
- #set_aggregated_status(status, options = {}) ⇒ Object
- #set_aggregated_status_bools(status) ⇒ Object
Methods included from Inspect
Constructor Details
#initialize(node:, id:, grouped: false) ⇒ ComponentBase
Returns a new instance of ComponentBase.
19 20 21 22 23 24 25 |
# File 'lib/rsmp/component_base.rb', line 19 def initialize node:, id:, grouped: false @c_id = id @node = node @grouped = grouped @alarms = {} clear_aggregated_status end |
Instance Attribute Details
#aggregated_status ⇒ Object (readonly)
Returns the value of attribute aggregated_status.
8 9 10 |
# File 'lib/rsmp/component_base.rb', line 8 def aggregated_status @aggregated_status end |
#aggregated_status_bools ⇒ Object (readonly)
Returns the value of attribute aggregated_status_bools.
8 9 10 |
# File 'lib/rsmp/component_base.rb', line 8 def aggregated_status_bools @aggregated_status_bools end |
#alarms ⇒ Object (readonly)
Returns the value of attribute alarms.
8 9 10 |
# File 'lib/rsmp/component_base.rb', line 8 def alarms @alarms end |
#c_id ⇒ Object (readonly)
Returns the value of attribute c_id.
8 9 10 |
# File 'lib/rsmp/component_base.rb', line 8 def c_id @c_id end |
#grouped ⇒ Object (readonly)
Returns the value of attribute grouped.
8 9 10 |
# File 'lib/rsmp/component_base.rb', line 8 def grouped @grouped end |
#node ⇒ Object (readonly)
Returns the value of attribute node.
8 9 10 |
# File 'lib/rsmp/component_base.rb', line 8 def node @node end |
#statuses ⇒ Object (readonly)
Returns the value of attribute statuses.
8 9 10 |
# File 'lib/rsmp/component_base.rb', line 8 def statuses @statuses end |
Instance Method Details
#aggregated_status_changed(options = {}) ⇒ Object
64 65 66 |
# File 'lib/rsmp/component_base.rb', line 64 def aggregated_status_changed ={} @node.aggregated_status_changed self, end |
#clear_aggregated_status ⇒ Object
27 28 29 30 31 |
# File 'lib/rsmp/component_base.rb', line 27 def clear_aggregated_status @aggregated_status = [] @aggregated_status_bools = Array.new(8,false) @aggregated_status_bools[5] = true end |
#log(str, options) ⇒ Object
33 34 35 36 |
# File 'lib/rsmp/component_base.rb', line 33 def log str, default = { component: c_id} @node.log str, default.merge() end |
#set_aggregated_status(status, options = {}) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/rsmp/component_base.rb', line 38 def set_aggregated_status status, ={} status = [status] if status.is_a? Symbol raise InvalidArgument unless status.is_a? Array input = status & AGGREGATED_STATUS_KEYS if input != @aggregated_status AGGREGATED_STATUS_KEYS.each_with_index do |key,index| @aggregated_status_bools[index] = status.include?(key) end aggregated_status_changed end end |
#set_aggregated_status_bools(status) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/rsmp/component_base.rb', line 50 def set_aggregated_status_bools status raise InvalidArgument unless status.is_a? Array raise InvalidArgument unless status.size == 8 if status != @aggregated_status_bools @aggregated_status = [] AGGREGATED_STATUS_KEYS.each_with_index do |key,index| on = status[index] == true @aggregated_status_bools[index] = on @aggregated_status << key if on end aggregated_status_changed end end |