rsmp 0.32.8 → 0.33.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/config/tlc.yaml +5 -4
- data/lib/rsmp/tlc/signal_group.rb +2 -1
- data/lib/rsmp/tlc/signal_plan.rb +8 -2
- data/lib/rsmp/tlc/traffic_controller.rb +13 -4
- data/lib/rsmp/tlc/traffic_controller_site.rb +2 -2
- data/lib/rsmp/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '064718260ddb212e6b01bc248c0da4f1d21c1a4a129702f8fca91c44d5f9ed25'
|
4
|
+
data.tar.gz: 6f3d151dc6ae03c5b4b018414226b6aac563f2467878149dd2840aae0135b6d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9cfc58828cbefe79b7d9fb1d3225f03c26a60429d1dd71c9743a08fde84415b98f8e225ac78acbe2c7b94984c1aea77977102b35dd8b1f10521bb9cb0bc0483
|
7
|
+
data.tar.gz: aa89cc36fcb8c2b94df8d567f84dacca307b3dc2163b06ffb4d0f1d0f277804e85c638ea1272a614e1cd16fb0fb24ac95df922bf823a13b410cebc0ba7f18f62
|
data/Gemfile.lock
CHANGED
data/config/tlc.yaml
CHANGED
@@ -7,7 +7,6 @@ sxl_version: '1.2.1'
|
|
7
7
|
components:
|
8
8
|
main:
|
9
9
|
TC:
|
10
|
-
cycle_time: 6
|
11
10
|
ntsOId: KK+AG9998=001TC000
|
12
11
|
signal_group:
|
13
12
|
A1:
|
@@ -19,15 +18,17 @@ components:
|
|
19
18
|
DL2:
|
20
19
|
signal_plans:
|
21
20
|
1:
|
22
|
-
|
23
|
-
1: 0
|
24
|
-
2: 5
|
21
|
+
cycle_time: 6
|
25
22
|
states:
|
26
23
|
A1: '111NBB'
|
27
24
|
A2: '11NBBB'
|
28
25
|
B1: 'BBB11N'
|
29
26
|
B2: 'BBB1NB'
|
27
|
+
dynamic_bands:
|
28
|
+
1: 0
|
29
|
+
2: 5
|
30
30
|
2:
|
31
|
+
cycle_time: 6
|
31
32
|
states:
|
32
33
|
A1: 'NNNNBB'
|
33
34
|
A2: 'NNNNBN'
|
@@ -30,7 +30,8 @@ module RSMP
|
|
30
30
|
states = plan.states[c_id]
|
31
31
|
return default unless states
|
32
32
|
|
33
|
-
|
33
|
+
counter = [cycle_counter, states.length-1].min
|
34
|
+
state = states[counter]
|
34
35
|
return default unless state =~ /[a-hA-G0-9N-P]/ # valid signal group states
|
35
36
|
state
|
36
37
|
end
|
data/lib/rsmp/tlc/signal_plan.rb
CHANGED
@@ -4,11 +4,12 @@ module RSMP
|
|
4
4
|
# A signal plan is a description of how all signal groups should change
|
5
5
|
# state over time.
|
6
6
|
class SignalPlan
|
7
|
-
attr_reader :nr, :states, :dynamic_bands
|
8
|
-
def initialize nr:, states:, dynamic_bands:
|
7
|
+
attr_reader :nr, :states, :dynamic_bands, :cycle_time
|
8
|
+
def initialize nr:, cycle_time:, states:, dynamic_bands:
|
9
9
|
@nr = nr
|
10
10
|
@states = states
|
11
11
|
@dynamic_bands = dynamic_bands || {}
|
12
|
+
@cycle_time = cycle_time
|
12
13
|
end
|
13
14
|
|
14
15
|
def dynamic_bands_string
|
@@ -24,6 +25,11 @@ module RSMP
|
|
24
25
|
def get_band band
|
25
26
|
@dynamic_bands[ band.to_i ]
|
26
27
|
end
|
28
|
+
|
29
|
+
def set_cycle_time cycle_time
|
30
|
+
raise ArgumentError if cycle_time < 0
|
31
|
+
@cycle_time = cycle_time
|
32
|
+
end
|
27
33
|
end
|
28
34
|
end
|
29
35
|
end
|
@@ -9,13 +9,12 @@ module RSMP
|
|
9
9
|
:functional_position,
|
10
10
|
:startup_sequence_active, :startup_sequence, :startup_sequence_pos
|
11
11
|
|
12
|
-
def initialize node:, id:, ntsOId: nil, xNId: nil,
|
12
|
+
def initialize node:, id:, ntsOId: nil, xNId: nil, signal_plans:,
|
13
13
|
startup_sequence:, live_output:nil, inputs:{}
|
14
14
|
super node: node, id: id, ntsOId: ntsOId, xNId: xNId, grouped: true
|
15
15
|
@signal_groups = []
|
16
16
|
@detector_logics = []
|
17
17
|
@plans = signal_plans
|
18
|
-
@cycle_time = cycle_time || 10
|
19
18
|
@num_traffic_situations = 1
|
20
19
|
|
21
20
|
if inputs
|
@@ -142,7 +141,7 @@ module RSMP
|
|
142
141
|
end
|
143
142
|
|
144
143
|
def move_cycle_counter
|
145
|
-
counter = Time.now.to_i %
|
144
|
+
counter = Time.now.to_i % current_plan.cycle_time
|
146
145
|
changed = counter != @cycle_counter
|
147
146
|
@cycle_counter = counter
|
148
147
|
changed
|
@@ -450,6 +449,13 @@ module RSMP
|
|
450
449
|
|
451
450
|
def handle_m0018 arg, options={}
|
452
451
|
@node.verify_security_code 2, arg['securityCode']
|
452
|
+
nr = arg['plan'].to_i
|
453
|
+
cycle_time = arg['status'].to_i
|
454
|
+
plan = @plans[nr]
|
455
|
+
raise RSMP::MessageRejected.new "Plan '#{nr}' not found" unless plan
|
456
|
+
raise RSMP::MessageRejected.new "Cycle time must be greater or equal to zero" if cycle_time < 0
|
457
|
+
log "Set plan #{nr} cycle time to #{cycle_time}", level: :info
|
458
|
+
plan.set_cycle_time cycle_time
|
453
459
|
end
|
454
460
|
|
455
461
|
def string_to_bool bool_str
|
@@ -889,8 +895,11 @@ module RSMP
|
|
889
895
|
def handle_s0028 status_code, status_name=nil, options={}
|
890
896
|
case status_name
|
891
897
|
when 'status'
|
892
|
-
|
898
|
+
times = @plans.map {|nr,plan| "#{"%02d" % plan.nr}-#{"%02d" % plan.cycle_time}"}.join(",")
|
899
|
+
TrafficControllerSite.make_status times
|
893
900
|
end
|
901
|
+
rescue StandardError => e
|
902
|
+
puts e
|
894
903
|
end
|
895
904
|
|
896
905
|
def handle_s0029 status_code, status_name=nil, options={}
|
@@ -41,10 +41,11 @@ module RSMP
|
|
41
41
|
signal_plans.each_pair do |id,settings|
|
42
42
|
states = nil
|
43
43
|
bands = nil
|
44
|
+
cycle_time = settings['cycle_time']
|
44
45
|
states = settings['states'] if settings
|
45
46
|
dynamic_bands = settings['dynamic_bands'] if settings
|
46
47
|
|
47
|
-
@signal_plans[id.to_i] = SignalPlan.new(nr: id.to_i, states:states,dynamic_bands:dynamic_bands)
|
48
|
+
@signal_plans[id.to_i] = SignalPlan.new(nr: id.to_i, cycle_time: cycle_time, states: states, dynamic_bands: dynamic_bands)
|
48
49
|
end
|
49
50
|
end
|
50
51
|
|
@@ -59,7 +60,6 @@ module RSMP
|
|
59
60
|
id: id,
|
60
61
|
ntsOId: settings['ntsOId'],
|
61
62
|
xNId: settings['xNId'],
|
62
|
-
cycle_time: settings['cycle_time'],
|
63
63
|
startup_sequence: @startup_sequence,
|
64
64
|
signal_plans: @signal_plans,
|
65
65
|
live_output: @site_settings['live_output'],
|
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.
|
4
|
+
version: 0.33.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emil Tin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logger
|
@@ -293,7 +293,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
293
293
|
- !ruby/object:Gem::Version
|
294
294
|
version: '0'
|
295
295
|
requirements: []
|
296
|
-
rubygems_version: 3.5.
|
296
|
+
rubygems_version: 3.5.22
|
297
297
|
signing_key:
|
298
298
|
specification_version: 4
|
299
299
|
summary: RoadSide Message Protocol (RSMP) library.
|