rsmp 0.17.1 → 0.17.2

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: dace397e058229e79387d0b4b4f2a1f7289f2b6c0cbd2816836de542d39c764d
4
- data.tar.gz: 2b04dd58a9567875dcc231555fe2a1a03b63b0c02473b0afefdf534225e1cfc6
3
+ metadata.gz: 1b1e7b64edaac39cb76f67bc47625a0af95688d70a50b84ec8692cc645bc2bfd
4
+ data.tar.gz: 25ef625f7effbd9e50112f9495cb5511f17f06465e75325c1f324cf4810db19c
5
5
  SHA512:
6
- metadata.gz: f290c20af069c92cfc1e4b6aabe2b73cc1f9c1e89556dc6be5dab000beafa670aebaf9b28dc103b65e456b25ef20313701fdce8f6ba22637f8f415e15e0a5c9f
7
- data.tar.gz: 34362a7e9ab6f52d0f26fc1fb267d22115d281ae7dfcd2d651186febe8677ef1a87161e661b769120dc91057bb406e75cecb4bf882e35e057e2fbbb6264818ff
6
+ metadata.gz: fe2bea264b7d19cf768897e657d784fb150cfb8df759835547eefabf28aa12afce331156e1c58911adaf6dc2efe60c28767d685d96061e52f142350c84f0f3d4
7
+ data.tar.gz: c1fb46cd25c0d6ad5312575f9e186580e74bfe8f8bdaf3711fde77f0e7921648781da7e38ea763287c6699661f515d38f80c43c501ad26011ed3c4b475f92d2b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp (0.17.1)
4
+ rsmp (0.17.2)
5
5
  async (~> 1.30.3)
6
6
  async-io (~> 1.33.0)
7
7
  colorize (~> 0.8.1)
@@ -33,6 +33,7 @@ module RSMP
33
33
 
34
34
  def reset_modes
35
35
  @function_position = 'NormalControl'
36
+ @function_position_source = 'startup'
36
37
  @previous_functional_position = nil
37
38
  @functional_position_timeout = nil
38
39
 
@@ -40,9 +41,13 @@ module RSMP
40
41
  @is_starting = false
41
42
  @control_mode = 'control'
42
43
  @manual_control = false
44
+ @manual_control_source = 'startup'
43
45
  @fixed_time_control = false
46
+ @fixed_time_control_source = 'startup'
44
47
  @isolated_control = false
48
+ @isolated_control_source = 'startup'
45
49
  @all_red = false
50
+ @all_red_source = 'startup'
46
51
  @police_key = 0
47
52
  end
48
53
 
@@ -50,10 +55,13 @@ module RSMP
50
55
  reset_modes
51
56
  @cycle_counter = 0
52
57
  @plan = 1
58
+ @plan_source = 'startup'
53
59
  @intersection = 0
60
+ @intersection_source = 'startup'
54
61
  @emergency_route = false
55
62
  @emergency_route_number = 0
56
63
  @traffic_situation = 0
64
+ @traffic_situation_source = 'startup'
57
65
  @day_time_table = {}
58
66
  @startup_sequence_active = false
59
67
  @startup_sequence_initiated_at = nil
@@ -140,7 +148,7 @@ module RSMP
140
148
  def check_functional_position_timeout
141
149
  return unless @functional_position_timeout
142
150
  if clock.now >= @functional_position_timeout
143
- switch_functional_position @previous_functional_position, reverting: true
151
+ switch_functional_position @previous_functional_position, reverting: true, source: 'calendar_clock'
144
152
  @functional_position_timeout = nil
145
153
  @previous_functional_position = nil
146
154
  end
@@ -242,21 +250,29 @@ module RSMP
242
250
 
243
251
  def handle_m0001 arg, options={}
244
252
  @node.verify_security_code 2, arg['securityCode']
245
- switch_functional_position arg['status'], timeout: arg['timeout'].to_i*60
253
+ switch_functional_position arg['status'],
254
+ timeout: arg['timeout'].to_i*60,
255
+ source: 'forced'
256
+
246
257
  end
247
258
 
248
259
  def handle_m0002 arg, options={}
249
260
  @node.verify_security_code 2, arg['securityCode']
250
261
  if TrafficControllerSite.from_rsmp_bool(arg['status'])
251
- switch_plan arg['timeplan']
262
+ switch_plan arg['timeplan'], source: 'force'
252
263
  else
253
- switch_plan 0 # TODO use clock/calender
264
+ switch_plan 0, source: 'startup' # TODO use clock/calender
254
265
  end
255
266
  end
256
267
 
257
268
  def handle_m0003 arg, options={}
258
269
  @node.verify_security_code 2, arg['securityCode']
259
- @traffic_situation = arg['traficsituation'].to_i
270
+ switch_traffic_situation arg['traficsituation'], source: 'forced'
271
+ end
272
+
273
+ def switch_traffic_situation situation, source:
274
+ @traffic_situation = situation.to_i
275
+ @traffic_situation_source = 'forced'
260
276
  end
261
277
 
262
278
  def handle_m0004 arg, options={}
