rsmp 0.48.3 → 0.51.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/CHANGELOG.md +6 -0
- data/Gemfile.lock +19 -20
- data/README.md +27 -3
- data/Rakefile +3 -1
- data/documentation/cli.md +79 -4
- data/documentation/collecting_message.md +90 -170
- data/documentation/message_distribution.md +17 -3
- data/documentation/tasks.md +65 -117
- data/lib/rsmp/cli.rb +93 -5
- data/lib/rsmp/collect/collector.rb +117 -134
- data/lib/rsmp/collect/distributor.rb +16 -3
- data/lib/rsmp/collect/queue.rb +14 -6
- data/lib/rsmp/collect/receiver.rb +1 -1
- data/lib/rsmp/collect/state_collector.rb +11 -2
- data/lib/rsmp/collection.rb +12 -0
- data/lib/rsmp/completion.rb +49 -0
- data/lib/rsmp/component/component_base.rb +3 -3
- data/lib/rsmp/convert/export/json_schema/index.rb +8 -3
- data/lib/rsmp/convert/import/yaml.rb +12 -8
- data/lib/rsmp/delivery.rb +18 -0
- data/lib/rsmp/event.rb +19 -0
- data/lib/rsmp/event_source.rb +36 -0
- data/lib/rsmp/exchange.rb +10 -0
- data/lib/rsmp/failure.rb +23 -0
- data/lib/rsmp/helpers/error.rb +14 -23
- data/lib/rsmp/message.rb +9 -7
- data/lib/rsmp/node/node.rb +3 -21
- data/lib/rsmp/node/site/connections.rb +4 -9
- data/lib/rsmp/node/site/site.rb +31 -16
- data/lib/rsmp/node/supervisor/modules/connection.rb +19 -5
- data/lib/rsmp/node/supervisor/modules/sites.rb +16 -5
- data/lib/rsmp/node/supervisor/supervisor.rb +13 -14
- data/lib/rsmp/node/task.rb +59 -53
- data/lib/rsmp/proxy/modules/acknowledgements.rb +22 -9
- data/lib/rsmp/proxy/modules/lifecycle.rb +134 -0
- data/lib/rsmp/proxy/modules/receive.rb +109 -66
- data/lib/rsmp/proxy/modules/send.rb +109 -51
- data/lib/rsmp/proxy/modules/state.rb +15 -5
- data/lib/rsmp/proxy/modules/tasks.rb +96 -70
- data/lib/rsmp/proxy/modules/versions.rb +8 -8
- data/lib/rsmp/proxy/modules/watchdogs.rb +15 -2
- data/lib/rsmp/proxy/proxy.rb +4 -66
- data/lib/rsmp/proxy/site/connection.rb +27 -22
- data/lib/rsmp/proxy/site/modules/aggregated_status.rb +18 -8
- data/lib/rsmp/proxy/site/modules/alarms.rb +45 -38
- data/lib/rsmp/proxy/site/modules/commands.rb +18 -8
- data/lib/rsmp/proxy/site/modules/status.rb +44 -19
- data/lib/rsmp/proxy/site/site_proxy.rb +12 -10
- data/lib/rsmp/proxy/supervisor/modules/aggregated_status.rb +1 -1
- data/lib/rsmp/proxy/supervisor/modules/alarms.rb +1 -1
- data/lib/rsmp/proxy/supervisor/modules/commands.rb +1 -1
- data/lib/rsmp/proxy/supervisor/modules/message_buffer.rb +8 -9
- data/lib/rsmp/proxy/supervisor/modules/status.rb +1 -1
- data/lib/rsmp/proxy/supervisor/modules/status_updates.rb +1 -1
- data/lib/rsmp/proxy/supervisor/supervisor_proxy.rb +34 -30
- data/lib/rsmp/result.rb +95 -0
- data/lib/rsmp/schema/validation.rb +5 -3
- data/lib/rsmp/sxl/interface.rb +8 -1
- data/lib/rsmp/sxl/processing/catalogue.rb +61 -0
- data/lib/rsmp/sxl/processing/conflict_checker.rb +30 -0
- data/lib/rsmp/sxl/processing/dependency_graph.rb +37 -0
- data/lib/rsmp/sxl/processing/document.rb +158 -0
- data/lib/rsmp/sxl/processing/error.rb +8 -0
- data/lib/rsmp/sxl/processing/manifest.rb +144 -0
- data/lib/rsmp/sxl/processing/natural_sort.rb +22 -0
- data/lib/rsmp/sxl/processing/resolver.rb +94 -0
- data/lib/rsmp/sxl/processing/version_requirement.rb +86 -0
- data/lib/rsmp/sxl/processing.rb +18 -0
- data/lib/rsmp/sxl/supervisor_interface.rb +8 -1
- data/lib/rsmp/termination.rb +10 -0
- data/lib/rsmp/tlc/modules/plans.rb +0 -2
- data/lib/rsmp/tlc/proxy/control.rb +50 -16
- data/lib/rsmp/tlc/proxy/detectors.rb +15 -4
- data/lib/rsmp/tlc/proxy/io.rb +46 -31
- data/lib/rsmp/tlc/proxy/plans.rb +36 -19
- data/lib/rsmp/tlc/proxy/plans_bang.rb +44 -0
- data/lib/rsmp/tlc/proxy/status.rb +47 -23
- data/lib/rsmp/tlc/proxy/system.rb +16 -4
- data/lib/rsmp/tlc/supervisor_interface.rb +7 -1
- data/lib/rsmp/tlc/traffic_controller_site.rb +6 -9
- data/lib/rsmp/validation.rb +22 -0
- data/lib/rsmp/version.rb +1 -1
- data/lib/rsmp.rb +19 -4
- data/rsmp.gemspec +1 -1
- data/schemas/tlc/1.0.10/commands/M0001.json +3 -3
- data/schemas/tlc/1.0.10/source/sxl.yaml +3 -3
- data/schemas/tlc/1.0.10/sxl_index.json +3 -3
- data/schemas/tlc/1.0.13/commands/M0001.json +3 -3
- data/schemas/tlc/1.0.13/source/sxl.yaml +3 -3
- data/schemas/tlc/1.0.13/sxl_index.json +3 -3
- data/schemas/tlc/1.0.14/commands/M0001.json +3 -3
- data/schemas/tlc/1.0.14/source/sxl.yaml +3 -3
- data/schemas/tlc/1.0.14/sxl_index.json +3 -3
- data/schemas/tlc/1.0.15/commands/M0001.json +3 -3
- data/schemas/tlc/1.0.15/source/sxl.yaml +3 -3
- data/schemas/tlc/1.0.15/sxl_index.json +3 -3
- data/schemas/tlc/1.0.7/commands/M0001.json +3 -3
- data/schemas/tlc/1.0.7/source/sxl.yaml +3 -3
- data/schemas/tlc/1.0.7/sxl_index.json +3 -3
- data/schemas/tlc/1.0.8/commands/M0001.json +3 -3
- data/schemas/tlc/1.0.8/source/sxl.yaml +3 -3
- data/schemas/tlc/1.0.8/sxl_index.json +3 -3
- data/schemas/tlc/1.0.9/commands/M0001.json +3 -3
- data/schemas/tlc/1.0.9/source/sxl.yaml +3 -3
- data/schemas/tlc/1.0.9/sxl_index.json +3 -3
- metadata +25 -4
- data/lib/rsmp/collect/collector/status.rb +0 -34
|
@@ -6,6 +6,7 @@ module RSMP
|
|
|
6
6
|
include Proxy::Control
|
|
7
7
|
include Proxy::IO
|
|
8
8
|
include Proxy::Plans
|
|
9
|
+
include Proxy::PlansBang
|
|
9
10
|
include Proxy::Status
|
|
10
11
|
include Proxy::Detectors
|
|
11
12
|
include Proxy::System
|
|
@@ -32,7 +33,8 @@ module RSMP
|
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
def subscribe_to_timeplan
|
|
35
|
-
validate_ready 'subscribe to timeplan'
|
|
36
|
+
readiness = validate_ready 'subscribe to timeplan'
|
|
37
|
+
return readiness if readiness.failure?
|
|
36
38
|
|
|
37
39
|
status_list = [
|
|
38
40
|
{ 'sCI' => 'S0014', 'n' => 'status', 'uRt' => '0' },
|
|
@@ -45,6 +47,10 @@ module RSMP
|
|
|
45
47
|
subscribe_to_status status_list, component: main.c_id
|
|
46
48
|
end
|
|
47
49
|
|
|
50
|
+
def subscribe_to_timeplan!(...)
|
|
51
|
+
subscribe_to_timeplan(...).value!
|
|
52
|
+
end
|
|
53
|
+
|
|
48
54
|
def process_status_update(message)
|
|
49
55
|
status_values = message.attribute('sS')
|
|
50
56
|
return unless status_values
|
|
@@ -28,9 +28,9 @@ module RSMP
|
|
|
28
28
|
'TLC'
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
def
|
|
31
|
+
def start_auxiliary_tasks(parent)
|
|
32
32
|
super
|
|
33
|
-
start_tlc_timer
|
|
33
|
+
start_tlc_timer(parent: parent)
|
|
34
34
|
main.initiate_startup_sequence
|
|
35
35
|
end
|
|
36
36
|
|
|
@@ -82,11 +82,11 @@ module RSMP
|
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
def start_tlc_timer
|
|
85
|
+
def start_tlc_timer(parent:)
|
|
86
86
|
task_name = 'tlc timer'
|
|
87
87
|
log "Starting #{task_name} with interval #{@interval} seconds", level: :debug
|
|
88
88
|
|
|
89
|
-
@timer =
|
|
89
|
+
@timer = parent.async do |task|
|
|
90
90
|
task.annotate task_name
|
|
91
91
|
run_tlc_timer task
|
|
92
92
|
end
|
|
@@ -96,9 +96,6 @@ module RSMP
|
|
|
96
96
|
next_time = Time.now.to_f
|
|
97
97
|
loop do
|
|
98
98
|
timer(@clock.now)
|
|
99
|
-
rescue StandardError => e
|
|
100
|
-
distribute_error e, level: :internal
|
|
101
|
-
ensure
|
|
102
99
|
# adjust sleep duration to avoid drift. so wake up always happens on the
|
|
103
100
|
# same fractional second.
|
|
104
101
|
# note that Time.now is not monotonic. If the clock is changed,
|
|
@@ -108,7 +105,7 @@ module RSMP
|
|
|
108
105
|
# if the clock is changed, the wake up would then happen on a different
|
|
109
106
|
# fractional second
|
|
110
107
|
next_time += @interval
|
|
111
|
-
duration = next_time - Time.now.to_f
|
|
108
|
+
duration = [next_time - Time.now.to_f, 0].max
|
|
112
109
|
task.sleep duration
|
|
113
110
|
end
|
|
114
111
|
end
|
|
@@ -116,7 +113,7 @@ module RSMP
|
|
|
116
113
|
def stop_tlc_timer
|
|
117
114
|
return unless @timer
|
|
118
115
|
|
|
119
|
-
@timer.
|
|
116
|
+
@timer.cancel if @timer.running?
|
|
120
117
|
@timer = nil
|
|
121
118
|
end
|
|
122
119
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module RSMP
|
|
2
|
+
# The result of validating a message against one or more schemas.
|
|
3
|
+
Validation = Data.define(:violations) do
|
|
4
|
+
def initialize(violations: [])
|
|
5
|
+
raise ArgumentError, 'violations must be an Array' unless violations.is_a?(Array)
|
|
6
|
+
|
|
7
|
+
super(violations: violations.map { |violation| Array(violation).dup.freeze }.freeze)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def valid?
|
|
11
|
+
violations.empty?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def invalid?
|
|
15
|
+
!valid?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def message
|
|
19
|
+
violations.map { |item| item.reject { |part| part == '' } }.compact.join(', ').strip
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
data/lib/rsmp/version.rb
CHANGED
data/lib/rsmp.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require 'yaml'
|
|
2
2
|
require 'socket'
|
|
3
3
|
require 'time'
|
|
4
|
+
require 'English'
|
|
4
5
|
require 'async'
|
|
5
6
|
require 'io/endpoint'
|
|
6
7
|
require 'io/endpoint/host_endpoint'
|
|
@@ -10,16 +11,28 @@ require 'json'
|
|
|
10
11
|
require 'securerandom'
|
|
11
12
|
require 'json_schemer'
|
|
12
13
|
require 'async/queue'
|
|
14
|
+
require 'async/barrier'
|
|
15
|
+
require 'async/promise'
|
|
13
16
|
require_relative 'rsmp/schema_error'
|
|
17
|
+
require_relative 'rsmp/helpers/clock'
|
|
18
|
+
require_relative 'rsmp/helpers/deep_merge'
|
|
19
|
+
require_relative 'rsmp/helpers/error'
|
|
20
|
+
require_relative 'rsmp/failure'
|
|
21
|
+
require_relative 'rsmp/result'
|
|
22
|
+
require_relative 'rsmp/validation'
|
|
23
|
+
require_relative 'rsmp/event'
|
|
24
|
+
require_relative 'rsmp/event_source'
|
|
25
|
+
require_relative 'rsmp/completion'
|
|
26
|
+
require_relative 'rsmp/termination'
|
|
27
|
+
require_relative 'rsmp/collection'
|
|
28
|
+
require_relative 'rsmp/exchange'
|
|
29
|
+
require_relative 'rsmp/delivery'
|
|
14
30
|
require_relative 'rsmp/schema'
|
|
15
31
|
require_relative 'rsmp/convert/import/yaml'
|
|
16
32
|
require_relative 'rsmp/convert/export/json_schema'
|
|
17
33
|
|
|
18
34
|
require_relative 'rsmp/status_list'
|
|
19
35
|
require_relative 'rsmp/command_list'
|
|
20
|
-
require_relative 'rsmp/helpers/clock'
|
|
21
|
-
require_relative 'rsmp/helpers/deep_merge'
|
|
22
|
-
require_relative 'rsmp/helpers/error'
|
|
23
36
|
require_relative 'rsmp/log/logging'
|
|
24
37
|
require_relative 'rsmp/log/archive'
|
|
25
38
|
require_relative 'rsmp/log/filtering'
|
|
@@ -35,7 +48,6 @@ require_relative 'rsmp/component/component_proxy'
|
|
|
35
48
|
require_relative 'rsmp/collect/distributor'
|
|
36
49
|
require_relative 'rsmp/collect/receiver'
|
|
37
50
|
require_relative 'rsmp/collect/queue'
|
|
38
|
-
require_relative 'rsmp/collect/collector/status'
|
|
39
51
|
require_relative 'rsmp/collect/collector/reporting'
|
|
40
52
|
require_relative 'rsmp/collect/collector/logging'
|
|
41
53
|
require_relative 'rsmp/collect/collector'
|
|
@@ -71,11 +83,13 @@ require_relative 'rsmp/proxy/modules/send'
|
|
|
71
83
|
require_relative 'rsmp/proxy/modules/receive'
|
|
72
84
|
require_relative 'rsmp/proxy/modules/versions'
|
|
73
85
|
require_relative 'rsmp/proxy/modules/tasks'
|
|
86
|
+
require_relative 'rsmp/proxy/modules/lifecycle'
|
|
74
87
|
require_relative 'rsmp/proxy/proxy'
|
|
75
88
|
require_relative 'rsmp/sxl/interface'
|
|
76
89
|
require_relative 'rsmp/sxl/supervisor_interface'
|
|
77
90
|
require_relative 'rsmp/sxl/site_interface'
|
|
78
91
|
require_relative 'rsmp/sxl/registry'
|
|
92
|
+
require_relative 'rsmp/sxl/processing'
|
|
79
93
|
require_relative 'rsmp/proxy/supervisor/modules/status_updates'
|
|
80
94
|
require_relative 'rsmp/proxy/supervisor/modules/status'
|
|
81
95
|
require_relative 'rsmp/proxy/supervisor/modules/commands'
|
|
@@ -108,6 +122,7 @@ require_relative 'rsmp/tlc/proxy/control'
|
|
|
108
122
|
require_relative 'rsmp/tlc/proxy/detectors'
|
|
109
123
|
require_relative 'rsmp/tlc/proxy/io'
|
|
110
124
|
require_relative 'rsmp/tlc/proxy/plans'
|
|
125
|
+
require_relative 'rsmp/tlc/proxy/plans_bang'
|
|
111
126
|
require_relative 'rsmp/tlc/proxy/status'
|
|
112
127
|
require_relative 'rsmp/tlc/proxy/system'
|
|
113
128
|
require_relative 'rsmp/tlc/supervisor_interface'
|
data/rsmp.gemspec
CHANGED
|
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
|
31
31
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
32
32
|
spec.require_paths = ['lib']
|
|
33
33
|
|
|
34
|
-
spec.add_dependency 'async', '~> 2.
|
|
34
|
+
spec.add_dependency 'async', '~> 2.45'
|
|
35
35
|
spec.add_dependency 'colorize', '~> 1.1'
|
|
36
36
|
spec.add_dependency 'io-endpoint', '~> 0.17'
|
|
37
37
|
spec.add_dependency 'io-stream', '~> 0.13'
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"properties" : {
|
|
55
55
|
"v" : {
|
|
56
56
|
"description" : "Security code 2",
|
|
57
|
-
"
|
|
57
|
+
"type" : "string"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"properties" : {
|
|
72
72
|
"v" : {
|
|
73
73
|
"description" : "Time in minutes until controller automatically reverts to previous functional position.\n0=no automatic return",
|
|
74
|
-
"$ref" : "../defs/definitions.json#/
|
|
74
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"properties" : {
|
|
89
89
|
"v" : {
|
|
90
90
|
"description" : "Intersection number",
|
|
91
|
-
"$ref" : "../defs/definitions.json#/
|
|
91
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -461,17 +461,17 @@ objects:
|
|
|
461
461
|
YellowFlash: Enables yellow flash
|
|
462
462
|
Dark: Enables dark mode
|
|
463
463
|
securityCode:
|
|
464
|
-
type:
|
|
464
|
+
type: string
|
|
465
465
|
description: Security code 2
|
|
466
466
|
timeout:
|
|
467
|
-
type:
|
|
467
|
+
type: integer
|
|
468
468
|
description: |-
|
|
469
469
|
Time in minutes until controller automatically reverts to previous functional position.
|
|
470
470
|
0=no automatic return
|
|
471
471
|
min: 0
|
|
472
472
|
max: 1440
|
|
473
473
|
intersection:
|
|
474
|
-
type:
|
|
474
|
+
type: integer
|
|
475
475
|
description: Intersection number
|
|
476
476
|
min: 0
|
|
477
477
|
max: 255
|
|
@@ -188,10 +188,10 @@
|
|
|
188
188
|
"commands" : {
|
|
189
189
|
"M0001" : {
|
|
190
190
|
"required" : {
|
|
191
|
-
"intersection" : "
|
|
192
|
-
"securityCode" : "
|
|
191
|
+
"intersection" : "integer_as_string",
|
|
192
|
+
"securityCode" : "string",
|
|
193
193
|
"status" : "string",
|
|
194
|
-
"timeout" : "
|
|
194
|
+
"timeout" : "integer_as_string"
|
|
195
195
|
}
|
|
196
196
|
},
|
|
197
197
|
"M0002" : {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"properties" : {
|
|
55
55
|
"v" : {
|
|
56
56
|
"description" : "Security code 2",
|
|
57
|
-
"
|
|
57
|
+
"type" : "string"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"properties" : {
|
|
72
72
|
"v" : {
|
|
73
73
|
"description" : "Time in minutes until controller automatically reverts to previous functional position.\n0=no automatic return",
|
|
74
|
-
"$ref" : "../defs/definitions.json#/
|
|
74
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"properties" : {
|
|
89
89
|
"v" : {
|
|
90
90
|
"description" : "Intersection number",
|
|
91
|
-
"$ref" : "../defs/definitions.json#/
|
|
91
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -590,17 +590,17 @@ objects:
|
|
|
590
590
|
YellowFlash: Enables yellow flash
|
|
591
591
|
Dark: Enables dark mode
|
|
592
592
|
securityCode:
|
|
593
|
-
type:
|
|
593
|
+
type: string
|
|
594
594
|
description: Security code 2
|
|
595
595
|
timeout:
|
|
596
|
-
type:
|
|
596
|
+
type: integer
|
|
597
597
|
description: |-
|
|
598
598
|
Time in minutes until controller automatically reverts to previous functional position.
|
|
599
599
|
0=no automatic return
|
|
600
600
|
min: 0
|
|
601
601
|
max: 1440
|
|
602
602
|
intersection:
|
|
603
|
-
type:
|
|
603
|
+
type: integer
|
|
604
604
|
description: Intersection number
|
|
605
605
|
min: 0
|
|
606
606
|
max: 255
|
|
@@ -235,10 +235,10 @@
|
|
|
235
235
|
"commands" : {
|
|
236
236
|
"M0001" : {
|
|
237
237
|
"required" : {
|
|
238
|
-
"intersection" : "
|
|
239
|
-
"securityCode" : "
|
|
238
|
+
"intersection" : "integer_as_string",
|
|
239
|
+
"securityCode" : "string",
|
|
240
240
|
"status" : "string",
|
|
241
|
-
"timeout" : "
|
|
241
|
+
"timeout" : "integer_as_string"
|
|
242
242
|
}
|
|
243
243
|
},
|
|
244
244
|
"M0002" : {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"properties" : {
|
|
55
55
|
"v" : {
|
|
56
56
|
"description" : "Security code 2",
|
|
57
|
-
"
|
|
57
|
+
"type" : "string"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"properties" : {
|
|
72
72
|
"v" : {
|
|
73
73
|
"description" : "Time in minutes until controller automatically reverts to previous functional position.\n0=no automatic return",
|
|
74
|
-
"$ref" : "../defs/definitions.json#/
|
|
74
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"properties" : {
|
|
89
89
|
"v" : {
|
|
90
90
|
"description" : "Intersection number",
|
|
91
|
-
"$ref" : "../defs/definitions.json#/
|
|
91
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -728,17 +728,17 @@ objects:
|
|
|
728
728
|
YellowFlash: Enables yellow flash
|
|
729
729
|
Dark: Enables dark mode
|
|
730
730
|
securityCode:
|
|
731
|
-
type:
|
|
731
|
+
type: string
|
|
732
732
|
description: Security code 2
|
|
733
733
|
timeout:
|
|
734
|
-
type:
|
|
734
|
+
type: integer
|
|
735
735
|
description: |-
|
|
736
736
|
Time in minutes until controller automatically reverts to previous functional position.
|
|
737
737
|
0=no automatic return
|
|
738
738
|
min: 0
|
|
739
739
|
max: 1440
|
|
740
740
|
intersection:
|
|
741
|
-
type:
|
|
741
|
+
type: integer
|
|
742
742
|
description: Intersection number
|
|
743
743
|
min: 0
|
|
744
744
|
max: 255
|
|
@@ -267,10 +267,10 @@
|
|
|
267
267
|
"commands" : {
|
|
268
268
|
"M0001" : {
|
|
269
269
|
"required" : {
|
|
270
|
-
"intersection" : "
|
|
271
|
-
"securityCode" : "
|
|
270
|
+
"intersection" : "integer_as_string",
|
|
271
|
+
"securityCode" : "string",
|
|
272
272
|
"status" : "string",
|
|
273
|
-
"timeout" : "
|
|
273
|
+
"timeout" : "integer_as_string"
|
|
274
274
|
}
|
|
275
275
|
},
|
|
276
276
|
"M0002" : {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"properties" : {
|
|
55
55
|
"v" : {
|
|
56
56
|
"description" : "Security code 2",
|
|
57
|
-
"
|
|
57
|
+
"type" : "string"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"properties" : {
|
|
72
72
|
"v" : {
|
|
73
73
|
"description" : "Time in minutes until controller automatically reverts to previous functional position.\n0=no automatic return",
|
|
74
|
-
"$ref" : "../defs/definitions.json#/
|
|
74
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"properties" : {
|
|
89
89
|
"v" : {
|
|
90
90
|
"description" : "Intersection number",
|
|
91
|
-
"$ref" : "../defs/definitions.json#/
|
|
91
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -825,17 +825,17 @@ objects:
|
|
|
825
825
|
YellowFlash: Enables yellow flash
|
|
826
826
|
Dark: Enables dark mode
|
|
827
827
|
securityCode:
|
|
828
|
-
type:
|
|
828
|
+
type: string
|
|
829
829
|
description: Security code 2
|
|
830
830
|
timeout:
|
|
831
|
-
type:
|
|
831
|
+
type: integer
|
|
832
832
|
description: |-
|
|
833
833
|
Time in minutes until controller automatically reverts to previous functional position.
|
|
834
834
|
0=no automatic return
|
|
835
835
|
min: 0
|
|
836
836
|
max: 1440
|
|
837
837
|
intersection:
|
|
838
|
-
type:
|
|
838
|
+
type: integer
|
|
839
839
|
description: Intersection number
|
|
840
840
|
min: 0
|
|
841
841
|
max: 255
|
|
@@ -290,10 +290,10 @@
|
|
|
290
290
|
"commands" : {
|
|
291
291
|
"M0001" : {
|
|
292
292
|
"required" : {
|
|
293
|
-
"intersection" : "
|
|
294
|
-
"securityCode" : "
|
|
293
|
+
"intersection" : "integer_as_string",
|
|
294
|
+
"securityCode" : "string",
|
|
295
295
|
"status" : "string",
|
|
296
|
-
"timeout" : "
|
|
296
|
+
"timeout" : "integer_as_string"
|
|
297
297
|
}
|
|
298
298
|
},
|
|
299
299
|
"M0002" : {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"properties" : {
|
|
55
55
|
"v" : {
|
|
56
56
|
"description" : "Security code 2",
|
|
57
|
-
"
|
|
57
|
+
"type" : "string"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"properties" : {
|
|
72
72
|
"v" : {
|
|
73
73
|
"description" : "Time in minutes until controller automatically reverts to previous functional position.\n0=no automatic return",
|
|
74
|
-
"$ref" : "../defs/definitions.json#/
|
|
74
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"properties" : {
|
|
89
89
|
"v" : {
|
|
90
90
|
"description" : "Intersection number",
|
|
91
|
-
"$ref" : "../defs/definitions.json#/
|
|
91
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -461,17 +461,17 @@ objects:
|
|
|
461
461
|
YellowFlash: Enables yellow flash
|
|
462
462
|
Dark: Enables dark mode
|
|
463
463
|
securityCode:
|
|
464
|
-
type:
|
|
464
|
+
type: string
|
|
465
465
|
description: Security code 2
|
|
466
466
|
timeout:
|
|
467
|
-
type:
|
|
467
|
+
type: integer
|
|
468
468
|
description: |-
|
|
469
469
|
Time in minutes until controller automatically reverts to previous functional position.
|
|
470
470
|
0=no automatic return
|
|
471
471
|
min: 0
|
|
472
472
|
max: 1440
|
|
473
473
|
intersection:
|
|
474
|
-
type:
|
|
474
|
+
type: integer
|
|
475
475
|
description: Intersection number
|
|
476
476
|
min: 0
|
|
477
477
|
max: 255
|
|
@@ -200,10 +200,10 @@
|
|
|
200
200
|
"commands" : {
|
|
201
201
|
"M0001" : {
|
|
202
202
|
"required" : {
|
|
203
|
-
"intersection" : "
|
|
204
|
-
"securityCode" : "
|
|
203
|
+
"intersection" : "integer_as_string",
|
|
204
|
+
"securityCode" : "string",
|
|
205
205
|
"status" : "string",
|
|
206
|
-
"timeout" : "
|
|
206
|
+
"timeout" : "integer_as_string"
|
|
207
207
|
}
|
|
208
208
|
},
|
|
209
209
|
"M0002" : {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"properties" : {
|
|
55
55
|
"v" : {
|
|
56
56
|
"description" : "Security code 2",
|
|
57
|
-
"
|
|
57
|
+
"type" : "string"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"properties" : {
|
|
72
72
|
"v" : {
|
|
73
73
|
"description" : "Time in minutes until controller automatically reverts to previous functional position.\n0=no automatic return",
|
|
74
|
-
"$ref" : "../defs/definitions.json#/
|
|
74
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"properties" : {
|
|
89
89
|
"v" : {
|
|
90
90
|
"description" : "Intersection number",
|
|
91
|
-
"$ref" : "../defs/definitions.json#/
|
|
91
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -461,17 +461,17 @@ objects:
|
|
|
461
461
|
YellowFlash: Enables yellow flash
|
|
462
462
|
Dark: Enables dark mode
|
|
463
463
|
securityCode:
|
|
464
|
-
type:
|
|
464
|
+
type: string
|
|
465
465
|
description: Security code 2
|
|
466
466
|
timeout:
|
|
467
|
-
type:
|
|
467
|
+
type: integer
|
|
468
468
|
description: |-
|
|
469
469
|
Time in minutes until controller automatically reverts to previous functional position.
|
|
470
470
|
0=no automatic return
|
|
471
471
|
min: 0
|
|
472
472
|
max: 1440
|
|
473
473
|
intersection:
|
|
474
|
-
type:
|
|
474
|
+
type: integer
|
|
475
475
|
description: Intersection number
|
|
476
476
|
min: 0
|
|
477
477
|
max: 255
|
|
@@ -188,10 +188,10 @@
|
|
|
188
188
|
"commands" : {
|
|
189
189
|
"M0001" : {
|
|
190
190
|
"required" : {
|
|
191
|
-
"intersection" : "
|
|
192
|
-
"securityCode" : "
|
|
191
|
+
"intersection" : "integer_as_string",
|
|
192
|
+
"securityCode" : "string",
|
|
193
193
|
"status" : "string",
|
|
194
|
-
"timeout" : "
|
|
194
|
+
"timeout" : "integer_as_string"
|
|
195
195
|
}
|
|
196
196
|
},
|
|
197
197
|
"M0002" : {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"properties" : {
|
|
55
55
|
"v" : {
|
|
56
56
|
"description" : "Security code 2",
|
|
57
|
-
"
|
|
57
|
+
"type" : "string"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"properties" : {
|
|
72
72
|
"v" : {
|
|
73
73
|
"description" : "Time in minutes until controller automatically reverts to previous functional position.\n0=no automatic return",
|
|
74
|
-
"$ref" : "../defs/definitions.json#/
|
|
74
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"properties" : {
|
|
89
89
|
"v" : {
|
|
90
90
|
"description" : "Intersection number",
|
|
91
|
-
"$ref" : "../defs/definitions.json#/
|
|
91
|
+
"$ref" : "../defs/definitions.json#/integer"
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -461,17 +461,17 @@ objects:
|
|
|
461
461
|
YellowFlash: Enables yellow flash
|
|
462
462
|
Dark: Enables dark mode
|
|
463
463
|
securityCode:
|
|
464
|
-
type:
|
|
464
|
+
type: string
|
|
465
465
|
description: Security code 2
|
|
466
466
|
timeout:
|
|
467
|
-
type:
|
|
467
|
+
type: integer
|
|
468
468
|
description: |-
|
|
469
469
|
Time in minutes until controller automatically reverts to previous functional position.
|
|
470
470
|
0=no automatic return
|
|
471
471
|
min: 0
|
|
472
472
|
max: 1440
|
|
473
473
|
intersection:
|
|
474
|
-
type:
|
|
474
|
+
type: integer
|
|
475
475
|
description: Intersection number
|
|
476
476
|
min: 0
|
|
477
477
|
max: 255
|
|
@@ -188,10 +188,10 @@
|
|
|
188
188
|
"commands" : {
|
|
189
189
|
"M0001" : {
|
|
190
190
|
"required" : {
|
|
191
|
-
"intersection" : "
|
|
192
|
-
"securityCode" : "
|
|
191
|
+
"intersection" : "integer_as_string",
|
|
192
|
+
"securityCode" : "string",
|
|
193
193
|
"status" : "string",
|
|
194
|
-
"timeout" : "
|
|
194
|
+
"timeout" : "integer_as_string"
|
|
195
195
|
}
|
|
196
196
|
},
|
|
197
197
|
"M0002" : {
|