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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 948bcd04c071a6d84f6b156e86a9ac04c6cec4c46e2b03447c2538c0a01d5bf1
4
- data.tar.gz: 73fd677331b124bd37ed022b1cb0000cce4c6438c7cbd21dee811979926d54cc
3
+ metadata.gz: '064718260ddb212e6b01bc248c0da4f1d21c1a4a129702f8fca91c44d5f9ed25'
4
+ data.tar.gz: 6f3d151dc6ae03c5b4b018414226b6aac563f2467878149dd2840aae0135b6d1
5
5
  SHA512:
6
- metadata.gz: 423858aed9200ffbc547bc019e681ca8c9312c5761184a84fa07098709a2fcd2bf1ef4835a1865eee3ee6305d96a3f7e53fee3a9052f52e43886b3b2bba900cf
7
- data.tar.gz: 2aba496cef018ee97fbcc759413337c93635bb8b06756100710a357eb254838714f27a7833f8f39d0a82f8b287fc30a31dc18263f13d97e1fb5420205cd40572
6
+ metadata.gz: c9cfc58828cbefe79b7d9fb1d3225f03c26a60429d1dd71c9743a08fde84415b98f8e225ac78acbe2c7b94984c1aea77977102b35dd8b1f10521bb9cb0bc0483
7
+ data.tar.gz: aa89cc36fcb8c2b94df8d567f84dacca307b3dc2163b06ffb4d0f1d0f277804e85c638ea1272a614e1cd16fb0fb24ac95df922bf823a13b410cebc0ba7f18f62
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp (0.32.8)
4
+ rsmp (0.33.0)
5
5
  async (~> 2.16)
6
6
  async-io (~> 1.43)
7
7
  colorize (~> 1.1)
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
- dynamic_bands:
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
- state = states[cycle_counter]
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
@@ -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, cycle_time: 10, signal_plans:,
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 % @cycle_time
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
- TrafficControllerSite.make_status '00-00'
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
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = "0.32.8"
2
+ VERSION = "0.33.0"
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.32.8
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-09-23 00:00:00.000000000 Z
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.16
296
+ rubygems_version: 3.5.22
297
297
  signing_key:
298
298
  specification_version: 4
299
299
  summary: RoadSide Message Protocol (RSMP) library.