rsmp 0.43.2 → 0.45.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 (177) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +11 -11
  3. data/README.md +19 -3
  4. data/Rakefile +2 -2
  5. data/config/supervisor.yaml +2 -1
  6. data/config/tlc.yaml +2 -2
  7. data/lib/rsmp/cli.rb +29 -5
  8. data/lib/rsmp/component/component.rb +0 -4
  9. data/lib/rsmp/component/component_base.rb +15 -2
  10. data/lib/rsmp/component/component_proxy.rb +1 -1
  11. data/lib/rsmp/component/components.rb +22 -1
  12. data/lib/rsmp/convert/export/json_schema/outputs.rb +1 -0
  13. data/lib/rsmp/convert/export/json_schema/values.rb +6 -4
  14. data/lib/rsmp/convert/export/json_schema.rb +7 -3
  15. data/lib/rsmp/helpers/deep_merge.rb +2 -2
  16. data/lib/rsmp/message.rb +32 -0
  17. data/lib/rsmp/node/site/site.rb +34 -10
  18. data/lib/rsmp/node/supervisor/modules/configuration.rb +32 -5
  19. data/lib/rsmp/node/supervisor/modules/connection.rb +0 -2
  20. data/lib/rsmp/node/supervisor/supervisor.rb +0 -7
  21. data/lib/rsmp/options/options.rb +55 -6
  22. data/lib/rsmp/options/schemas/site.json +6 -3
  23. data/lib/rsmp/options/schemas/supervisor.json +5 -2
  24. data/lib/rsmp/options/schemas/supervisor_site.json +5 -2
  25. data/lib/rsmp/options/site_options.rb +3 -2
  26. data/lib/rsmp/options/supervisor_options.rb +3 -1
  27. data/lib/rsmp/proxy/modules/acknowledgements.rb +2 -0
  28. data/lib/rsmp/proxy/modules/receive.rb +5 -2
  29. data/lib/rsmp/proxy/modules/state.rb +1 -0
  30. data/lib/rsmp/proxy/modules/versions.rb +90 -15
  31. data/lib/rsmp/proxy/proxy.rb +52 -3
  32. data/lib/rsmp/proxy/site/modules/status.rb +5 -3
  33. data/lib/rsmp/proxy/site/site_proxy.rb +68 -35
  34. data/lib/rsmp/proxy/site/sxl_selection.rb +54 -0
  35. data/lib/rsmp/proxy/supervisor/supervisor_proxy.rb +54 -18
  36. data/lib/rsmp/schema/message_resolution.rb +104 -0
  37. data/lib/rsmp/schema.rb +104 -22
  38. data/lib/rsmp/schema_error.rb +7 -1
  39. data/lib/rsmp/sxl/interface.rb +48 -0
  40. data/lib/rsmp/sxl/registry.rb +55 -0
  41. data/lib/rsmp/sxl/site_interface.rb +10 -0
  42. data/lib/rsmp/sxl/supervisor_interface.rb +21 -0
  43. data/lib/rsmp/tlc/detector_logic.rb +2 -2
  44. data/lib/rsmp/tlc/signal_group.rb +2 -2
  45. data/lib/rsmp/tlc/site_interface.rb +10 -0
  46. data/lib/rsmp/tlc/{traffic_controller_proxy.rb → supervisor_interface.rb} +19 -34
  47. data/lib/rsmp/tlc/traffic_controller.rb +10 -2
  48. data/lib/rsmp/tlc/traffic_controller_site.rb +4 -2
  49. data/lib/rsmp/tlc.rb +10 -0
  50. data/lib/rsmp/version.rb +1 -1
  51. data/lib/rsmp.rb +8 -1
  52. data/rsmp.gemspec +5 -5
  53. data/schemas/core/3.3.0/aggregated_status.json +25 -0
  54. data/schemas/core/3.3.0/aggregated_status_request.json +9 -0
  55. data/schemas/core/3.3.0/alarm.json +71 -0
  56. data/schemas/core/3.3.0/alarm_acknowledge.json +11 -0
  57. data/schemas/core/3.3.0/alarm_issue.json +44 -0
  58. data/schemas/core/3.3.0/alarm_request.json +3 -0
  59. data/schemas/core/3.3.0/alarm_suspend_resume.json +3 -0
  60. data/schemas/core/3.3.0/alarm_suspended_resumed.json +44 -0
  61. data/schemas/core/3.3.0/command_request.json +24 -0
  62. data/schemas/core/3.3.0/command_response.json +35 -0
  63. data/schemas/core/3.3.0/component_list.json +24 -0
  64. data/schemas/core/3.3.0/core.json +40 -0
  65. data/schemas/core/3.3.0/definitions.json +133 -0
  66. data/schemas/core/3.3.0/message_ack.json +11 -0
  67. data/schemas/core/3.3.0/message_not_ack.json +15 -0
  68. data/schemas/core/3.3.0/rsmp.json +142 -0
  69. data/schemas/core/3.3.0/status.json +21 -0
  70. data/schemas/core/3.3.0/status_request.json +5 -0
  71. data/schemas/core/3.3.0/status_response.json +41 -0
  72. data/schemas/core/3.3.0/status_subscribe.json +31 -0
  73. data/schemas/core/3.3.0/status_unsubscribe.json +5 -0
  74. data/schemas/core/3.3.0/status_update.json +41 -0
  75. data/schemas/core/3.3.0/version.json +144 -0
  76. data/schemas/core/3.3.0/watchdog.json +9 -0
  77. data/schemas/tlc/1.3.0/alarms/A0001.json +4 -0
  78. data/schemas/tlc/1.3.0/alarms/A0002.json +4 -0
  79. data/schemas/tlc/1.3.0/alarms/A0003.json +4 -0
  80. data/schemas/tlc/1.3.0/alarms/A0004.json +4 -0
  81. data/schemas/tlc/1.3.0/alarms/A0005.json +4 -0
  82. data/schemas/tlc/1.3.0/alarms/A0006.json +4 -0
  83. data/schemas/tlc/1.3.0/alarms/A0007.json +34 -0
  84. data/schemas/tlc/1.3.0/alarms/A0008.json +30 -0
  85. data/schemas/tlc/1.3.0/alarms/A0009.json +4 -0
  86. data/schemas/tlc/1.3.0/alarms/A0010.json +4 -0
  87. data/schemas/tlc/1.3.0/alarms/A0101.json +4 -0
  88. data/schemas/tlc/1.3.0/alarms/A0201.json +35 -0
  89. data/schemas/tlc/1.3.0/alarms/A0202.json +35 -0
  90. data/schemas/tlc/1.3.0/alarms/A0301.json +92 -0
  91. data/schemas/tlc/1.3.0/alarms/A0302.json +115 -0
  92. data/schemas/tlc/1.3.0/alarms/A0303.json +92 -0
  93. data/schemas/tlc/1.3.0/alarms/A0304.json +115 -0
  94. data/schemas/tlc/1.3.0/alarms/alarms.json +287 -0
  95. data/schemas/tlc/1.3.0/commands/M0001.json +92 -0
  96. data/schemas/tlc/1.3.0/commands/M0002.json +69 -0
  97. data/schemas/tlc/1.3.0/commands/M0003.json +69 -0
  98. data/schemas/tlc/1.3.0/commands/M0004.json +51 -0
  99. data/schemas/tlc/1.3.0/commands/M0005.json +69 -0
  100. data/schemas/tlc/1.3.0/commands/M0006.json +69 -0
  101. data/schemas/tlc/1.3.0/commands/M0007.json +51 -0
  102. data/schemas/tlc/1.3.0/commands/M0008.json +87 -0
  103. data/schemas/tlc/1.3.0/commands/M0010.json +51 -0
  104. data/schemas/tlc/1.3.0/commands/M0011.json +51 -0
  105. data/schemas/tlc/1.3.0/commands/M0012.json +51 -0
  106. data/schemas/tlc/1.3.0/commands/M0013.json +51 -0
  107. data/schemas/tlc/1.3.0/commands/M0014.json +69 -0
  108. data/schemas/tlc/1.3.0/commands/M0015.json +69 -0
  109. data/schemas/tlc/1.3.0/commands/M0016.json +51 -0
  110. data/schemas/tlc/1.3.0/commands/M0017.json +51 -0
  111. data/schemas/tlc/1.3.0/commands/M0018.json +69 -0
  112. data/schemas/tlc/1.3.0/commands/M0019.json +87 -0
  113. data/schemas/tlc/1.3.0/commands/M0020.json +87 -0
  114. data/schemas/tlc/1.3.0/commands/M0021.json +51 -0
  115. data/schemas/tlc/1.3.0/commands/M0022.json +249 -0
  116. data/schemas/tlc/1.3.0/commands/M0023.json +51 -0
  117. data/schemas/tlc/1.3.0/commands/M0024.json +33 -0
  118. data/schemas/tlc/1.3.0/commands/M0103.json +72 -0
  119. data/schemas/tlc/1.3.0/commands/M0104.json +141 -0
  120. data/schemas/tlc/1.3.0/commands/command_requests.json +8 -0
  121. data/schemas/tlc/1.3.0/commands/command_responses.json +8 -0
  122. data/schemas/tlc/1.3.0/commands/commands.json +415 -0
  123. data/schemas/tlc/1.3.0/defs/definitions.json +72 -0
  124. data/schemas/tlc/1.3.0/defs/guards.json +24 -0
  125. data/schemas/tlc/1.3.0/rsmp.json +74 -0
  126. data/schemas/tlc/1.3.0/statuses/S0001.json +109 -0
  127. data/schemas/tlc/1.3.0/statuses/S0002.json +36 -0
  128. data/schemas/tlc/1.3.0/statuses/S0003.json +36 -0
  129. data/schemas/tlc/1.3.0/statuses/S0004.json +36 -0
  130. data/schemas/tlc/1.3.0/statuses/S0005.json +72 -0
  131. data/schemas/tlc/1.3.0/statuses/S0006.json +54 -0
  132. data/schemas/tlc/1.3.0/statuses/S0007.json +73 -0
  133. data/schemas/tlc/1.3.0/statuses/S0008.json +73 -0
  134. data/schemas/tlc/1.3.0/statuses/S0009.json +73 -0
  135. data/schemas/tlc/1.3.0/statuses/S0010.json +73 -0
  136. data/schemas/tlc/1.3.0/statuses/S0011.json +73 -0
  137. data/schemas/tlc/1.3.0/statuses/S0012.json +73 -0
  138. data/schemas/tlc/1.3.0/statuses/S0013.json +54 -0
  139. data/schemas/tlc/1.3.0/statuses/S0014.json +55 -0
  140. data/schemas/tlc/1.3.0/statuses/S0015.json +55 -0
  141. data/schemas/tlc/1.3.0/statuses/S0016.json +36 -0
  142. data/schemas/tlc/1.3.0/statuses/S0017.json +36 -0
  143. data/schemas/tlc/1.3.0/statuses/S0018.json +61 -0
  144. data/schemas/tlc/1.3.0/statuses/S0019.json +36 -0
  145. data/schemas/tlc/1.3.0/statuses/S0020.json +54 -0
  146. data/schemas/tlc/1.3.0/statuses/S0021.json +37 -0
  147. data/schemas/tlc/1.3.0/statuses/S0022.json +36 -0
  148. data/schemas/tlc/1.3.0/statuses/S0023.json +37 -0
  149. data/schemas/tlc/1.3.0/statuses/S0024.json +36 -0
  150. data/schemas/tlc/1.3.0/statuses/S0025.json +162 -0
  151. data/schemas/tlc/1.3.0/statuses/S0026.json +36 -0
  152. data/schemas/tlc/1.3.0/statuses/S0027.json +36 -0
  153. data/schemas/tlc/1.3.0/statuses/S0028.json +36 -0
  154. data/schemas/tlc/1.3.0/statuses/S0029.json +36 -0
  155. data/schemas/tlc/1.3.0/statuses/S0030.json +36 -0
  156. data/schemas/tlc/1.3.0/statuses/S0031.json +36 -0
  157. data/schemas/tlc/1.3.0/statuses/S0032.json +73 -0
  158. data/schemas/tlc/1.3.0/statuses/S0033.json +77 -0
  159. data/schemas/tlc/1.3.0/statuses/S0034.json +36 -0
  160. data/schemas/tlc/1.3.0/statuses/S0035.json +49 -0
  161. data/schemas/tlc/1.3.0/statuses/S0091.json +40 -0
  162. data/schemas/tlc/1.3.0/statuses/S0092.json +40 -0
  163. data/schemas/tlc/1.3.0/statuses/S0095.json +36 -0
  164. data/schemas/tlc/1.3.0/statuses/S0096.json +126 -0
  165. data/schemas/tlc/1.3.0/statuses/S0097.json +54 -0
  166. data/schemas/tlc/1.3.0/statuses/S0098.json +72 -0
  167. data/schemas/tlc/1.3.0/statuses/S0201.json +54 -0
  168. data/schemas/tlc/1.3.0/statuses/S0202.json +54 -0
  169. data/schemas/tlc/1.3.0/statuses/S0203.json +54 -0
  170. data/schemas/tlc/1.3.0/statuses/S0204.json +198 -0
  171. data/schemas/tlc/1.3.0/statuses/S0205.json +54 -0
  172. data/schemas/tlc/1.3.0/statuses/S0206.json +54 -0
  173. data/schemas/tlc/1.3.0/statuses/S0207.json +54 -0
  174. data/schemas/tlc/1.3.0/statuses/S0208.json +198 -0
  175. data/schemas/tlc/1.3.0/statuses/statuses.json +787 -0
  176. data/schemas/tlc/1.3.0/sxl.yaml +2296 -0
  177. metadata +144 -12
