rsmp 0.17.1 → 0.17.3
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/tlc/traffic_controller.rb +61 -11
- data/lib/rsmp/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b0fd1e980fcbbcccc0b302debbd6e128291dce874fc64f71f0ad5227bf387d9
|
4
|
+
data.tar.gz: 72172bb7a553ab5d411222de6fce9bb43f4e3754765bb122642c59b5b59a994b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3835c19f22d51abb95076f53374b4d78fd7a583a7984695a72e4ef7ea35cdf0168b4312cf1361c03cdbb5b8c9e9141a0041a792ab754adc9010b6893dd4d7afe
|
7
|
+
data.tar.gz: db8ac3294d90673d21b2a4e59e937452dddbb9eed3a7102981e115086ffc6c74b3ac8ff50c1267f0e4a68b31f45786bfe840b0ef155e80ccc20e8a0fade029d9
|
data/Gemfile.lock
CHANGED
@@ -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
|
@@ -61,6 +69,7 @@ module RSMP
|
|
61
69
|
@time_int = nil
|
62
70
|
@inputs.reset
|
63
71
|
@signal_priorities = []
|
72
|
+
@dynamic_bands_timeout = 0
|
64
73
|
end
|
65
74
|
|
66
75
|
def dark?
|
@@ -140,7 +149,7 @@ module RSMP
|
|
140
149
|
def check_functional_position_timeout
|
141
150
|
return unless @functional_position_timeout
|
142
151
|
if clock.now >= @functional_position_timeout
|
143
|
-
switch_functional_position @previous_functional_position, reverting: true
|
152
|
+
switch_functional_position @previous_functional_position, reverting: true, source: 'calendar_clock'
|
144
153
|
@functional_position_timeout = nil
|
145
154
|
@previous_functional_position = nil
|
146
155
|
end
|
@@ -231,7 +240,7 @@ module RSMP
|
|
231
240
|
case command_code
|
232
241
|
when 'M0001', 'M0002', 'M0003', 'M0004', 'M0005', 'M0006', 'M0007',
|
233
242
|
'M0012', 'M0013', 'M0014', 'M0015', 'M0016', 'M0017', 'M0018',
|
234
|
-
'M0019', 'M0020', 'M0021', 'M0022',
|
243
|
+
'M0019', 'M0020', 'M0021', 'M0022', 'M0023',
|
235
244
|
'M0103', 'M0104'
|
236
245
|
|
237
246
|
return send("handle_#{command_code.downcase}", arg, options)
|
@@ -242,21 +251,29 @@ module RSMP
|
|
242
251
|
|
243
252
|
def handle_m0001 arg, options={}
|
244
253
|
@node.verify_security_code 2, arg['securityCode']
|
245
|
-
switch_functional_position arg['status'],
|
254
|
+
switch_functional_position arg['status'],
|
255
|
+
timeout: arg['timeout'].to_i*60,
|
256
|
+
source: 'forced'
|
257
|
+
|
246
258
|
end
|
247
259
|
|
248
260
|
def handle_m0002 arg, options={}
|
249
261
|
@node.verify_security_code 2, arg['securityCode']
|
250
262
|
if TrafficControllerSite.from_rsmp_bool(arg['status'])
|
251
|
-
switch_plan arg['timeplan']
|
263
|
+
switch_plan arg['timeplan'], source: 'force'
|
252
264
|
else
|
253
|
-
switch_plan 0
|
265
|
+
switch_plan 0, source: 'startup' # TODO use clock/calender
|
254
266
|
end
|
255
267
|
end
|
256
268
|
|
257
269
|
def handle_m0003 arg, options={}
|
258
270
|
@node.verify_security_code 2, arg['securityCode']
|
259
|
-
|
271
|
+
switch_traffic_situation arg['traficsituation'], source: 'forced'
|
272
|
+
end
|
273
|
+
|
274
|
+
def switch_traffic_situation situation, source:
|
275
|
+
@traffic_situation = situation.to_i
|
276
|
+
@traffic_situation_source = 'forced'
|
260
277
|
end
|
261
278
|
|
262
279
|
def handle_m0004 arg, options={}
|
@@ -313,7 +330,7 @@ module RSMP
|
|
313
330
|
|
314
331
|
def handle_m0007 arg, options={}
|
315
332
|
@node.verify_security_code 2, arg['securityCode']
|
316
|
-
set_fixed_time_control arg['status']
|
333
|
+
set_fixed_time_control arg['status'], source: 'forced'
|
317
334
|
end
|
318
335
|
|
319
336
|
def handle_m0012 arg, options={}
|
@@ -458,6 +475,20 @@ module RSMP
|
|
458
475
|
end
|
459
476
|
end
|
460
477
|
|
478
|
+
def handle_m0023 arg, options={}
|
479
|
+
@node.verify_security_code 2, arg['securityCode']
|
480
|
+
timeout = arg['status'].to_i
|
481
|
+
unless timeout>=0 and timeout <= 65535
|
482
|
+
raise RSMP::MessageRejected.new "Timeout must be in the range 0-65535, got #{timeout}"
|
483
|
+
end
|
484
|
+
if timeout == 0
|
485
|
+
log "Dynamic bands timeout disabled", level: :info
|
486
|
+
else
|
487
|
+
log "Dynamic bands timeout set to #{timeout}min", level: :info
|
488
|
+
end
|
489
|
+
@dynamic_bands_timeout = timeout
|
490
|
+
end
|
491
|
+
|
461
492
|
def handle_m0103 arg, options={}
|
462
493
|
level = {'Level1'=>1,'Level2'=>2}[arg['status']]
|
463
494
|
@node.change_security_code level, arg['oldSecurityCode'], arg['newSecurityCode']
|
@@ -483,11 +514,12 @@ module RSMP
|
|
483
514
|
@inputs[i] = bool_to_digit arg['value']
|
484
515
|
end
|
485
516
|
|
486
|
-
def set_fixed_time_control status
|
517
|
+
def set_fixed_time_control status, source:
|
487
518
|
@fixed_time_control = status
|
519
|
+
@fixed_time_control_source = source
|
488
520
|
end
|
489
521
|
|
490
|
-
def switch_plan plan
|
522
|
+
def switch_plan plan, source:
|
491
523
|
plan_nr = plan.to_i
|
492
524
|
if plan_nr == 0
|
493
525
|
log "Switching to plan selection by time table", level: :info
|
@@ -496,9 +528,10 @@ module RSMP
|
|
496
528
|
log "Switching to plan #{plan_nr}", level: :info
|
497
529
|
end
|
498
530
|
@plan = plan_nr
|
531
|
+
@plan_source = source
|
499
532
|
end
|
500
533
|
|
501
|
-
def switch_functional_position mode, timeout: nil, reverting: false
|
534
|
+
def switch_functional_position mode, timeout: nil, reverting: false, source:
|
502
535
|
unless ['NormalControl','YellowFlash','Dark'].include? mode
|
503
536
|
raise RSMP::MessageRejected.new "Invalid functional position '#{mode}', must be NormalControl, YellowFlash or Dark'"
|
504
537
|
end
|
@@ -516,6 +549,7 @@ module RSMP
|
|
516
549
|
initiate_startup_sequence if @function_position != 'NormalControl'
|
517
550
|
end
|
518
551
|
@function_position = mode
|
552
|
+
@function_position_source = source
|
519
553
|
mode
|
520
554
|
end
|
521
555
|
|
@@ -594,6 +628,8 @@ module RSMP
|
|
594
628
|
TrafficControllerSite.make_status @intersection
|
595
629
|
when 'status'
|
596
630
|
TrafficControllerSite.make_status @function_position != 'Dark'
|
631
|
+
when 'source'
|
632
|
+
TrafficControllerSite.make_status @function_position_source
|
597
633
|
end
|
598
634
|
end
|
599
635
|
|
@@ -603,6 +639,8 @@ module RSMP
|
|
603
639
|
TrafficControllerSite.make_status @intersection
|
604
640
|
when 'status'
|
605
641
|
TrafficControllerSite.make_status @manual_control
|
642
|
+
when 'source'
|
643
|
+
TrafficControllerSite.make_status @manual_control_source
|
606
644
|
end
|
607
645
|
end
|
608
646
|
|
@@ -612,6 +650,8 @@ module RSMP
|
|
612
650
|
TrafficControllerSite.make_status @intersection
|
613
651
|
when 'status'
|
614
652
|
TrafficControllerSite.make_status @fixed_time_control
|
653
|
+
when 'source'
|
654
|
+
TrafficControllerSite.make_status @fixed_time_control_source
|
615
655
|
end
|
616
656
|
end
|
617
657
|
|
@@ -621,6 +661,8 @@ module RSMP
|
|
621
661
|
TrafficControllerSite.make_status @intersection
|
622
662
|
when 'status'
|
623
663
|
TrafficControllerSite.make_status @isolated_control
|
664
|
+
when 'source'
|
665
|
+
TrafficControllerSite.make_status @isolated_control_source
|
624
666
|
end
|
625
667
|
end
|
626
668
|
|
@@ -630,6 +672,8 @@ module RSMP
|
|
630
672
|
TrafficControllerSite.make_status @intersection
|
631
673
|
when 'status'
|
632
674
|
TrafficControllerSite.make_status TrafficControllerSite.to_rmsp_bool( @function_position == 'YellowFlash' )
|
675
|
+
when 'source'
|
676
|
+
TrafficControllerSite.make_status @function_position_source
|
633
677
|
end
|
634
678
|
end
|
635
679
|
|
@@ -639,6 +683,8 @@ module RSMP
|
|
639
683
|
TrafficControllerSite.make_status @intersection
|
640
684
|
when 'status'
|
641
685
|
TrafficControllerSite.make_status @all_red
|
686
|
+
when 'source'
|
687
|
+
TrafficControllerSite.make_status @all_red_source
|
642
688
|
end
|
643
689
|
end
|
644
690
|
|
@@ -655,6 +701,8 @@ module RSMP
|
|
655
701
|
case status_name
|
656
702
|
when 'status'
|
657
703
|
TrafficControllerSite.make_status @plan
|
704
|
+
when 'source'
|
705
|
+
TrafficControllerSite.make_status @plan_source
|
658
706
|
end
|
659
707
|
end
|
660
708
|
|
@@ -662,6 +710,8 @@ module RSMP
|
|
662
710
|
case status_name
|
663
711
|
when 'status'
|
664
712
|
TrafficControllerSite.make_status @traffic_situation
|
713
|
+
when 'source'
|
714
|
+
TrafficControllerSite.make_status @traffic_situation_source
|
665
715
|
end
|
666
716
|
end
|
667
717
|
|
@@ -784,7 +834,7 @@ module RSMP
|
|
784
834
|
when 'status'
|
785
835
|
TrafficControllerSite.make_status 'local'
|
786
836
|
when 'source'
|
787
|
-
TrafficControllerSite.make_status
|
837
|
+
TrafficControllerSite.make_status @intersection_source
|
788
838
|
end
|
789
839
|
end
|
790
840
|
|
data/lib/rsmp/version.rb
CHANGED
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.
|
4
|
+
version: 0.17.3
|
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-
|
11
|
+
date: 2023-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async
|