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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 77314f562ebf956079f50f9cabd90be180010d39d55ecc2b96aceeab7b6da553
4
- data.tar.gz: 2c67e8fcca60ecdefec7edb539f56b7625046f3ef7e8d7a0801640c05f8f0535
3
+ metadata.gz: 3d74ffd79480198d71bde613b754e2ab6195e7e793ed7294f192752df001c528
4
+ data.tar.gz: 417ff3b2692fae04709d688225b12b26fe1e69c189206855545a26b8e993f1c2
5
5
  SHA512:
6
- metadata.gz: 68a66a9531bff5c01cd743ae61a2b159bae2ce0dc6cfd393b5fa9deddda3838d771cfd1025a25ec8231a5d099d5e1976bbbc9418738ee0ba528875e3d8e63327
7
- data.tar.gz: bac2a033fa66291905fa0ba5a66d79a9bb114900ff7d62f4ec696b7ba5271b8454793c1866f9607f0de0638c9950a09822640935541e9663ee01f74295469834
6
+ metadata.gz: 661ccaa898f510a89c039f5c678e2fa796ac8efb152c6c6d0945a89afcfb111013744fa0fd8bd341d7103e47ddc9da94f55e9211b2cda16a2ee94456b72e5e8a
7
+ data.tar.gz: 2d2586aeec689c66fdb19d3548f1cf2f06131fadadab8a919cd894f9ca178d822b6522c7de72d235ecd35b919236ae42cf9b42c22287713bdd2a9dfd109eaf36
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp (0.20.7)
4
+ rsmp (0.21.0)
5
5
  async (~> 2.6.2)
6
6
  async-io (~> 1.35.0)
7
7
  colorize (~> 0.8.1)
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 |item|
55
- do_deferred item
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
 
@@ -149,8 +149,8 @@ module RSMP
149
149
  end
150
150
  end
151
151
 
152
- def do_deferred item
153
- case item
152
+ def do_deferred key, item=nil
153
+ case key
154
154
  when :restart
155
155
  log "Restarting TLC", level: :info
156
156
  restart
data/lib/rsmp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = "0.20.7"
2
+ VERSION = "0.21.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsmp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.7
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Tin