@@ -0,0 +1,73 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "Isolated control.\nIsolated control mode indicates that the controller operates independently of any other traffic light controller. This may be different depending on traffic program (time plan).\nUsed to determine if the controller is operating independently or operating with other controllers (coordination).\nPlease note that all values in this status uses comma-separated lists - one value for each intersection, e.g. \"0\" and \"True\" (one intersection) or \"1,2\" and \"True,False\" (two intersections).",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "intersection",
8
+ "source",
9
+ "status"
10
+ ]
11
+ }
12
+ },
13
+ "if" : {
14
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
15
+ },
16
+ "then" : {},
17
+ "else" : {
18
+ "allOf" : [
19
+ {
20
+ "if" : {
21
+ "properties" : {
22
+ "n" : {
23
+ "const" : "intersection"
24
+ }
25
+ }
26
+ },
27
+ "then" : {
28
+ "properties" : {
29
+ "s" : {
30
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC.",
31
+ "$ref" : "../defs/definitions.json#/integer_list"
32
+ }
33
+ }
34
+ }
35
+ },
36
+ {
37
+ "if" : {
38
+ "properties" : {
39
+ "n" : {
40
+ "const" : "status"
41
+ }
42
+ }
43
+ },
44
+ "then" : {
45
+ "properties" : {
46
+ "s" : {
47
+ "description" : "False: Isolated control disabled\nTrue: Isolated control enabled (Vehicle actuated control or Fixed time control)",
48
+ "$ref" : "../defs/definitions.json#/boolean_list"
49
+ }
50
+ }
51
+ }
52
+ },
53
+ {
54
+ "if" : {
55
+ "properties" : {
56
+ "n" : {
57
+ "const" : "source"
58
+ }
59
+ }
60
+ },
61
+ "then" : {
62
+ "properties" : {
63
+ "s" : {
64
+ "description" : "Source of the status change",
65
+ "$ref" : "../defs/definitions.json#/string_list",
66
+ "pattern" : "(?-mix:^(operator_panel|calendar_clock|control_block|forced|startup|other)(?:,(operator_panel|calendar_clock|control_block|forced|startup|other))*$)"
67
+ }
68
+ }
69
+ }
70
+ }
71
+ ]
72
+ }
73
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "Yellow flash.\nThe controller shows yellow flash.\nYellow flash may be used during a serious fault (depending on configuration) or maintenance work. It can also be manually set using M0001.\nSome countries may use yellow flash as a normal operating mode, and not necessarily during fault.\nPlease note that all values in this status uses comma-separated lists - one value for each intersection, e.g. \"1,2\" and \"True,False\"",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "intersection",
8
+ "source",
9
+ "status"
10
+ ]
11
+ }
12
+ },
13
+ "if" : {
14
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
15
+ },
16
+ "then" : {},
17
+ "else" : {
18
+ "allOf" : [
19
+ {
20
+ "if" : {
21
+ "properties" : {
22
+ "n" : {
23
+ "const" : "intersection"
24
+ }
25
+ }
26
+ },
27
+ "then" : {
28
+ "properties" : {
29
+ "s" : {
30
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC.",
31
+ "$ref" : "../defs/definitions.json#/integer_list"
32
+ }
33
+ }
34
+ }
35
+ },
36
+ {
37
+ "if" : {
38
+ "properties" : {
39
+ "n" : {
40
+ "const" : "status"
41
+ }
42
+ }
43
+ },
44
+ "then" : {
45
+ "properties" : {
46
+ "s" : {
47
+ "description" : "False: Yellow flash disabled\nTrue: Yellow flash enabled",
48
+ "$ref" : "../defs/definitions.json#/boolean_list"
49
+ }
50
+ }
51
+ }
52
+ },
53
+ {
54
+ "if" : {
55
+ "properties" : {
56
+ "n" : {
57
+ "const" : "source"
58
+ }
59
+ }
60
+ },
61
+ "then" : {
62
+ "properties" : {
63
+ "s" : {
64
+ "description" : "Source of the status change",
65
+ "$ref" : "../defs/definitions.json#/string_list",
66
+ "pattern" : "(?-mix:^(operator_panel|calendar_clock|control_block|forced|startup|other)(?:,(operator_panel|calendar_clock|control_block|forced|startup|other))*$)"
67
+ }
68
+ }
69
+ }
70
+ }
71
+ ]
72
+ }
73
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "All red.\nThe controller show all red.\nAll red can be manually set using the controllers operating panel during maintenance work.\nPlease note that all values in this status uses comma-separated lists - one value for each intersection, e.g. \"1,2\" and \"True,False\"",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "intersection",
8
+ "source",
9
+ "status"
10
+ ]
11
+ }
12
+ },
13
+ "if" : {
14
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
15
+ },
16
+ "then" : {},
17
+ "else" : {
18
+ "allOf" : [
19
+ {
20
+ "if" : {
21
+ "properties" : {
22
+ "n" : {
23
+ "const" : "intersection"
24
+ }
25
+ }
26
+ },
27
+ "then" : {
28
+ "properties" : {
29
+ "s" : {
30
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC.",
31
+ "$ref" : "../defs/definitions.json#/integer_list"
32
+ }
33
+ }
34
+ }
35
+ },
36
+ {
37
+ "if" : {
38
+ "properties" : {
39
+ "n" : {
40
+ "const" : "status"
41
+ }
42
+ }
43
+ },
44
+ "then" : {
45
+ "properties" : {
46
+ "s" : {
47
+ "description" : "False: All red disabled\nTrue: All red enabled",
48
+ "$ref" : "../defs/definitions.json#/boolean_list"
49
+ }
50
+ }
51
+ }
52
+ },
53
+ {
54
+ "if" : {
55
+ "properties" : {
56
+ "n" : {
57
+ "const" : "source"
58
+ }
59
+ }
60
+ },
61
+ "then" : {
62
+ "properties" : {
63
+ "s" : {
64
+ "description" : "Source of the status change",
65
+ "$ref" : "../defs/definitions.json#/string_list",
66
+ "pattern" : "(?-mix:^(operator_panel|calendar_clock|control_block|forced|startup|other)(?:,(operator_panel|calendar_clock|control_block|forced|startup|other))*$)"
67
+ }
68
+ }
69
+ }
70
+ }
71
+ ]
72
+ }
73
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "Police key\nThe controller is forced to dark mode or yellow flash.\nThe \"police key\" is an external control switch present in some controllers that manually switches the controller to either dark mode or yellow flash.\nPlease note that all values in this status uses comma-separated lists - one value for each intersection, e.g. \"1,2\" and \"0,1\"",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "intersection",
8
+ "status"
9
+ ]
10
+ }
11
+ },
12
+ "if" : {
13
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
14
+ },
15
+ "then" : {},
16
+ "else" : {
17
+ "allOf" : [
18
+ {
19
+ "if" : {
20
+ "properties" : {
21
+ "n" : {
22
+ "const" : "intersection"
23
+ }
24
+ }
25
+ },
26
+ "then" : {
27
+ "properties" : {
28
+ "s" : {
29
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC.",
30
+ "$ref" : "../defs/definitions.json#/integer_list"
31
+ }
32
+ }
33
+ }
34
+ },
35
+ {
36
+ "if" : {
37
+ "properties" : {
38
+ "n" : {
39
+ "const" : "status"
40
+ }
41
+ }
42
+ },
43
+ "then" : {
44
+ "properties" : {
45
+ "s" : {
46
+ "$ref" : "../defs/definitions.json#/integer_list",
47
+ "pattern" : "(?-mix:^(0|1|2|3)(?:,(0|1|2|3))*$)"
48
+ }
49
+ }
50
+ }
51
+ }
52
+ ]
53
+ }
54
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "Current time plan.\nThe current time plan (signal program) used in the controller. There may be 1-255 predefined time plans.\nThe time plan (signal program) may change signal timings, cycle time, control strategy and much more. Typical usage is scenario based control where change of program is used to change priority etc.",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "source",
8
+ "status"
9
+ ]
10
+ }
11
+ },
12
+ "if" : {
13
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
14
+ },
15
+ "then" : {},
16
+ "else" : {
17
+ "allOf" : [
18
+ {
19
+ "if" : {
20
+ "properties" : {
21
+ "n" : {
22
+ "const" : "status"
23
+ }
24
+ }
25
+ },
26
+ "then" : {
27
+ "properties" : {
28
+ "s" : {
29
+ "description" : "Current time plan",
30
+ "type" : "string"
31
+ }
32
+ }
33
+ }
34
+ },
35
+ {
36
+ "if" : {
37
+ "properties" : {
38
+ "n" : {
39
+ "const" : "source"
40
+ }
41
+ }
42
+ },
43
+ "then" : {
44
+ "properties" : {
45
+ "s" : {
46
+ "description" : "Source of the status change",
47
+ "$ref" : "../defs/definitions.json#/string_list",
48
+ "pattern" : "(?-mix:^(operator_panel|calendar_clock|control_block|forced|startup|other)(?:,(operator_panel|calendar_clock|control_block|forced|startup|other))*$)"
49
+ }
50
+ }
51
+ }
52
+ }
53
+ ]
54
+ }
55
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "Current traffic situation.\nThe current traffic situation used in the controller.\nUsed for area-based control where the M0003 command can be sent to a master traffic light controller about which predefined traffic situation to use (1-255).\nTraffic situation is a concept used to divide multiple TLC's into areas and sub-areas. The traffic situation gives the possibility to change the TLC sub-area dynamically depending on the time of day and the traffic flow. Depending on the traffic situation each TLC selects the time plan dynamically.",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "source",
8
+ "status"
9
+ ]
10
+ }
11
+ },
12
+ "if" : {
13
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
14
+ },
15
+ "then" : {},
16
+ "else" : {
17
+ "allOf" : [
18
+ {
19
+ "if" : {
20
+ "properties" : {
21
+ "n" : {
22
+ "const" : "status"
23
+ }
24
+ }
25
+ },
26
+ "then" : {
27
+ "properties" : {
28
+ "s" : {
29
+ "description" : "Current traffic situation",
30
+ "type" : "string"
31
+ }
32
+ }
33
+ }
34
+ },
35
+ {
36
+ "if" : {
37
+ "properties" : {
38
+ "n" : {
39
+ "const" : "source"
40
+ }
41
+ }
42
+ },
43
+ "then" : {
44
+ "properties" : {
45
+ "s" : {
46
+ "description" : "Source of the status change",
47
+ "$ref" : "../defs/definitions.json#/string_list",
48
+ "pattern" : "(?-mix:^(operator_panel|calendar_clock|control_block|forced|startup|other)(?:,(operator_panel|calendar_clock|control_block|forced|startup|other))*$)"
49
+ }
50
+ }
51
+ }
52
+ }
53
+ ]
54
+ }
55
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "Number of detector logics.\nCan be used by the management system to check the number of detector logics configured in the controller.",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "number"
8
+ ]
9
+ }
10
+ },
11
+ "if" : {
12
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
13
+ },
14
+ "then" : {},
15
+ "else" : {
16
+ "allOf" : [
17
+ {
18
+ "if" : {
19
+ "properties" : {
20
+ "n" : {
21
+ "const" : "number"
22
+ }
23
+ }
24
+ },
25
+ "then" : {
26
+ "properties" : {
27
+ "s" : {
28
+ "description" : "Number of detector logics",
29
+ "type" : "string"
30
+ }
31
+ }
32
+ }
33
+ }
34
+ ]
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "Number of signal groups.\nCan be used for the management system to check the number of signal groups configured in the controller.",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "number"
8
+ ]
9
+ }
10
+ },
11
+ "if" : {
12
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
13
+ },
14
+ "then" : {},
15
+ "else" : {
16
+ "allOf" : [
17
+ {
18
+ "if" : {
19
+ "properties" : {
20
+ "n" : {
21
+ "const" : "number"
22
+ }
23
+ }
24
+ },
25
+ "then" : {
26
+ "properties" : {
27
+ "s" : {
28
+ "description" : "Number of signal groups",
29
+ "type" : "string"
30
+ }
31
+ }
32
+ }
33
+ }
34
+ ]
35
+ }
36
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "description" : "Number of time plans\nCan be used for the management system to check the number of time plans configured in the controller.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "number"
9
+ ]
10
+ }
11
+ }
12
+ },
13
+ {
14
+ "if" : {
15
+ "required" : [
16
+ "q"
17
+ ],
18
+ "properties" : {
19
+ "q" : {
20
+ "const" : "undefined"
21
+ }
22
+ }
23
+ },
24
+ "then" : {
25
+ "s" : {
26
+ "type" : "null"
27
+ }
28
+ },
29
+ "else" : {
30
+ "allOf" : [
31
+ {
32
+ "if" : {
33
+ "required" : [
34
+ "n"
35
+ ],
36
+ "properties" : {
37
+ "n" : {
38
+ "const" : "number"
39
+ }
40
+ }
41
+ },
42
+ "then" : {
43
+ "properties" : {
44
+ "s" : {
45
+ "allOf" : [
46
+ {
47
+ "description" : "Number of time plans (depreciated)"
48
+ },
49
+ {
50
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
51
+ }
52
+ ]
53
+ }
54
+ }
55
+ }
56
+ }
57
+ ]
58
+ }
59
+ }
60
+ ]
61
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "Number of traffic situations.\nCan be used for the management system to check the number of traffic situations configured in the controller.",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "number"
8
+ ]
9
+ }
10
+ },
11
+ "if" : {
12
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
13
+ },
14
+ "then" : {},
15
+ "else" : {
16
+ "allOf" : [
17
+ {
18
+ "if" : {
19
+ "properties" : {
20
+ "n" : {
21
+ "const" : "number"
22
+ }
23
+ }
24
+ },
25
+ "then" : {
26
+ "properties" : {
27
+ "s" : {
28
+ "description" : "Number of traffic situations",
29
+ "type" : "string"
30
+ }
31
+ }
32
+ }
33
+ }
34
+ ]
35
+ }
36
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "Control mode.\nCan be used for the management system to check the current control mode (startup, normal, standby, failure, test).\nPlease note that all values in this status uses comma-separated lists - one value for each intersection, e.g. \"1,2\" and \"startup,control\"",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "controlmode",
8
+ "intersection"
9
+ ]
10
+ }
11
+ },
12
+ "if" : {
13
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
14
+ },
15
+ "then" : {},
16
+ "else" : {
17
+ "allOf" : [
18
+ {
19
+ "if" : {
20
+ "properties" : {
21
+ "n" : {
22
+ "const" : "intersection"
23
+ }
24
+ }
25
+ },
26
+ "then" : {
27
+ "properties" : {
28
+ "s" : {
29
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC.",
30
+ "$ref" : "../defs/definitions.json#/integer_list"
31
+ }
32
+ }
33
+ }
34
+ },
35
+ {
36
+ "if" : {
37
+ "properties" : {
38
+ "n" : {
39
+ "const" : "controlmode"
40
+ }
41
+ }
42
+ },
43
+ "then" : {
44
+ "properties" : {
45
+ "s" : {
46
+ "$ref" : "../defs/definitions.json#/string_list",
47
+ "pattern" : "(?-mix:^(startup|control|standby|failure|test)(?:,(startup|control|standby|failure|test))*$)"
48
+ }
49
+ }
50
+ }
51
+ }
52
+ ]
53
+ }
54
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "Manually set detector logic.\nProvides status of detector logic (1-255) regarding if they are either forced to true or false.\nCan be used to connect RSMP compatible detection equipment to the traffic light controller. Can also be used for prioritization.",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "detectorlogics"
8
+ ]
9
+ }
10
+ },
11
+ "if" : {
12
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
13
+ },
14
+ "then" : {},
15
+ "else" : {
16
+ "allOf" : [
17
+ {
18
+ "if" : {
19
+ "properties" : {
20
+ "n" : {
21
+ "const" : "detectorlogics"
22
+ }
23
+ }
24
+ },
25
+ "then" : {
26
+ "properties" : {
27
+ "s" : {
28
+ "description" : "Manually set detector logic as text field.\nEach character represent the state in consecutive order,\nwhere the leftmost character starts with detector logic 1.\n0 : Detector logic not manually set\n1 : Detector logic manually set\n- : Detector logic is undefined/does not exist",
29
+ "type" : "string",
30
+ "pattern" : "^[01]*$"
31
+ }
32
+ }
33
+ }
34
+ }
35
+ ]
36
+ }
37
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
3
+ "description" : "List of time plans.\nProvides a list of the configured time plans which is possible to use. This status was added due to status S0018 only provided the total number of time plans and not which were possible to use with M0002.\nCan be used for the management system to check the number of time plans configured in the controller.",
4
+ "properties" : {
5
+ "n" : {
6
+ "enum" : [
7
+ "status"
8
+ ]
9
+ }
10
+ },
11
+ "if" : {
12
+ "$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
13
+ },
14
+ "then" : {},
15
+ "else" : {
16
+ "allOf" : [
17
+ {
18
+ "if" : {
19
+ "properties" : {
20
+ "n" : {
21
+ "const" : "status"
22
+ }
23
+ }
24
+ },
25
+ "then" : {
26
+ "properties" : {
27
+ "s" : {
28
+ "description" : "Comma separated list of configured time plans. E.g. \"1,2,3,5\"",
29
+ "$ref" : "../defs/definitions.json#/integer_list"
30
+ }
31
+ }
32
+ }
33
+ }
34
+ ]
35
+ }
36
+ }