rsmp 0.15.0 → 0.16.0
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 +4 -4
- data/config/tlc.yaml +1 -0
- data/lib/rsmp/collect/ack_collector.rb +16 -0
- data/lib/rsmp/components.rb +2 -2
- data/lib/rsmp/proxy.rb +18 -8
- data/lib/rsmp/site.rb +3 -2
- data/lib/rsmp/site_proxy.rb +3 -7
- data/lib/rsmp/supervisor.rb +9 -3
- data/lib/rsmp/supervisor_proxy.rb +8 -3
- data/lib/rsmp/tlc/signal_priority.rb +28 -0
- data/lib/rsmp/tlc/traffic_controller.rb +79 -1
- data/lib/rsmp/version.rb +1 -1
- data/lib/rsmp.rb +2 -0
- data/rsmp.gemspec +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15537491c95e5c0fc89514111d9947409bd4222b566d69df7376f545b96629a0
|
4
|
+
data.tar.gz: 70399d65fd90a7f0db1bdc75003a3cac47d57052190b55cc6a9a39d119451c6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a44a9c93dbfb105de6620a9c42e97ad90b5a32f284f0fc38e25e47c4dff177dc60d3b5fad83812cba585fe4c1b7504afee2fa658ab24f7159dbcef99f897b8f4
|
7
|
+
data.tar.gz: cc77592ac84a15959438786227a602d6f81c82e4b401c48310f50440f53d72270b77f44a439b3ba2fb08ce22087375a486db8ddb71e8639b73360e3a005021e8
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rsmp (0.
|
4
|
+
rsmp (0.16.0)
|
5
5
|
async (~> 1.30.3)
|
6
6
|
async-io (~> 1.33.0)
|
7
7
|
colorize (~> 0.8.1)
|
8
|
-
rsmp_schema (~> 0.
|
8
|
+
rsmp_schema (~> 0.3.1)
|
9
9
|
thor (~> 1.2.1)
|
10
10
|
|
11
11
|
GEM
|
@@ -80,7 +80,7 @@ GEM
|
|
80
80
|
nio4r (2.5.8)
|
81
81
|
rake (13.0.6)
|
82
82
|
regexp_parser (2.5.0)
|
83
|
-
rsmp_schema (0.
|
83
|
+
rsmp_schema (0.3.1)
|
84
84
|
json_schemer (~> 0.2.21)
|
85
85
|
thor (~> 1.2.1)
|
86
86
|
rspec (3.10.0)
|
@@ -100,7 +100,7 @@ GEM
|
|
100
100
|
ffi (~> 1.1)
|
101
101
|
thor (1.2.1)
|
102
102
|
timecop (0.9.5)
|
103
|
-
timers (4.3.
|
103
|
+
timers (4.3.4)
|
104
104
|
uri_template (0.7.0)
|
105
105
|
|
106
106
|
PLATFORMS
|
data/config/tlc.yaml
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
module RSMP
|
2
|
+
# Class for waiting for a message acknowledgement
|
3
|
+
class AckCollector < Collector
|
4
|
+
def initialize proxy, options={}
|
5
|
+
raise ArgumentError.new("m_id must be provided") unless options[:m_id]
|
6
|
+
required = { type: 'MessageAck', num: 1, title: 'message acknowledgement' }
|
7
|
+
super proxy, options.merge(required)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Check if we the MessageAck related to initiating request, identified by @m_id.
|
11
|
+
def type_match? message
|
12
|
+
return false if super(message) == false
|
13
|
+
return message.attribute('oMId') == @options[:m_id]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/rsmp/components.rb
CHANGED
@@ -17,8 +17,8 @@ module RSMP
|
|
17
17
|
check_main_component settings
|
18
18
|
settings.each_pair do |type,components_by_type|
|
19
19
|
if components_by_type
|
20
|
-
components_by_type.each_pair do |id,
|
21
|
-
@components[id] = build_component(id:id, type:type, settings:
|
20
|
+
components_by_type.each_pair do |id,component_settings|
|
21
|
+
@components[id] = build_component(id:id, type:type, settings:component_settings)
|
22
22
|
@main = @components[id] if type=='main'
|
23
23
|
end
|
24
24
|
end
|
data/lib/rsmp/proxy.rb
CHANGED
@@ -13,7 +13,7 @@ module RSMP
|
|
13
13
|
include Inspect
|
14
14
|
include Task
|
15
15
|
|
16
|
-
attr_reader :state, :archive, :connection_info, :sxl, :collector, :ip, :port, :node
|
16
|
+
attr_reader :state, :archive, :connection_info, :sxl, :collector, :ip, :port, :node, :rsmp_version
|
17
17
|
|
18
18
|
def initialize options
|
19
19
|
@node = options[:node]
|
@@ -28,6 +28,7 @@ module RSMP
|
|
28
28
|
def disconnect
|
29
29
|
end
|
30
30
|
|
31
|
+
|
31
32
|
# wait for the reader task to complete,
|
32
33
|
# which is not expected to happen before the connection is closed
|
33
34
|
def wait_for_reader
|
@@ -314,12 +315,9 @@ module RSMP
|
|
314
315
|
end
|
315
316
|
|
316
317
|
def get_schemas
|
317
|
-
# normally we have an sxl, but during connection, it hasn't been established yet
|
318
|
-
# at these times we only validate against the core schema
|
319
|
-
# TODO
|
320
|
-
# what schema should we use to validate the initial Version and MessageAck messages?
|
321
318
|
schemas = { core: RSMP::Schema.latest_core_version } # use latest core
|
322
|
-
schemas[
|
319
|
+
schemas[:core] = rsmp_versions.last if rsmp_versions
|
320
|
+
schemas[sxl] = RSMP::Schema.sanitize_version(sxl_version.to_s) if sxl && sxl_version
|
323
321
|
schemas
|
324
322
|
end
|
325
323
|
|
@@ -460,7 +458,7 @@ module RSMP
|
|
460
458
|
def rsmp_versions
|
461
459
|
return [RSMP::Schema.latest_core_version] if @site_settings["rsmp_versions"] == 'latest'
|
462
460
|
return RSMP::Schema.core_versions if @site_settings["rsmp_versions"] == 'all'
|
463
|
-
@site_settings["rsmp_versions"]
|
461
|
+
[@site_settings["rsmp_versions"]].flatten
|
464
462
|
end
|
465
463
|
|
466
464
|
def check_rsmp_version message
|
@@ -560,8 +558,11 @@ module RSMP
|
|
560
558
|
message.original = original
|
561
559
|
log_acknowledgement_for_original message, original
|
562
560
|
|
563
|
-
|
561
|
+
case original.type
|
562
|
+
when "Version"
|
564
563
|
version_acknowledged
|
564
|
+
when "StatusSubscribe"
|
565
|
+
status_subscribe_acknowledged original
|
565
566
|
end
|
566
567
|
|
567
568
|
check_outgoing_acknowledged original
|
@@ -653,5 +654,14 @@ module RSMP
|
|
653
654
|
Gem::Requirement.new(requirement).satisfied_by?(Gem::Version.new(version))
|
654
655
|
end
|
655
656
|
|
657
|
+
def status_subscribe_acknowledged original
|
658
|
+
component = find_component original.attribute('cId')
|
659
|
+
return unless component
|
660
|
+
short = Message.shorten_m_id original.m_id
|
661
|
+
subscribe_list = original.attributes['sS']
|
662
|
+
log "StatusSubscribe #{short} acknowledged, allowing repeated status values for #{subscribe_list}", level: :info
|
663
|
+
component.allow_repeat_updates subscribe_list
|
664
|
+
end
|
665
|
+
|
656
666
|
end
|
657
667
|
end
|
data/lib/rsmp/site.rb
CHANGED
@@ -59,7 +59,7 @@ module RSMP
|
|
59
59
|
|
60
60
|
def check_sxl_version
|
61
61
|
sxl = @site_settings['sxl']
|
62
|
-
version = @site_settings['sxl_version']
|
62
|
+
version = @site_settings['sxl_version'].to_s
|
63
63
|
RSMP::Schema::find_schema! sxl, version, lenient: true
|
64
64
|
end
|
65
65
|
|
@@ -145,7 +145,8 @@ module RSMP
|
|
145
145
|
nil
|
146
146
|
end
|
147
147
|
|
148
|
-
def build_component id:, type:, settings:
|
148
|
+
def build_component id:, type:, settings:
|
149
|
+
settings ||= {}
|
149
150
|
if type == 'main'
|
150
151
|
Component.new id:id, node: self, grouped: true,
|
151
152
|
ntsOId: settings['ntsOId'], xNId: settings['xNId']
|
data/lib/rsmp/site_proxy.rb
CHANGED
@@ -48,7 +48,7 @@ module RSMP
|
|
48
48
|
def handshake_complete
|
49
49
|
super
|
50
50
|
sanitized_sxl_version = RSMP::Schema.sanitize_version(@site_sxl_version)
|
51
|
-
log "Connection to site #{@site_id} established, using core #{@rsmp_version}, #{@sxl} #{sanitized_sxl_version}", level: :
|
51
|
+
log "Connection to site #{@site_id} established, using core #{@rsmp_version}, #{@sxl} #{sanitized_sxl_version}", level: :info
|
52
52
|
start_watchdog
|
53
53
|
end
|
54
54
|
|
@@ -228,7 +228,6 @@ module RSMP
|
|
228
228
|
end
|
229
229
|
|
230
230
|
component = find_component component_id
|
231
|
-
component.allow_repeat_updates subscribe_list
|
232
231
|
|
233
232
|
message = RSMP::StatusSubscribe.new({
|
234
233
|
"cId" => component_id,
|
@@ -236,6 +235,7 @@ module RSMP
|
|
236
235
|
'mId' => m_id
|
237
236
|
})
|
238
237
|
set_nts_message_attributes message
|
238
|
+
|
239
239
|
send_and_optionally_collect message, options do |collect_options|
|
240
240
|
StatusCollector.new(
|
241
241
|
self,
|
@@ -308,11 +308,10 @@ module RSMP
|
|
308
308
|
end
|
309
309
|
|
310
310
|
def check_sxl_version message
|
311
|
-
|
312
311
|
# check that we have a schema for specified sxl type and version
|
313
312
|
# note that the type comes from the site config, while the version
|
314
313
|
# comes from the Version message send by the site
|
315
|
-
type = '
|
314
|
+
type = @site_settings['sxl']
|
316
315
|
version = message.attribute 'SXL'
|
317
316
|
RSMP::Schema::find_schema! type, version, lenient: true
|
318
317
|
|
@@ -332,7 +331,6 @@ module RSMP
|
|
332
331
|
def process_version message
|
333
332
|
return extraneous_version message if @version_determined
|
334
333
|
check_site_ids message
|
335
|
-
check_rsmp_version message
|
336
334
|
check_sxl_version message
|
337
335
|
version_accepted message
|
338
336
|
end
|
@@ -341,8 +339,6 @@ module RSMP
|
|
341
339
|
# RSMP support multiple site ids. we don't support this yet. instead we use the first id only
|
342
340
|
site_id = message.attribute("siteId").map { |item| item["sId"] }.first
|
343
341
|
@supervisor.check_site_id site_id
|
344
|
-
@site_id = site_id
|
345
|
-
setup_site_settings
|
346
342
|
site_ids_changed
|
347
343
|
end
|
348
344
|
|
data/lib/rsmp/supervisor.rb
CHANGED
@@ -138,8 +138,7 @@ module RSMP
|
|
138
138
|
def peek_version_message protocol
|
139
139
|
json = protocol.peek_line
|
140
140
|
attributes = Message.parse_attributes json
|
141
|
-
|
142
|
-
message.attribute('siteId').first['sId']
|
141
|
+
Message.build attributes, json
|
143
142
|
end
|
144
143
|
|
145
144
|
# accept an incoming connecting by creating and starting a proxy
|
@@ -169,7 +168,9 @@ module RSMP
|
|
169
168
|
archive: @archive
|
170
169
|
}
|
171
170
|
|
172
|
-
|
171
|
+
version_message = peek_version_message protocol
|
172
|
+
id = version_message.attribute('siteId').first['sId']
|
173
|
+
|
173
174
|
proxy = find_site id
|
174
175
|
if proxy
|
175
176
|
if proxy.connected?
|
@@ -182,6 +183,11 @@ module RSMP
|
|
182
183
|
proxy = build_proxy settings.merge(site_id:id) # keep the id learned by peeking above
|
183
184
|
@proxies.push proxy
|
184
185
|
end
|
186
|
+
|
187
|
+
proxy.setup_site_settings
|
188
|
+
proxy.check_rsmp_version version_message
|
189
|
+
log "Validating using core version #{proxy.rsmp_version}", level: :debug
|
190
|
+
|
185
191
|
proxy.start # will run until the site disconnects
|
186
192
|
proxy.wait
|
187
193
|
ensure
|
@@ -270,13 +270,18 @@ module RSMP
|
|
270
270
|
send_message response
|
271
271
|
end
|
272
272
|
|
273
|
+
def rsmpify_value v
|
274
|
+
return v if v.is_a? Array
|
275
|
+
v.to_s
|
276
|
+
end
|
277
|
+
|
273
278
|
def process_status_request message, options={}
|
274
279
|
component_id = message.attributes["cId"]
|
275
280
|
component = @site.find_component component_id
|
276
281
|
log "Received #{message.type}", message: message, level: :log
|
277
282
|
sS = message.attributes["sS"].map do |arg|
|
278
283
|
value, quality = component.get_status arg['sCI'], arg['n'], {sxl_version: sxl_version}
|
279
|
-
{ "s" => value
|
284
|
+
{ "s" => rsmpify_value(value), "q" => quality.to_s }.merge arg
|
280
285
|
end
|
281
286
|
response = StatusResponse.new({
|
282
287
|
"cId"=>component_id,
|
@@ -375,7 +380,7 @@ module RSMP
|
|
375
380
|
# send as soon as the data changes
|
376
381
|
if component_object
|
377
382
|
current, age = *(component_object.get_status code, name)
|
378
|
-
current = current
|
383
|
+
current = rsmpify_value(current)
|
379
384
|
end
|
380
385
|
last_sent = fetch_last_sent_status component, code, name
|
381
386
|
if current != last_sent
|
@@ -413,7 +418,7 @@ module RSMP
|
|
413
418
|
end
|
414
419
|
sS << { "sCI" => code,
|
415
420
|
"n" => status_name,
|
416
|
-
"s" => value
|
421
|
+
"s" => rsmpify_value(value),
|
417
422
|
"q" => quality }
|
418
423
|
end
|
419
424
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class RSMP::TLC::SignalPriority
|
2
|
+
attr_reader :state, :node, :id, :level, :eta, :vehicleType, :age, :updated
|
3
|
+
|
4
|
+
def initialize node:, id:, level:, eta:, vehicleType:
|
5
|
+
@node = node
|
6
|
+
@id = id
|
7
|
+
@level = level
|
8
|
+
@eta = eta
|
9
|
+
@vehicleType = vehicleType
|
10
|
+
set_state 'received'
|
11
|
+
end
|
12
|
+
|
13
|
+
def set_state state
|
14
|
+
@state = state
|
15
|
+
@updated = node.clock.now
|
16
|
+
node.signal_priority_changed self, @state
|
17
|
+
end
|
18
|
+
|
19
|
+
def timer
|
20
|
+
@age = @node.clock.now - @updated
|
21
|
+
case @state
|
22
|
+
when 'received'
|
23
|
+
set_state 'activated' if @age >= 0.5
|
24
|
+
when 'activated'
|
25
|
+
set_state 'completed' if @age >= 0.5
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -60,6 +60,7 @@ module RSMP
|
|
60
60
|
@startup_sequence_pos = 0
|
61
61
|
@time_int = nil
|
62
62
|
@inputs.reset
|
63
|
+
@signal_priorities = []
|
63
64
|
end
|
64
65
|
|
65
66
|
def dark?
|
@@ -105,8 +106,30 @@ module RSMP
|
|
105
106
|
move_startup_sequence if @startup_sequence_active
|
106
107
|
|
107
108
|
@signal_groups.each { |group| group.timer }
|
109
|
+
@signal_priorities.each {|priority| priority.timer }
|
108
110
|
|
109
111
|
output_states
|
112
|
+
prune_priorities
|
113
|
+
end
|
114
|
+
|
115
|
+
def signal_priority_changed priority, state
|
116
|
+
#puts "priority #{priority.id} -> #{state}"
|
117
|
+
end
|
118
|
+
|
119
|
+
def prune_priorities
|
120
|
+
# TODO spec states that update must be send one time when it reaches the state 'completed',
|
121
|
+
# and then be removed. so we need to know when it has been sent
|
122
|
+
@signal_priorities.delete_if {|priority| priority.state=='completed' && priority.age >= 1.5 }
|
123
|
+
end
|
124
|
+
|
125
|
+
def get_priority_list
|
126
|
+
@signal_priorities.map do |priority|
|
127
|
+
{
|
128
|
+
"r" => priority.id,
|
129
|
+
"t" => RSMP::Clock.to_s(priority.updated),
|
130
|
+
"s" => priority.state
|
131
|
+
}
|
132
|
+
end
|
110
133
|
end
|
111
134
|
|
112
135
|
def move_cycle_counter
|
@@ -398,6 +421,43 @@ module RSMP
|
|
398
421
|
@node.verify_security_code 2, arg['securityCode']
|
399
422
|
end
|
400
423
|
|
424
|
+
def handle_m0022 arg, options={}
|
425
|
+
id = arg['requestId']
|
426
|
+
type = arg['type']
|
427
|
+
priority = @signal_priorities.find { |priority| priority.id == id }
|
428
|
+
case type
|
429
|
+
when 'new'
|
430
|
+
if priority
|
431
|
+
raise MessageRejected.new("Priority Request #{id} already exists")
|
432
|
+
else
|
433
|
+
#ref = arg.slice('signalGroupId','inputId','connectionId','approachId','laneInId','laneOutId')
|
434
|
+
if arg['signalGroupId']
|
435
|
+
signal_group = node.find_component arg['signalGroupId']
|
436
|
+
end
|
437
|
+
|
438
|
+
level = arg['level']
|
439
|
+
eta = arg['eta']
|
440
|
+
vehicleType = arg['vehicleType']
|
441
|
+
@signal_priorities << SignalPriority.new(node:self, id:id, level:level, eta:eta, vehicleType:vehicleType)
|
442
|
+
log "Priority request for signal group #{signal_group.c_id} received with id #{id}", level: :info
|
443
|
+
end
|
444
|
+
when 'update'
|
445
|
+
if priority
|
446
|
+
log "Priority Request #{id} updated", level: :info
|
447
|
+
else
|
448
|
+
raise MessageRejected.new("Cannot update priority request #{id}, not found")
|
449
|
+
end
|
450
|
+
when 'cancel'
|
451
|
+
if priority
|
452
|
+
@signal_priorities.delete priority
|
453
|
+
else
|
454
|
+
raise MessageRejected.new("Cannot cancel priority request #{id}, not found")
|
455
|
+
end
|
456
|
+
else
|
457
|
+
raise MessageRejected.new("Unknown type #{type}")
|
458
|
+
end
|
459
|
+
end
|
460
|
+
|
401
461
|
def handle_m0103 arg, options={}
|
402
462
|
level = {'Level1'=>1,'Level2'=>2}[arg['status']]
|
403
463
|
@node.change_security_code level, arg['oldSecurityCode'], arg['newSecurityCode']
|
@@ -465,7 +525,7 @@ module RSMP
|
|
465
525
|
'S0008', 'S0009', 'S0010', 'S0011', 'S0012', 'S0013', 'S0014',
|
466
526
|
'S0015', 'S0016', 'S0017', 'S0018', 'S0019', 'S0020', 'S0021',
|
467
527
|
'S0022', 'S0023', 'S0024', 'S0026', 'S0027', 'S0028',
|
468
|
-
'S0029', 'S0030', 'S0031',
|
528
|
+
'S0029', 'S0030', 'S0031', 'S0032', 'S0033',
|
469
529
|
'S0091', 'S0092', 'S0095', 'S0096', 'S0097',
|
470
530
|
'S0205', 'S0206', 'S0207', 'S0208'
|
471
531
|
return send("handle_#{code.downcase}", code, name, options)
|
@@ -717,6 +777,24 @@ module RSMP
|
|
717
777
|
end
|
718
778
|
end
|
719
779
|
|
780
|
+
def handle_s0032 status_code, status_name=nil, options={}
|
781
|
+
case status_name
|
782
|
+
when 'intersection'
|
783
|
+
TrafficControllerSite.make_status @intersection
|
784
|
+
when 'status'
|
785
|
+
TrafficControllerSite.make_status 'local'
|
786
|
+
when 'source'
|
787
|
+
TrafficControllerSite.make_status 'startup'
|
788
|
+
end
|
789
|
+
end
|
790
|
+
|
791
|
+
def handle_s0033 status_code, status_name=nil, options={}
|
792
|
+
case status_name
|
793
|
+
when 'status'
|
794
|
+
TrafficControllerSite.make_status get_priority_list
|
795
|
+
end
|
796
|
+
end
|
797
|
+
|
720
798
|
def handle_s0091 status_code, status_name=nil, options={}
|
721
799
|
if Proxy.version_requirement_met? '>=1.1',options[:sxl_version]
|
722
800
|
case status_name
|
data/lib/rsmp/version.rb
CHANGED
data/lib/rsmp.rb
CHANGED
@@ -30,6 +30,7 @@ require 'rsmp/collect/status_collector'
|
|
30
30
|
require 'rsmp/collect/command_response_collector'
|
31
31
|
require 'rsmp/collect/aggregated_status_collector'
|
32
32
|
require 'rsmp/collect/alarm_collector'
|
33
|
+
require 'rsmp/collect/ack_collector'
|
33
34
|
require 'rsmp/alarm_state'
|
34
35
|
require 'rsmp/component_base'
|
35
36
|
require 'rsmp/component'
|
@@ -48,6 +49,7 @@ require 'rsmp/tlc/detector_logic'
|
|
48
49
|
require 'rsmp/tlc/signal_group'
|
49
50
|
require 'rsmp/tlc/signal_plan'
|
50
51
|
require 'rsmp/tlc/inputs'
|
52
|
+
require 'rsmp/tlc/signal_priority'
|
51
53
|
|
52
54
|
require 'rsmp/convert/import/yaml'
|
53
55
|
require 'rsmp/convert/export/json_schema'
|
data/rsmp.gemspec
CHANGED
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_dependency "async-io", "~> 1.33.0"
|
35
35
|
spec.add_dependency "colorize", "~> 0.8.1"
|
36
36
|
spec.add_dependency "thor", "~> 1.2.1"
|
37
|
-
spec.add_dependency "rsmp_schema", "~> 0.
|
37
|
+
spec.add_dependency "rsmp_schema", "~> 0.3.1"
|
38
38
|
|
39
39
|
spec.add_development_dependency "bundler", "~> 2.3.7"
|
40
40
|
spec.add_development_dependency "rake", "~> 13.0.6"
|
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.16.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: 2022-
|
11
|
+
date: 2022-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
75
|
+
version: 0.3.1
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
82
|
+
version: 0.3.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bundler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -211,6 +211,7 @@ files:
|
|
211
211
|
- lib/rsmp/alarm_state.rb
|
212
212
|
- lib/rsmp/archive.rb
|
213
213
|
- lib/rsmp/cli.rb
|
214
|
+
- lib/rsmp/collect/ack_collector.rb
|
214
215
|
- lib/rsmp/collect/aggregated_status_collector.rb
|
215
216
|
- lib/rsmp/collect/alarm_collector.rb
|
216
217
|
- lib/rsmp/collect/alarm_query.rb
|
@@ -249,6 +250,7 @@ files:
|
|
249
250
|
- lib/rsmp/tlc/inputs.rb
|
250
251
|
- lib/rsmp/tlc/signal_group.rb
|
251
252
|
- lib/rsmp/tlc/signal_plan.rb
|
253
|
+
- lib/rsmp/tlc/signal_priority.rb
|
252
254
|
- lib/rsmp/tlc/traffic_controller.rb
|
253
255
|
- lib/rsmp/tlc/traffic_controller_site.rb
|
254
256
|
- lib/rsmp/version.rb
|