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 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