rsmp 0.20.7 → 0.21.0
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/lib/rsmp/node.rb +5 -5
- data/lib/rsmp/tlc/traffic_controller.rb +40 -0
- data/lib/rsmp/tlc/traffic_controller_site.rb +2 -2
- data/lib/rsmp/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d74ffd79480198d71bde613b754e2ab6195e7e793ed7294f192752df001c528
|
4
|
+
data.tar.gz: 417ff3b2692fae04709d688225b12b26fe1e69c189206855545a26b8e993f1c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 661ccaa898f510a89c039f5c678e2fa796ac8efb152c6c6d0945a89afcfb111013744fa0fd8bd341d7103e47ddc9da94f55e9211b2cda16a2ee94456b72e5e8a
|
7
|
+
data.tar.gz: 2d2586aeec689c66fdb19d3548f1cf2f06131fadadab8a919cd894f9ca178d822b6522c7de72d235ecd35b919236ae42cf9b42c22287713bdd2a9dfd109eaf36
|
data/Gemfile.lock
CHANGED
data/lib/rsmp/node.rb
CHANGED
@@ -44,19 +44,19 @@ module RSMP
|
|
44
44
|
@error_queue.enqueue e
|
45
45
|
end
|
46
46
|
|
47
|
-
def defer item
|
48
|
-
@deferred << item
|
47
|
+
def defer key, item=nil
|
48
|
+
@deferred << [key, item]
|
49
49
|
end
|
50
50
|
|
51
51
|
def process_deferred
|
52
52
|
cloned = @deferred.clone # clone in case do_deferred restarts the current task
|
53
53
|
@deferred.clear
|
54
|
-
cloned.each do |
|
55
|
-
do_deferred
|
54
|
+
cloned.each do |pair|
|
55
|
+
do_deferred pair.first, pair.last
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
def do_deferred item
|
59
|
+
def do_deferred key,item=nil
|
60
60
|
end
|
61
61
|
|
62
62
|
def clear_deferred
|
@@ -344,6 +344,45 @@ module RSMP
|
|
344
344
|
|
345
345
|
def handle_m0013 arg, options={}
|
346
346
|
@node.verify_security_code 2, arg['securityCode']
|
347
|
+
set, clear = [], []
|
348
|
+
arg['status'].split(';').map do |part|
|
349
|
+
offset, set_bits, clear_bits = part.split(',').map { |i| i.to_i }
|
350
|
+
set_bits.to_s(2).reverse.each_char.with_index do |bit,i|
|
351
|
+
set << i + offset if bit == '1'
|
352
|
+
end
|
353
|
+
clear_bits.to_s(2).reverse.each_char.with_index do |bit,i|
|
354
|
+
clear << i + offset if bit == '1'
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
358
|
+
set = set.uniq.sort
|
359
|
+
clear = clear.uniq.sort
|
360
|
+
|
361
|
+
# if input is both activated and deacticvated, there is no need to acticate first
|
362
|
+
set -= (set & clear)
|
363
|
+
|
364
|
+
[set,clear].each do |inputs|
|
365
|
+
inputs.each do |input|
|
366
|
+
if input<1
|
367
|
+
raise MessageRejected.new("Cannot acticate inputs #{set} and deactive inputs #{clear}: input #{input} is invalid (must be 1 or higher)"
|
368
|
+
) if input<1
|
369
|
+
end
|
370
|
+
if input>@inputs.size
|
371
|
+
raise MessageRejected.new("Cannot acticate inputs #{set} and deactive inputs #{clear}: input #{input} is invalid (only #{@inputs.size} inputs present)")
|
372
|
+
end
|
373
|
+
end
|
374
|
+
end
|
375
|
+
|
376
|
+
log "Activating inputs #{set} and deactivating inputs #{clear}", level: :info
|
377
|
+
|
378
|
+
set.each do |input|
|
379
|
+
change = @inputs.set input, true
|
380
|
+
input_logic input, change if change != nil
|
381
|
+
end
|
382
|
+
clear.each do |input|
|
383
|
+
change = @inputs.set input, false
|
384
|
+
input_logic input, change if change != nil
|
385
|
+
end
|
347
386
|
end
|
348
387
|
|
349
388
|
def find_plan plan_nr
|
@@ -432,6 +471,7 @@ module RSMP
|
|
432
471
|
log "Releasing input #{input}", level: :info
|
433
472
|
end
|
434
473
|
change = @inputs.set_forcing input, force, forced_value
|
474
|
+
|
435
475
|
input_logic input, change if change != nil
|
436
476
|
end
|
437
477
|
|
data/lib/rsmp/version.rb
CHANGED