rsmp 0.9.6 → 0.9.9

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: 41a71b0cd593d1ab4c3f9d0707929106b73d9ec6d8ce36a0f087f3efa73dccc3
4
- data.tar.gz: 553a83ff465de1d07cc7e82531100059686caaf59710f7a452adbf07452f0bb0
3
+ metadata.gz: 71af49e549129bf32f9137a2799c91b43ba19e5e7adb15f777a181919c19dbd0
4
+ data.tar.gz: 15c8f8c96ed3838f0b0b948b5d0e9be895ec965a9f651a529a44b214426242ec
5
5
  SHA512:
6
- metadata.gz: df2053f172e30f6fd57fe6794b99636729a0909ae1e382b12171ec5927fa744b3ec9ba689ebdde117fb8744c2b2182bff1d91c97e8936aeb1dafff53fb663fd5
7
- data.tar.gz: 5eefd3e4c7ebe6c9eeeaf5e9c29f7681b52f69dc42e122afeda559b81698644ceb64b8321e4785df8c485f9fc8c235751ac5676e0a3d0e9289a0857847bedd2d
6
+ metadata.gz: 33206373986495e8c8d9871c83d465d2961db86c2713e0056eb1e5a0fb6f153dc506c05f549bc52f6963f7aeb7e1b7f78f387b479893babe8f0d77cd0efbffe3
7
+ data.tar.gz: 125e125b49bb0a5d99234d8aa4bac4a3107de077fb7adc55a1e70cbf0544c0b163355cfac4a94eeae1e412b8951e4f5fab8d2846187e2d7479c626e0adf81530
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp (0.9.6)
4
+ rsmp (0.9.9)
5
5
  async (~> 1.29.1)
6
6
  async-io (~> 1.32.2)
7
7
  colorize (~> 0.8.1)
data/config/tlc.yaml CHANGED
@@ -31,6 +31,11 @@ signal_plans:
31
31
  A2: 'NNNNBN'
32
32
  B1: 'BBNNNN'
33
33
  B2: 'BNNNNN'
34
+ inputs:
35
+ total: 8
36
+ programming:
37
+ 8:
38
+ raise: A0301
34
39
  startup_sequence: 'efg'
35
40
  intervals:
36
41
  timer: 0.1
data/lib/rsmp/error.rb CHANGED
@@ -64,4 +64,7 @@ module RSMP
64
64
 
65
65
  class RepeatedStatusError < Error
66
66
  end
67
+
68
+ class TimestampError < Error
69
+ end
67
70
  end
@@ -72,7 +72,7 @@ module RSMP
72
72
  else
73
73
  super message
74
74
  end
75
- rescue RSMP::RepeatedAlarmError, RSMP::RepeatedStatusError => e
75
+ rescue RSMP::RepeatedAlarmError, RSMP::RepeatedStatusError, RSMP::TimestampError => e
76
76
  str = "Rejected #{message.type} message,"
77
77
  dont_acknowledge message, str, "#{e}"
78
78
  notify_error e.exception("#{str}#{e.message} #{message.json}")
@@ -10,14 +10,22 @@ 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 = 8
20
+
21
+ if inputs
22
+ @num_inputs = inputs['total'] || 8
23
+ @input_programming = inputs['programming']
24
+ else
25
+ @num_inputs = 8
26
+ @input_programming = nil
27
+ end
28
+
21
29
  @startup_sequence = startup_sequence
22
30
  @live_output = live_output
23
31
  reset
@@ -274,11 +282,24 @@ module RSMP
274
282
  idx = input - 1
275
283
  @input_activations[idx] = bool_string_to_digit arg['status']
276
284
  recompute_input idx
277
- if @input_activations[idx] == '1'
285
+ activate = @input_activations[idx] == '1'
286
+ if activate
278
287
  log "Activating input #{input}", level: :info
279
288
  else
280
289
  log "Deactivating input #{input}", level: :info
281
290
  end
291
+
292
+ if @input_programming
293
+ actions = @input_programming[input]
294
+ if actions && actions['raise']
295
+ alarm_code = actions['raise']
296
+ if activate
297
+ log "Activating alarm #{alarm_code}, due to input #{input} programming", level: :info
298
+ else
299
+ log "Deactivating alarm #{alarm_code}, due to input #{input} programming", level: :info
300
+ end
301
+ end
302
+ end
282
303
  end
283
304
 
284
305
  def handle_m0007 arg
@@ -359,9 +380,8 @@ module RSMP
359
380
  @node.verify_security_code 2, arg['securityCode']
360
381
  input = arg['input'].to_i
361
382
  idx = input - 1
362
- unless idx>=0 && input<@num_inputs # TODO should NotAck
363
- log "Can't force input #{idx+1}, only have #{@num_inputs} inputs", level: :warning
364
- return
383
+ unless input>0 && input<=@num_inputs
384
+ raise MessageRejected.new("Can't force input #{input}, only have #{@num_inputs} inputs")
365
385
  end
366
386
  @input_forced[idx] = bool_string_to_digit arg['status']
367
387
  if @input_forced[idx]
@@ -369,9 +389,9 @@ module RSMP
369
389
  end
370
390
  recompute_input idx
371
391
  if @input_forced[idx]
372
- log "Forcing input #{idx+1} to #{@input_forced_values[idx]}, #{@input_results}", level: :info
392
+ log "Forcing input #{input} to #{@input_forced_values[idx]}", level: :info
373
393
  else
374
- log "Releasing input #{idx+1}", level: :info
394
+ log "Releasing input #{input}", level: :info
375
395
  end
376
396
  end
377
397
 
@@ -430,7 +450,7 @@ module RSMP
430
450
  if reverting
431
451
  log "Reverting to functional position #{mode} after timeout", level: :info
432
452
  elsif timeout && timeout > 0
433
- log "Switching to functional position #{mode} with timeout #{timeout}min", level: :info
453
+ log "Switching to functional position #{mode} with timeout #{(timeout/60).round(1)}min", level: :info
434
454
  @previous_functional_position = @function_position
435
455
  now = clock.now
436
456
  @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
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = "0.9.6"
2
+ VERSION = "0.9.9"
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.9.6
4
+ version: 0.9.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Tin