rsmp 0.17.3 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b0fd1e980fcbbcccc0b302debbd6e128291dce874fc64f71f0ad5227bf387d9
4
- data.tar.gz: 72172bb7a553ab5d411222de6fce9bb43f4e3754765bb122642c59b5b59a994b
3
+ metadata.gz: 617db976cf78abbb1d4bbae2e31ba58863d21f9ef9df8f912cf84eb093a6de7d
4
+ data.tar.gz: 056310e524601423385b17156276ff1dac127594106db24832b8368134a8c843
5
5
  SHA512:
6
- metadata.gz: 3835c19f22d51abb95076f53374b4d78fd7a583a7984695a72e4ef7ea35cdf0168b4312cf1361c03cdbb5b8c9e9141a0041a792ab754adc9010b6893dd4d7afe
7
- data.tar.gz: db8ac3294d90673d21b2a4e59e937452dddbb9eed3a7102981e115086ffc6c74b3ac8ff50c1267f0e4a68b31f45786bfe840b0ef155e80ccc20e8a0fade029d9
6
+ metadata.gz: c73d30a792e3b00c99f695ac4a686aa8b67b627b184a0abcc5c14d6f2c2495755490b581de792774e58fb524d82e30bb51a32eb6aa570be2484bba26f682437a
7
+ data.tar.gz: 350ae202e67dd8f51ce478321af030d578b9134bdb659510740e9ab48a9aaa549a528e1c223717af8f21044e9d5aa08fe59a8bc8f08871b2059fa72bc4bf8738
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp (0.17.3)
4
+ rsmp (0.18.0)
5
5
  async (~> 1.30.3)
6
6
  async-io (~> 1.33.0)
7
7
  colorize (~> 0.8.1)
@@ -79,7 +79,7 @@ GEM
79
79
  multi_test (0.1.2)
80
80
  nio4r (2.5.9)
81
81
  rake (13.0.6)
82
- regexp_parser (2.7.0)
82
+ regexp_parser (2.8.0)
83
83
  rsmp_schema (0.4.0)
84
84
  json_schemer (~> 0.2.21)
85
85
  thor (~> 1.2.1)
@@ -30,6 +30,13 @@ module RSMP
30
30
  'rvs' => rvs
31
31
  }
32
32
  end
33
+
34
+ def acknowledge
35
+ change, @acknowledged = !@acknowledged, true
36
+ update_timestamp if change
37
+ change
38
+ end
39
+
33
40
  def suspend
34
41
  change, @suspended = !@suspended, true
35
42
  update_timestamp if change
@@ -13,6 +13,16 @@ module RSMP
13
13
  raise UnknownStatus.new "Status #{status_code}/#{status_name} not implemented by #{self.class}"
14
14
  end
15
15
 
16
+ def acknowledge_alarm alarm_code
17
+ alarm = get_alarm_state alarm_code
18
+ if alarm.acknowledge
19
+ log "Acknowledging alarm #{alarm_code}", level: :info
20
+ @node.alarm_acknowledged alarm
21
+ else
22
+ log "Alarm #{alarm_code} already acknowledged", level: :info
23
+ end
24
+ end
25
+
16
26
  def suspend_alarm alarm_code
17
27
  alarm = get_alarm_state alarm_code
18
28
  if alarm.suspend
data/lib/rsmp/site.rb CHANGED
@@ -96,6 +96,11 @@ module RSMP
96
96
  end
97
97
  end
98
98
 
99
+ def alarm_acknowledged alarm_state
100
+ alarm = AlarmIssue.new( alarm_state.to_hash.merge('aSp' => 'Issue') )
101
+ send_alarm alarm
102
+ end
103
+
99
104
  def alarm_suspended_or_resumed alarm_state
100
105
  alarm = AlarmIssue.new( alarm_state.to_hash.merge('aSp' => 'Suspend') )
101
106
  send_alarm alarm
@@ -70,10 +70,13 @@ module RSMP
70
70
  # Async::IO::Endpoint#connect renames the current task. run in a subtask to avoid this see issue #22
71
71
  @task.async do |task|
72
72
  task.annotate 'socket task'
73
- # this timeout is a workaround for #connect hanging on windows if the other side is not present yet
74
- task.with_timeout 1.1 do
73
+ # this timeout is a workaround for connect hanging on windows if the other side is not present yet
74
+ timeout = @site_settings.dig('timeouts','connect') || 1.1
75
+ task.with_timeout timeout do
75
76
  @socket = @endpoint.connect
76
77
  end
78
+ delay = @site_settings.dig('intervals','after_connect')
79
+ task.sleep delay if delay
77
80
  end.wait
78
81
 
79
82
  @stream = Async::IO::Stream.new(@socket)
@@ -207,6 +210,16 @@ module RSMP
207
210
  end
208
211
  end
209
212
 
213
+ # handle incoming alarm acknowledge
214
+ def handle_alarm_acknowledge message
215
+ component_id = message.attributes["cId"]
216
+ component = @site.find_component component_id
217
+ alarm_code = message.attribute("aCId")
218
+ log "Received #{message.type} #{alarm_code} acknowledgement", message: message, level: :log
219
+ acknowledge message
220
+ component.acknowledge_alarm alarm_code
221
+ end
222
+
210
223
  # handle incoming alarm suspend
211
224
  def handle_alarm_suspend message
212
225
  component_id = message.attributes["cId"]
data/lib/rsmp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = "0.17.3"
2
+ VERSION = "0.18.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsmp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.3
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Tin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-14 00:00:00.000000000 Z
11
+ date: 2023-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async