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.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile.lock +19 -20
  4. data/README.md +27 -3
  5. data/Rakefile +3 -1
  6. data/documentation/cli.md +79 -4
  7. data/documentation/collecting_message.md +90 -170
  8. data/documentation/message_distribution.md +17 -3
  9. data/documentation/tasks.md +65 -117
  10. data/lib/rsmp/cli.rb +93 -5
  11. data/lib/rsmp/collect/collector.rb +117 -134
  12. data/lib/rsmp/collect/distributor.rb +16 -3
  13. data/lib/rsmp/collect/queue.rb +14 -6
  14. data/lib/rsmp/collect/receiver.rb +1 -1
  15. data/lib/rsmp/collect/state_collector.rb +11 -2
  16. data/lib/rsmp/collection.rb +12 -0
  17. data/lib/rsmp/completion.rb +49 -0
  18. data/lib/rsmp/component/component_base.rb +3 -3
  19. data/lib/rsmp/convert/export/json_schema/index.rb +8 -3
  20. data/lib/rsmp/convert/import/yaml.rb +12 -8
  21. data/lib/rsmp/delivery.rb +18 -0
  22. data/lib/rsmp/event.rb +19 -0
  23. data/lib/rsmp/event_source.rb +36 -0
  24. data/lib/rsmp/exchange.rb +10 -0
  25. data/lib/rsmp/failure.rb +23 -0
  26. data/lib/rsmp/helpers/error.rb +14 -23
  27. data/lib/rsmp/message.rb +9 -7
  28. data/lib/rsmp/node/node.rb +3 -21
  29. data/lib/rsmp/node/site/connections.rb +4 -9
  30. data/lib/rsmp/node/site/site.rb +31 -16
  31. data/lib/rsmp/node/supervisor/modules/connection.rb +19 -5
  32. data/lib/rsmp/node/supervisor/modules/sites.rb +16 -5
  33. data/lib/rsmp/node/supervisor/supervisor.rb +13 -14
  34. data/lib/rsmp/node/task.rb +59 -53
  35. data/lib/rsmp/proxy/modules/acknowledgements.rb +22 -9
  36. data/lib/rsmp/proxy/modules/lifecycle.rb +134 -0
  37. data/lib/rsmp/proxy/modules/receive.rb +109 -66
  38. data/lib/rsmp/proxy/modules/send.rb +109 -51
  39. data/lib/rsmp/proxy/modules/state.rb +15 -5
  40. data/lib/rsmp/proxy/modules/tasks.rb +96 -70
  41. data/lib/rsmp/proxy/modules/versions.rb +8 -8
  42. data/lib/rsmp/proxy/modules/watchdogs.rb +15 -2
  43. data/lib/rsmp/proxy/proxy.rb +4 -66
  44. data/lib/rsmp/proxy/site/connection.rb +27 -22
  45. data/lib/rsmp/proxy/site/modules/aggregated_status.rb +18 -8
  46. data/lib/rsmp/proxy/site/modules/alarms.rb +45 -38
  47. data/lib/rsmp/proxy/site/modules/commands.rb +18 -8
  48. data/lib/rsmp/proxy/site/modules/status.rb +44 -19
  49. data/lib/rsmp/proxy/site/site_proxy.rb +12 -10
  50. data/lib/rsmp/proxy/supervisor/modules/aggregated_status.rb +1 -1
  51. data/lib/rsmp/proxy/supervisor/modules/alarms.rb +1 -1
  52. data/lib/rsmp/proxy/supervisor/modules/commands.rb +1 -1
  53. data/lib/rsmp/proxy/supervisor/modules/message_buffer.rb +8 -9
  54. data/lib/rsmp/proxy/supervisor/modules/status.rb +1 -1
  55. data/lib/rsmp/proxy/supervisor/modules/status_updates.rb +1 -1
  56. data/lib/rsmp/proxy/supervisor/supervisor_proxy.rb +34 -30
  57. data/lib/rsmp/result.rb +95 -0
  58. data/lib/rsmp/schema/validation.rb +5 -3
  59. data/lib/rsmp/sxl/interface.rb +8 -1
  60. data/lib/rsmp/sxl/processing/catalogue.rb +61 -0
  61. data/lib/rsmp/sxl/processing/conflict_checker.rb +30 -0
  62. data/lib/rsmp/sxl/processing/dependency_graph.rb +37 -0
  63. data/lib/rsmp/sxl/processing/document.rb +158 -0
  64. data/lib/rsmp/sxl/processing/error.rb +8 -0
  65. data/lib/rsmp/sxl/processing/manifest.rb +144 -0
  66. data/lib/rsmp/sxl/processing/natural_sort.rb +22 -0
  67. data/lib/rsmp/sxl/processing/resolver.rb +94 -0
  68. data/lib/rsmp/sxl/processing/version_requirement.rb +86 -0
  69. data/lib/rsmp/sxl/processing.rb +18 -0
  70. data/lib/rsmp/sxl/supervisor_interface.rb +8 -1
  71. data/lib/rsmp/termination.rb +10 -0
  72. data/lib/rsmp/tlc/modules/plans.rb +0 -2
  73. data/lib/rsmp/tlc/proxy/control.rb +50 -16
  74. data/lib/rsmp/tlc/proxy/detectors.rb +15 -4
  75. data/lib/rsmp/tlc/proxy/io.rb +46 -31
  76. data/lib/rsmp/tlc/proxy/plans.rb +36 -19
  77. data/lib/rsmp/tlc/proxy/plans_bang.rb +44 -0
  78. data/lib/rsmp/tlc/proxy/status.rb +47 -23
  79. data/lib/rsmp/tlc/proxy/system.rb +16 -4
  80. data/lib/rsmp/tlc/supervisor_interface.rb +7 -1
  81. data/lib/rsmp/tlc/traffic_controller_site.rb +6 -9
  82. data/lib/rsmp/validation.rb +22 -0
  83. data/lib/rsmp/version.rb +1 -1
  84. data/lib/rsmp.rb +19 -4
  85. data/rsmp.gemspec +1 -1
  86. data/schemas/tlc/1.0.10/commands/M0001.json +3 -3
  87. data/schemas/tlc/1.0.10/source/sxl.yaml +3 -3
  88. data/schemas/tlc/1.0.10/sxl_index.json +3 -3
  89. data/schemas/tlc/1.0.13/commands/M0001.json +3 -3
  90. data/schemas/tlc/1.0.13/source/sxl.yaml +3 -3
  91. data/schemas/tlc/1.0.13/sxl_index.json +3 -3
  92. data/schemas/tlc/1.0.14/commands/M0001.json +3 -3
  93. data/schemas/tlc/1.0.14/source/sxl.yaml +3 -3
  94. data/schemas/tlc/1.0.14/sxl_index.json +3 -3
  95. data/schemas/tlc/1.0.15/commands/M0001.json +3 -3
  96. data/schemas/tlc/1.0.15/source/sxl.yaml +3 -3
  97. data/schemas/tlc/1.0.15/sxl_index.json +3 -3
  98. data/schemas/tlc/1.0.7/commands/M0001.json +3 -3
  99. data/schemas/tlc/1.0.7/source/sxl.yaml +3 -3
  100. data/schemas/tlc/1.0.7/sxl_index.json +3 -3
  101. data/schemas/tlc/1.0.8/commands/M0001.json +3 -3
  102. data/schemas/tlc/1.0.8/source/sxl.yaml +3 -3
  103. data/schemas/tlc/1.0.8/sxl_index.json +3 -3
  104. data/schemas/tlc/1.0.9/commands/M0001.json +3 -3
  105. data/schemas/tlc/1.0.9/source/sxl.yaml +3 -3
  106. data/schemas/tlc/1.0.9/sxl_index.json +3 -3
  107. metadata +25 -4
  108. 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 start
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 = @task.async do |task|
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.stop
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
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = '0.48.3'.freeze
2
+ VERSION = '0.51.0'.freeze
3
3
  end
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.39'
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
- "$ref" : "../defs/definitions.json#/string_list"
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#/integer_list"
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#/integer_list"
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: string_list
464
+ type: string
465
465
  description: Security code 2
