rsmp 0.9.4 → 0.9.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/config/tlc.yaml +5 -0
- data/lib/rsmp/collect/alarm_collector.rb +19 -4
- data/lib/rsmp/error.rb +3 -0
- data/lib/rsmp/tlc/traffic_controller.rb +23 -7
- data/lib/rsmp/tlc/traffic_controller_site.rb +2 -1
- data/lib/rsmp/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9634c9a0b4e843d2f9d53f85023a51584a4686bea45aeb4cc74dbca7d63a117b
|
4
|
+
data.tar.gz: 598c15d07dc9dd22bda5e4901e2537b902b675af9a88281c2dae9b494d41a52f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 990b18990bc24622bdceb84c9f19a247fb3c6e6cca82fb0a4019e1aa1da7f33503f182ebd4d7789ab890c4d9d51c83062f7f6ff8ab96681bc8cd98cc626418e8
|
7
|
+
data.tar.gz: 20d4a23d38c6cce0ce46fe7def72d90a822627f51800a82d90c06f433e7104d3336a1c300ba6462038c641d08378980ceb794dc0ec54a91d36a17b21d1bf589a
|
data/Gemfile.lock
CHANGED
data/config/tlc.yaml
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module RSMP
|
2
2
|
# Class for waiting for specific command responses
|
3
3
|
class AlarmCollector < Collector
|
4
|
-
def initialize proxy,
|
5
|
-
@
|
4
|
+
def initialize proxy,options={}
|
5
|
+
@query = options[:query] || {}
|
6
6
|
super proxy, options.merge(
|
7
7
|
type: 'Alarm',
|
8
8
|
title:'alarm'
|
@@ -11,8 +11,23 @@ module RSMP
|
|
11
11
|
|
12
12
|
def type_match? message
|
13
13
|
return false if super(message) == false
|
14
|
-
|
15
|
-
|
14
|
+
|
15
|
+
# match fixed attributes
|
16
|
+
%w{aCId aSp ack aS sS cat pri}.each do |key|
|
17
|
+
return false if @query[key] && @query[key] != message.attribute(key)
|
18
|
+
end
|
19
|
+
|
20
|
+
# match rvs items
|
21
|
+
if @query['rvs']
|
22
|
+
query_rvs = @query['rvs']
|
23
|
+
message_rvs = message.attributes['rvs']
|
24
|
+
return false unless message_rvs
|
25
|
+
return false unless query_rvs.all? do |query_item|
|
26
|
+
return false unless message_rvs.any? do |message_item|
|
27
|
+
next message_item['n'] == query_item['n'] && message_item['v'] == query_item['v']
|
28
|
+
end
|
29
|
+
next true
|
30
|
+
end
|
16
31
|
end
|
17
32
|
true
|
18
33
|
end
|
data/lib/rsmp/error.rb
CHANGED
@@ -10,14 +10,15 @@ module RSMP
|
|
10
10
|
:startup_sequence_active, :startup_sequence, :startup_sequence_pos
|
11
11
|
|
12
12
|
def initialize node:, id:, cycle_time: 10, signal_plans:,
|
13
|
-
startup_sequence:, live_output:nil
|
13
|
+
startup_sequence:, live_output:nil, inputs:
|
14
14
|
super node: node, id: id, grouped: true
|
15
15
|
@signal_groups = []
|
16
16
|
@detector_logics = []
|
17
17
|
@plans = signal_plans
|
18
18
|
@cycle_time = cycle_time
|
19
19
|
@num_traffic_situations = 1
|
20
|
-
@num_inputs =
|
20
|
+
@num_inputs = inputs['total']
|
21
|
+
@input_programming = inputs['programming']
|
21
22
|
@startup_sequence = startup_sequence
|
22
23
|
@live_output = live_output
|
23
24
|
reset
|
@@ -268,14 +269,29 @@ module RSMP
|
|
268
269
|
def handle_m0006 arg
|
269
270
|
@node.verify_security_code 2, arg['securityCode']
|
270
271
|
input = arg['input'].to_i
|
272
|
+
unless input>0 && input<=@num_inputs
|
273
|
+
raise MessageRejected.new("Input #{idx} is invalid, must be in the range 1-#{@num_inputs}")
|
274
|
+
end
|
271
275
|
idx = input - 1
|
272
|
-
return unless idx>=0 && input<@num_inputs # TODO should NotAck
|
273
276
|
@input_activations[idx] = bool_string_to_digit arg['status']
|
274
277
|
recompute_input idx
|
275
|
-
|
276
|
-
|
278
|
+
activate = @input_activations[idx] == '1'
|
279
|
+
if activate
|
280
|
+
log "Activating input #{input}", level: :info
|
277
281
|
else
|
278
|
-
log "Deactivating input #{
|
282
|
+
log "Deactivating input #{input}", level: :info
|
283
|
+
end
|
284
|
+
|
285
|
+
if @input_programming
|
286
|
+
actions = @input_programming[input]
|
287
|
+
if actions && actions['raise']
|
288
|
+
alarm_code = actions['raise']
|
289
|
+
if activate
|
290
|
+
log "Activating alarm #{alarm_code}, due to input #{input} programming", level: :info
|
291
|
+
else
|
292
|
+
log "Deactivating alarm #{alarm_code}, due to input #{input} programming", level: :info
|
293
|
+
end
|
294
|
+
end
|
279
295
|
end
|
280
296
|
end
|
281
297
|
|
@@ -428,7 +444,7 @@ module RSMP
|
|
428
444
|
if reverting
|
429
445
|
log "Reverting to functional position #{mode} after timeout", level: :info
|
430
446
|
elsif timeout && timeout > 0
|
431
|
-
log "Switching to functional position #{mode} with timeout #{timeout}min", level: :info
|
447
|
+
log "Switching to functional position #{mode} with timeout #{(timeout/60).round(1)}min", level: :info
|
432
448
|
@previous_functional_position = @function_position
|
433
449
|
now = clock.now
|
434
450
|
@functional_position_timeout = now + timeout
|
@@ -56,7 +56,8 @@ module RSMP
|
|
56
56
|
cycle_time: settings['cycle_time'],
|
57
57
|
startup_sequence: @startup_sequence,
|
58
58
|
signal_plans: @signal_plans,
|
59
|
-
live_output: @site_settings['live_output']
|
59
|
+
live_output: @site_settings['live_output'],
|
60
|
+
inputs: @site_settings['inputs']
|
60
61
|
when 'signal_group'
|
61
62
|
group = SignalGroup.new node: self, id: id
|
62
63
|
@main.add_signal_group group
|
data/lib/rsmp/version.rb
CHANGED
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.9.
|
4
|
+
version: 0.9.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emil Tin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03-
|
11
|
+
date: 2022-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async
|