rsmp 0.9.4 → 0.9.7
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 +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
|