466
466
  timeout:
467
- type: integer_list
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: integer_list
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" : "integer_list",
192
- "securityCode" : "string_list",
191
+ "intersection" : "integer_as_string",
192
+ "securityCode" : "string",
193
193
  "status" : "string",
194
- "timeout" : "integer_list"
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
- "$ref" : "../defs/definitions.json#/string_list"
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#/integer_list"
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#/integer_list"
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: string_list
593
+ type: string
594
594
  description: Security code 2
595
595
  timeout:
596
- type: integer_list
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: integer_list
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" : "integer_list",
239
- "securityCode" : "string_list",
238
+ "intersection" : "integer_as_string",
239
+ "securityCode" : "string",
240
240
  "status" : "string",
241
- "timeout" : "integer_list"
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
- "$ref" : "../defs/definitions.json#/string_list"
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#/integer_list"
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#/integer_list"
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: string_list
731
+ type: string
732
732
  description: Security code 2
733
733
  timeout:
734
- type: integer_list
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: integer_list
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" : "integer_list",
271
- "securityCode" : "string_list",
270
+ "intersection" : "integer_as_string",
271
+ "securityCode" : "string",
272
272
  "status" : "string",
273
- "timeout" : "integer_list"
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
- "$ref" : "../defs/definitions.json#/string_list"
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#/integer_list"
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#/integer_list"
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: string_list
828
+ type: string
829
829
  description: Security code 2
830
830
  timeout:
831
- type: integer_list
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: integer_list
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" : "integer_list",
294
- "securityCode" : "string_list",
293
+ "intersection" : "integer_as_string",
294
+ "securityCode" : "string",
295
295
  "status" : "string",
296
- "timeout" : "integer_list"
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
- "$ref" : "../defs/definitions.json#/string_list"
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#/integer_list"
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#/integer_list"
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: string_list
464
+ type: string
465
465
  description: Security code 2
466
466
  timeout:
467
- type: integer_list
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: integer_list
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" : "integer_list",
204
- "securityCode" : "string_list",
203
+ "intersection" : "integer_as_string",
204
+ "securityCode" : "string",
205
205
  "status" : "string",
206
- "timeout" : "integer_list"
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
- "$ref" : "../defs/definitions.json#/string_list"
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#/integer_list"
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#/integer_list"
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: string_list
464
+ type: string
465
465
  description: Security code 2
466
466
  timeout:
467
- type: integer_list
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: integer_list
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" : "integer_list",
192
- "securityCode" : "string_list",
191
+ "intersection" : "integer_as_string",
192
+ "securityCode" : "string",
193
193
  "status" : "string",
194
- "timeout" : "integer_list"
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
- "$ref" : "../defs/definitions.json#/string_list"
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#/integer_list"
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#/integer_list"
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: string_list
464
+ type: string
465
465
  description: Security code 2
466
466
  timeout:
467
- type: integer_list
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: integer_list
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" : "integer_list",
192
- "securityCode" : "string_list",
191
+ "intersection" : "integer_as_string",
192
+ "securityCode" : "string",
193
193
  "status" : "string",
194
- "timeout" : "integer_list"
194
+ "timeout" : "integer_as_string"
195
195
  }
196
196
  },
197
197
  "M0002" : {