rsmp 0.20.7 → 0.21.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 +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