@@ -313,7 +329,7 @@ module RSMP
313
329
 
314
330
  def handle_m0007 arg, options={}
315
331
  @node.verify_security_code 2, arg['securityCode']
316
- set_fixed_time_control arg['status']
332
+ set_fixed_time_control arg['status'], source: 'forced'
317
333
  end
318
334
 
319
335
  def handle_m0012 arg, options={}
@@ -483,11 +499,12 @@ module RSMP
483
499
  @inputs[i] = bool_to_digit arg['value']
484
500
  end
485
501
 
486
- def set_fixed_time_control status
502
+ def set_fixed_time_control status, source:
487
503
  @fixed_time_control = status
504
+ @fixed_time_control_source = source
488
505
  end
489
506
 
490
- def switch_plan plan
507
+ def switch_plan plan, source:
491
508
  plan_nr = plan.to_i
492
509
  if plan_nr == 0
493
510
  log "Switching to plan selection by time table", level: :info
@@ -496,9 +513,10 @@ module RSMP
496
513
  log "Switching to plan #{plan_nr}", level: :info
497
514
  end
498
515
  @plan = plan_nr
516
+ @plan_source = source
499
517
  end
500
518
 
501
- def switch_functional_position mode, timeout: nil, reverting: false
519
+ def switch_functional_position mode, timeout: nil, reverting: false, source:
502
520
  unless ['NormalControl','YellowFlash','Dark'].include? mode
503
521
  raise RSMP::MessageRejected.new "Invalid functional position '#{mode}', must be NormalControl, YellowFlash or Dark'"
504
522
  end
@@ -516,6 +534,7 @@ module RSMP
516
534
  initiate_startup_sequence if @function_position != 'NormalControl'
517
535
  end
518
536
  @function_position = mode
537
+ @function_position_source = source
519
538
  mode
520
539
  end
521
540
 
@@ -594,6 +613,8 @@ module RSMP
594
613
  TrafficControllerSite.make_status @intersection
595
614
  when 'status'
596
615
  TrafficControllerSite.make_status @function_position != 'Dark'
616
+ when 'source'
617
+ TrafficControllerSite.make_status @function_position_source
597
618
  end
598
619
  end
599
620
 
@@ -603,6 +624,8 @@ module RSMP
603
624
  TrafficControllerSite.make_status @intersection
604
625
  when 'status'
605
626
  TrafficControllerSite.make_status @manual_control
627
+ when 'source'
628
+ TrafficControllerSite.make_status @manual_control_source
606
629
  end
607
630
  end
608
631
 
@@ -612,6 +635,8 @@ module RSMP
612
635
  TrafficControllerSite.make_status @intersection
613
636
  when 'status'
614
637
  TrafficControllerSite.make_status @fixed_time_control
638
+ when 'source'
639
+ TrafficControllerSite.make_status @fixed_time_control_source
615
640
  end
616
641
  end
617
642
 
@@ -621,6 +646,8 @@ module RSMP
621
646
  TrafficControllerSite.make_status @intersection
622
647
  when 'status'
623
648
  TrafficControllerSite.make_status @isolated_control
649
+ when 'source'
650
+ TrafficControllerSite.make_status @isolated_control_source
624
651
  end
625
652
  end
626
653
 
@@ -630,6 +657,8 @@ module RSMP
630
657
  TrafficControllerSite.make_status @intersection
631
658
  when 'status'
632
659
  TrafficControllerSite.make_status TrafficControllerSite.to_rmsp_bool( @function_position == 'YellowFlash' )
660
+ when 'source'
661
+ TrafficControllerSite.make_status @function_position_source
633
662
  end
634
663
  end
635
664
 
@@ -639,6 +668,8 @@ module RSMP
639
668
  TrafficControllerSite.make_status @intersection
640
669
  when 'status'
641
670
  TrafficControllerSite.make_status @all_red
671
+ when 'source'
672
+ TrafficControllerSite.make_status @all_red_source
642
673
  end
643
674
  end
644
675
 
@@ -655,6 +686,8 @@ module RSMP
655
686
  case status_name
656
687
  when 'status'
657
688
  TrafficControllerSite.make_status @plan
689
+ when 'source'
690
+ TrafficControllerSite.make_status @plan_source
658
691
  end
659
692
  end
660
693
 
@@ -662,6 +695,8 @@ module RSMP
662
695
  case status_name
663
696
  when 'status'
664
697
  TrafficControllerSite.make_status @traffic_situation
698
+ when 'source'
699
+ TrafficControllerSite.make_status @traffic_situation_source
665
700
  end
666
701
  end
667
702
 
@@ -784,7 +819,7 @@ module RSMP
784
819
  when 'status'
785
820
  TrafficControllerSite.make_status 'local'
786
821
  when 'source'
787
- TrafficControllerSite.make_status 'startup'
822
+ TrafficControllerSite.make_status @intersection_source
788
823
  end
789
824
  end
790
825
 
data/lib/rsmp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = "0.17.1"
2
+ VERSION = "0.17.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsmp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.1
4
+ version: 0.17.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Tin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-13 00:00:00.000000000 Z
11
+ date: 2023-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async