Class: RSMP::ComponentBase
- Inherits:
-
Object
- Object
- RSMP::ComponentBase
- Defined in:
- lib/rsmp/component/component_base.rb
Overview
RSMP component base class.
Direct Known Subclasses
Constant Summary collapse
- AGGREGATED_STATUS_KEYS =
%i[local_control communication_distruption high_priority_alarm medium_priority_alarm low_priority_alarm normal rest not_connected].freeze
Instance Attribute Summary collapse
-
#aggregated_status ⇒ Object
readonly
Returns the value of attribute aggregated_status.
-
#aggregated_status_bools ⇒ Object
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.
-
#ntsoid ⇒ Object
readonly
Returns the value of attribute ntsoid.
-
#statuses ⇒ Object
readonly
Returns the value of attribute statuses.
-
#xnid ⇒ Object
readonly
Returns the value of attribute xnid.
Instance Method Summary collapse
- #aggregated_status_changed(options = {}) ⇒ Object
- #clear_aggregated_status ⇒ Object
- #clear_alarm_timestamps ⇒ Object
- #get_alarm_state(alarm_code) ⇒ Object
-
#initialize(node:, id:, ntsoid: nil, xnid: nil, grouped: false) ⇒ ComponentBase
constructor
A new instance of ComponentBase.
- #inspect ⇒ Object
- #log(str, options) ⇒ Object
- #now ⇒ Object
- #set_aggregated_status(status, options = {}) ⇒ Object
Constructor Details
#initialize(node:, id:, ntsoid: nil, xnid: nil, grouped: false) ⇒ ComponentBase
Returns a new instance of ComponentBase.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/rsmp/component/component_base.rb', line 16 def initialize(node:, id:, ntsoid: nil, xnid: nil, grouped: false) if grouped == false && (ntsoid || xnid) raise RSMP::ConfigurationError, 'ntsoid and xnid are only allowed for grouped objects' end @c_id = id @ntsoid = ntsoid @xnid = xnid @node = node @grouped = grouped clear_aggregated_status @alarms = {} end |
Instance Attribute Details
#aggregated_status ⇒ Object (readonly)
Returns the value of attribute aggregated_status.
4 5 6 |
# File 'lib/rsmp/component/component_base.rb', line 4 def aggregated_status @aggregated_status end |
#aggregated_status_bools ⇒ Object
Returns the value of attribute aggregated_status_bools.
4 5 6 |
# File 'lib/rsmp/component/component_base.rb', line 4 def aggregated_status_bools @aggregated_status_bools end |
#alarms ⇒ Object (readonly)
Returns the value of attribute alarms.
4 5 6 |
# File 'lib/rsmp/component/component_base.rb', line 4 def alarms @alarms end |
#c_id ⇒ Object (readonly)
Returns the value of attribute c_id.
4 5 6 |
# File 'lib/rsmp/component/component_base.rb', line 4 def c_id @c_id end |
#grouped ⇒ Object (readonly)
Returns the value of attribute grouped.
4 5 6 |
# File 'lib/rsmp/component/component_base.rb', line 4 def grouped @grouped end |
#node ⇒ Object (readonly)
Returns the value of attribute node.
4 5 6 |
# File 'lib/rsmp/component/component_base.rb', line 4 def node @node end |
#ntsoid ⇒ Object (readonly)
Returns the value of attribute ntsoid.
4 5 6 |
# File 'lib/rsmp/component/component_base.rb', line 4 def ntsoid @ntsoid end |
#statuses ⇒ Object (readonly)
Returns the value of attribute statuses.
4 5 6 |
# File 'lib/rsmp/component/component_base.rb', line 4 def statuses @statuses end |
#xnid ⇒ Object (readonly)
Returns the value of attribute xnid.
4 5 6 |
# File 'lib/rsmp/component/component_base.rb', line 4 def xnid @xnid end |
Instance Method Details
#aggregated_status_changed(options = {}) ⇒ Object
86 87 88 |
# File 'lib/rsmp/component/component_base.rb', line 86 def aggregated_status_changed( = {}) @node.aggregated_status_changed self, end |
#clear_aggregated_status ⇒ Object
47 48 49 50 51 |
# File 'lib/rsmp/component/component_base.rb', line 47 def clear_aggregated_status @aggregated_status = [] @aggregated_status_bools = Array.new(8, false) @aggregated_status_bools[5] = true end |
#clear_alarm_timestamps ⇒ Object
39 40 41 |
# File 'lib/rsmp/component/component_base.rb', line 39 def @alarms.each_value(&:clear_timestamp) end |
#get_alarm_state(alarm_code) ⇒ Object
43 44 45 |
# File 'lib/rsmp/component/component_base.rb', line 43 def get_alarm_state(alarm_code) @alarms[alarm_code] ||= RSMP::AlarmState.new component: self, code: alarm_code end |
#inspect ⇒ Object
31 32 33 |
# File 'lib/rsmp/component/component_base.rb', line 31 def inspect "#<#{self.class.name}:#{object_id}:#{object_id} c_id:#{@c_id}>" end |
#log(str, options) ⇒ Object
53 54 55 56 |
# File 'lib/rsmp/component/component_base.rb', line 53 def log(str, ) default = { component: c_id } @node.log str, default.merge() end |
#now ⇒ Object
35 36 37 |
# File 'lib/rsmp/component/component_base.rb', line 35 def now node.now end |
#set_aggregated_status(status, options = {}) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/rsmp/component/component_base.rb', line 58 def set_aggregated_status(status, = {}) status = [status] if status.is_a? Symbol raise InvalidArgument unless status.is_a? Array input = status & AGGREGATED_STATUS_KEYS return unless input != @aggregated_status AGGREGATED_STATUS_KEYS.each_with_index do |key, index| @aggregated_status_bools[index] = status.include?(key) end aggregated_status_changed end |