rsmp_schema 0.5.3 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rspec.yaml +1 -1
  3. data/.tool-versions +1 -1
  4. data/Gemfile.lock +24 -22
  5. data/examples/validate.rb +1 -1
  6. data/lib/rsmp_schema/version.rb +1 -1
  7. data/rsmp_schema.gemspec +5 -5
  8. data/schemas/core/3.2.2/core.json +39 -0
  9. data/schemas/core/3.2.2/rsmp.json +133 -0
  10. data/schemas/tlc/1.2/statuses/S0006.json +3 -3
  11. data/schemas/tlc/1.2/sxl.yaml +4 -4
  12. data/schemas/tlc/1.2.1/alarms/A0001.json +3 -0
  13. data/schemas/tlc/1.2.1/alarms/A0002.json +3 -0
  14. data/schemas/tlc/1.2.1/alarms/A0003.json +3 -0
  15. data/schemas/tlc/1.2.1/alarms/A0004.json +3 -0
  16. data/schemas/tlc/1.2.1/alarms/A0005.json +3 -0
  17. data/schemas/tlc/1.2.1/alarms/A0006.json +3 -0
  18. data/schemas/tlc/1.2.1/alarms/A0007.json +59 -0
  19. data/schemas/tlc/1.2.1/alarms/A0008.json +61 -0
  20. data/schemas/tlc/1.2.1/alarms/A0009.json +3 -0
  21. data/schemas/tlc/1.2.1/alarms/A0010.json +3 -0
  22. data/schemas/tlc/1.2.1/alarms/A0101.json +3 -0
  23. data/schemas/tlc/1.2.1/alarms/A0201.json +60 -0
  24. data/schemas/tlc/1.2.1/alarms/A0202.json +60 -0
  25. data/schemas/tlc/1.2.1/alarms/A0301.json +132 -0
  26. data/schemas/tlc/1.2.1/alarms/A0302.json +158 -0
  27. data/schemas/tlc/1.2.1/alarms/A0303.json +132 -0
  28. data/schemas/tlc/1.2.1/alarms/A0304.json +158 -0
  29. data/schemas/tlc/1.2.1/alarms/alarms.json +286 -0
  30. data/schemas/tlc/1.2.1/commands/M0001.json +138 -0
  31. data/schemas/tlc/1.2.1/commands/M0002.json +112 -0
  32. data/schemas/tlc/1.2.1/commands/M0003.json +112 -0
  33. data/schemas/tlc/1.2.1/commands/M0004.json +85 -0
  34. data/schemas/tlc/1.2.1/commands/M0005.json +112 -0
  35. data/schemas/tlc/1.2.1/commands/M0006.json +112 -0
  36. data/schemas/tlc/1.2.1/commands/M0007.json +85 -0
  37. data/schemas/tlc/1.2.1/commands/M0008.json +112 -0
  38. data/schemas/tlc/1.2.1/commands/M0010.json +85 -0
  39. data/schemas/tlc/1.2.1/commands/M0011.json +85 -0
  40. data/schemas/tlc/1.2.1/commands/M0012.json +79 -0
  41. data/schemas/tlc/1.2.1/commands/M0013.json +79 -0
  42. data/schemas/tlc/1.2.1/commands/M0014.json +106 -0
  43. data/schemas/tlc/1.2.1/commands/M0015.json +112 -0
  44. data/schemas/tlc/1.2.1/commands/M0016.json +79 -0
  45. data/schemas/tlc/1.2.1/commands/M0017.json +79 -0
  46. data/schemas/tlc/1.2.1/commands/M0018.json +112 -0
  47. data/schemas/tlc/1.2.1/commands/M0019.json +139 -0
  48. data/schemas/tlc/1.2.1/commands/M0020.json +139 -0
  49. data/schemas/tlc/1.2.1/commands/M0021.json +79 -0
  50. data/schemas/tlc/1.2.1/commands/M0022.json +355 -0
  51. data/schemas/tlc/1.2.1/commands/M0023.json +85 -0
  52. data/schemas/tlc/1.2.1/commands/M0103.json +103 -0
  53. data/schemas/tlc/1.2.1/commands/M0104.json +220 -0
  54. data/schemas/tlc/1.2.1/commands/command_requests.json +7 -0
  55. data/schemas/tlc/1.2.1/commands/command_responses.json +7 -0
  56. data/schemas/tlc/1.2.1/commands/commands.json +398 -0
  57. data/schemas/tlc/1.2.1/rsmp.json +73 -0
  58. data/schemas/tlc/1.2.1/statuses/S0001.json +137 -0
  59. data/schemas/tlc/1.2.1/statuses/S0002.json +55 -0
  60. data/schemas/tlc/1.2.1/statuses/S0003.json +55 -0
  61. data/schemas/tlc/1.2.1/statuses/S0004.json +55 -0
  62. data/schemas/tlc/1.2.1/statuses/S0005.json +112 -0
  63. data/schemas/tlc/1.2.1/statuses/S0006.json +88 -0
  64. data/schemas/tlc/1.2.1/statuses/S0007.json +116 -0
  65. data/schemas/tlc/1.2.1/statuses/S0008.json +116 -0
  66. data/schemas/tlc/1.2.1/statuses/S0009.json +116 -0
  67. data/schemas/tlc/1.2.1/statuses/S0010.json +116 -0
  68. data/schemas/tlc/1.2.1/statuses/S0011.json +116 -0
  69. data/schemas/tlc/1.2.1/statuses/S0012.json +116 -0
  70. data/schemas/tlc/1.2.1/statuses/S0013.json +88 -0
  71. data/schemas/tlc/1.2.1/statuses/S0014.json +90 -0
  72. data/schemas/tlc/1.2.1/statuses/S0015.json +90 -0
  73. data/schemas/tlc/1.2.1/statuses/S0016.json +61 -0
  74. data/schemas/tlc/1.2.1/statuses/S0017.json +61 -0
  75. data/schemas/tlc/1.2.1/statuses/S0018.json +61 -0
  76. data/schemas/tlc/1.2.1/statuses/S0019.json +61 -0
  77. data/schemas/tlc/1.2.1/statuses/S0020.json +88 -0
  78. data/schemas/tlc/1.2.1/statuses/S0021.json +56 -0
  79. data/schemas/tlc/1.2.1/statuses/S0022.json +55 -0
  80. data/schemas/tlc/1.2.1/statuses/S0023.json +56 -0
  81. data/schemas/tlc/1.2.1/statuses/S0024.json +56 -0
  82. data/schemas/tlc/1.2.1/statuses/S0025.json +250 -0
  83. data/schemas/tlc/1.2.1/statuses/S0026.json +55 -0
  84. data/schemas/tlc/1.2.1/statuses/S0027.json +55 -0
  85. data/schemas/tlc/1.2.1/statuses/S0028.json +55 -0
  86. data/schemas/tlc/1.2.1/statuses/S0029.json +55 -0
  87. data/schemas/tlc/1.2.1/statuses/S0030.json +55 -0
  88. data/schemas/tlc/1.2.1/statuses/S0031.json +55 -0
  89. data/schemas/tlc/1.2.1/statuses/S0032.json +116 -0
  90. data/schemas/tlc/1.2.1/statuses/S0033.json +114 -0
  91. data/schemas/tlc/1.2.1/statuses/S0034.json +61 -0
  92. data/schemas/tlc/1.2.1/statuses/S0035.json +74 -0
  93. data/schemas/tlc/1.2.1/statuses/S0091.json +65 -0
  94. data/schemas/tlc/1.2.1/statuses/S0092.json +65 -0
  95. data/schemas/tlc/1.2.1/statuses/S0095.json +55 -0
  96. data/schemas/tlc/1.2.1/statuses/S0096.json +196 -0
  97. data/schemas/tlc/1.2.1/statuses/S0097.json +82 -0
  98. data/schemas/tlc/1.2.1/statuses/S0098.json +103 -0
  99. data/schemas/tlc/1.2.1/statuses/S0201.json +88 -0
  100. data/schemas/tlc/1.2.1/statuses/S0202.json +88 -0
  101. data/schemas/tlc/1.2.1/statuses/S0203.json +88 -0
  102. data/schemas/tlc/1.2.1/statuses/S0204.json +304 -0
  103. data/schemas/tlc/1.2.1/statuses/S0205.json +88 -0
  104. data/schemas/tlc/1.2.1/statuses/S0206.json +88 -0
  105. data/schemas/tlc/1.2.1/statuses/S0207.json +88 -0
  106. data/schemas/tlc/1.2.1/statuses/S0208.json +304 -0
  107. data/schemas/tlc/1.2.1/statuses/statuses.json +786 -0
  108. data/schemas/tlc/1.2.1/sxl.yaml +2109 -0
  109. metadata +112 -13
@@ -0,0 +1,116 @@
1
+ {
2
+ "description" : "Manual control.\nTraffic control deactivated in controller.\nSignal timings is controlled manually by service personnel using the operating panel of the controller.\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).",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "intersection",
9
+ "source",
10
+ "status"
11
+ ]
12
+ }
13
+ }
14
+ },
15
+ {
16
+ "if" : {
17
+ "required" : [
18
+ "q"
19
+ ],
20
+ "properties" : {
21
+ "q" : {
22
+ "const" : "undefined"
23
+ }
24
+ }
25
+ },
26
+ "then" : {
27
+ "s" : {
28
+ "type" : "null"
29
+ }
30
+ },
31
+ "else" : {
32
+ "allOf" : [
33
+ {
34
+ "if" : {
35
+ "required" : [
36
+ "n"
37
+ ],
38
+ "properties" : {
39
+ "n" : {
40
+ "const" : "intersection"
41
+ }
42
+ }
43
+ },
44
+ "then" : {
45
+ "properties" : {
46
+ "s" : {
47
+ "allOf" : [
48
+ {
49
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC."
50
+ },
51
+ {
52
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer_list"
53
+ }
54
+ ]
55
+ }
56
+ }
57
+ }
58
+ },
59
+ {
60
+ "if" : {
61
+ "required" : [
62
+ "n"
63
+ ],
64
+ "properties" : {
65
+ "n" : {
66
+ "const" : "status"
67
+ }
68
+ }
69
+ },
70
+ "then" : {
71
+ "properties" : {
72
+ "s" : {
73
+ "allOf" : [
74
+ {
75
+ "description" : "False: Manual control inactive\nTrue: Manual control active"
76
+ },
77
+ {
78
+ "$ref" : "../../../core/3.1.2/definitions.json#/boolean_list"
79
+ }
80
+ ]
81
+ }
82
+ }
83
+ }
84
+ },
85
+ {
86
+ "if" : {
87
+ "required" : [
88
+ "n"
89
+ ],
90
+ "properties" : {
91
+ "n" : {
92
+ "const" : "source"
93
+ }
94
+ }
95
+ },
96
+ "then" : {
97
+ "properties" : {
98
+ "s" : {
99
+ "allOf" : [
100
+ {
101
+ "description" : "Source of the status change",
102
+ "pattern" : "(?-mix:^(operator_panel|calendar_clock|control_block|forced|startup|other)(?:,(operator_panel|calendar_clock|control_block|forced|startup|other))*$)"
103
+ },
104
+ {
105
+ "$ref" : "../../../core/3.1.2/definitions.json#/string_list"
106
+ }
107
+ ]
108
+ }
109
+ }
110
+ }
111
+ }
112
+ ]
113
+ }
114
+ }
115
+ ]
116
+ }
@@ -0,0 +1,116 @@
1
+ {
2
+ "description" : "Fixed time control.\nTraffic actuated control deactivated and a pre-timed control is used.\nUsually only used in case normal detectors can't be used, e.g. during maintenance work.\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).",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "intersection",
9
+ "source",
10
+ "status"
11
+ ]
12
+ }
13
+ }
14
+ },
15
+ {
16
+ "if" : {
17
+ "required" : [
18
+ "q"
19
+ ],
20
+ "properties" : {
21
+ "q" : {
22
+ "const" : "undefined"
23
+ }
24
+ }
25
+ },
26
+ "then" : {
27
+ "s" : {
28
+ "type" : "null"
29
+ }
30
+ },
31
+ "else" : {
32
+ "allOf" : [
33
+ {
34
+ "if" : {
35
+ "required" : [
36
+ "n"
37
+ ],
38
+ "properties" : {
39
+ "n" : {
40
+ "const" : "intersection"
41
+ }
42
+ }
43
+ },
44
+ "then" : {
45
+ "properties" : {
46
+ "s" : {
47
+ "allOf" : [
48
+ {
49
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC."
50
+ },
51
+ {
52
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer_list"
53
+ }
54
+ ]
55
+ }
56
+ }
57
+ }
58
+ },
59
+ {
60
+ "if" : {
61
+ "required" : [
62
+ "n"
63
+ ],
64
+ "properties" : {
65
+ "n" : {
66
+ "const" : "status"
67
+ }
68
+ }
69
+ },
70
+ "then" : {
71
+ "properties" : {
72
+ "s" : {
73
+ "allOf" : [
74
+ {
75
+ "description" : "False: Fixed time control inactive\nTrue: Fixed time control active"
76
+ },
77
+ {
78
+ "$ref" : "../../../core/3.1.2/definitions.json#/boolean_list"
79
+ }
80
+ ]
81
+ }
82
+ }
83
+ }
84
+ },
85
+ {
86
+ "if" : {
87
+ "required" : [
88
+ "n"
89
+ ],
90
+ "properties" : {
91
+ "n" : {
92
+ "const" : "source"
93
+ }
94
+ }
95
+ },
96
+ "then" : {
97
+ "properties" : {
98
+ "s" : {
99
+ "allOf" : [
100
+ {
101
+ "description" : "Source of the status change",
102
+ "pattern" : "(?-mix:^(operator_panel|calendar_clock|control_block|forced|startup|other)(?:,(operator_panel|calendar_clock|control_block|forced|startup|other))*$)"
103
+ },
104
+ {
105
+ "$ref" : "../../../core/3.1.2/definitions.json#/string_list"
106
+ }
107
+ ]
108
+ }
109
+ }
110
+ }
111
+ }
112
+ ]
113
+ }
114
+ }
115
+ ]
116
+ }
@@ -0,0 +1,116 @@
1
+ {
2
+ "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).",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "intersection",
9
+ "source",
10
+ "status"
11
+ ]
12
+ }
13
+ }
14
+ },
15
+ {
16
+ "if" : {
17
+ "required" : [
18
+ "q"
19
+ ],
20
+ "properties" : {
21
+ "q" : {
22
+ "const" : "undefined"
23
+ }
24
+ }
25
+ },
26
+ "then" : {
27
+ "s" : {
28
+ "type" : "null"
29
+ }
30
+ },
31
+ "else" : {
32
+ "allOf" : [
33
+ {
34
+ "if" : {
35
+ "required" : [
36
+ "n"
37
+ ],
38
+ "properties" : {
39
+ "n" : {
40
+ "const" : "intersection"
41
+ }
42
+ }
43
+ },
44
+ "then" : {
45
+ "properties" : {
46
+ "s" : {
47
+ "allOf" : [
48
+ {
49
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC."
50
+ },
51
+ {
52
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer_list"
53
+ }
54
+ ]
55
+ }
56
+ }
57
+ }
58
+ },
59
+ {
60
+ "if" : {
61
+ "required" : [
62
+ "n"
63
+ ],
64
+ "properties" : {
65
+ "n" : {
66
+ "const" : "status"
67
+ }
68
+ }
69
+ },
70
+ "then" : {
71
+ "properties" : {
72
+ "s" : {
73
+ "allOf" : [
74
+ {
75
+ "description" : "False: Isolated control disabled\nTrue: Isolated control enabled (Vehicle actuated control or Fixed time control)"
76
+ },
77
+ {
78
+ "$ref" : "../../../core/3.1.2/definitions.json#/boolean_list"
79
+ }
80
+ ]
81
+ }
82
+ }
83
+ }
84
+ },
85
+ {
86
+ "if" : {
87
+ "required" : [
88
+ "n"
89
+ ],
90
+ "properties" : {
91
+ "n" : {
92
+ "const" : "source"
93
+ }
94
+ }
95
+ },
96
+ "then" : {
97
+ "properties" : {
98
+ "s" : {
99
+ "allOf" : [
100
+ {
101
+ "description" : "Source of the status change",
102
+ "pattern" : "(?-mix:^(operator_panel|calendar_clock|control_block|forced|startup|other)(?:,(operator_panel|calendar_clock|control_block|forced|startup|other))*$)"
103
+ },
104
+ {
105
+ "$ref" : "../../../core/3.1.2/definitions.json#/string_list"
106
+ }
107
+ ]
108
+ }
109
+ }
110
+ }
111
+ }
112
+ ]
113
+ }
114
+ }
115
+ ]
116
+ }
@@ -0,0 +1,116 @@
1
+ {
2
+ "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 an 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\"",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "intersection",
9
+ "source",
10
+ "status"
11
+ ]
12
+ }
13
+ }
14
+ },
15
+ {
16
+ "if" : {
17
+ "required" : [
18
+ "q"
19
+ ],
20
+ "properties" : {
21
+ "q" : {
22
+ "const" : "undefined"
23
+ }
24
+ }
25
+ },
26
+ "then" : {
27
+ "s" : {
28
+ "type" : "null"
29
+ }
30
+ },
31
+ "else" : {
32
+ "allOf" : [
33
+ {
34
+ "if" : {
35
+ "required" : [
36
+ "n"
37
+ ],
38
+ "properties" : {
39
+ "n" : {
40
+ "const" : "intersection"
41
+ }
42
+ }
43
+ },
44
+ "then" : {
45
+ "properties" : {
46
+ "s" : {
47
+ "allOf" : [
48
+ {
49
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC."
50
+ },
51
+ {
52
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer_list"
53
+ }
54
+ ]
55
+ }
56
+ }
57
+ }
58
+ },
59
+ {
60
+ "if" : {
61
+ "required" : [
62
+ "n"
63
+ ],
64
+ "properties" : {
65
+ "n" : {
66
+ "const" : "status"
67
+ }
68
+ }
69
+ },
70
+ "then" : {
71
+ "properties" : {
72
+ "s" : {
73
+ "allOf" : [
74
+ {
75
+ "description" : "False: Yellow flash disabled\nTrue: Yellow flash enabled"
76
+ },
77
+ {
78
+ "$ref" : "../../../core/3.1.2/definitions.json#/boolean_list"
79
+ }
80
+ ]
81
+ }
82
+ }
83
+ }
84
+ },
85
+ {
86
+ "if" : {
87
+ "required" : [
88
+ "n"
89
+ ],
90
+ "properties" : {
91
+ "n" : {
92
+ "const" : "source"
93
+ }
94
+ }
95
+ },
96
+ "then" : {
97
+ "properties" : {
98
+ "s" : {
99
+ "allOf" : [
100
+ {
101
+ "description" : "Source of the status change",
102
+ "pattern" : "(?-mix:^(operator_panel|calendar_clock|control_block|forced|startup|other)(?:,(operator_panel|calendar_clock|control_block|forced|startup|other))*$)"
103
+ },
104
+ {
105
+ "$ref" : "../../../core/3.1.2/definitions.json#/string_list"
106
+ }
107
+ ]
108
+ }
109
+ }
110
+ }
111
+ }
112
+ ]
113
+ }
114
+ }
115
+ ]
116
+ }
@@ -0,0 +1,116 @@
1
+ {
2
+ "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\"",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "intersection",
9
+ "source",
10
+ "status"
11
+ ]
12
+ }
13
+ }
14
+ },
15
+ {
16
+ "if" : {
17
+ "required" : [
18
+ "q"
19
+ ],
20
+ "properties" : {
21
+ "q" : {
22
+ "const" : "undefined"
23
+ }
24
+ }
25
+ },
26
+ "then" : {
27
+ "s" : {
28
+ "type" : "null"
29
+ }
30
+ },
31
+ "else" : {
32
+ "allOf" : [
33
+ {
34
+ "if" : {
35
+ "required" : [
36
+ "n"
37
+ ],
38
+ "properties" : {
39
+ "n" : {
40
+ "const" : "intersection"
41
+ }
42
+ }
43
+ },
44
+ "then" : {
45
+ "properties" : {
46
+ "s" : {
47
+ "allOf" : [
48
+ {
49
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC."
50
+ },
51
+ {
52
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer_list"
53
+ }
54
+ ]
55
+ }
56
+ }
57
+ }
58
+ },
59
+ {
60
+ "if" : {
61
+ "required" : [
62
+ "n"
63
+ ],
64
+ "properties" : {
65
+ "n" : {
66
+ "const" : "status"
67
+ }
68
+ }
69
+ },
70
+ "then" : {
71
+ "properties" : {
72
+ "s" : {
73
+ "allOf" : [
74
+ {
75
+ "description" : "False: All red disabled\nTrue: All red enabled"
76
+ },
77
+ {
78
+ "$ref" : "../../../core/3.1.2/definitions.json#/boolean_list"
79
+ }
80
+ ]
81
+ }
82
+ }
83
+ }
84
+ },
85
+ {
86
+ "if" : {
87
+ "required" : [
88
+ "n"
89
+ ],
90
+ "properties" : {
91
+ "n" : {
92
+ "const" : "source"
93
+ }
94
+ }
95
+ },
96
+ "then" : {
97
+ "properties" : {
98
+ "s" : {
99
+ "allOf" : [
100
+ {
101
+ "description" : "Source of the status change",
102
+ "pattern" : "(?-mix:^(operator_panel|calendar_clock|control_block|forced|startup|other)(?:,(operator_panel|calendar_clock|control_block|forced|startup|other))*$)"
103
+ },
104
+ {
105
+ "$ref" : "../../../core/3.1.2/definitions.json#/string_list"
106
+ }
107
+ ]
108
+ }
109
+ }
110
+ }
111
+ }
112
+ ]
113
+ }
114
+ }
115
+ ]
116
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "description" : "Police key\nThe controller is forced to dark mode or yellow flash.\nThe \"police key\" is a 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\"",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "intersection",
9
+ "status"
10
+ ]
11
+ }
12
+ }
13
+ },
14
+ {
15
+ "if" : {
16
+ "required" : [
17
+ "q"
18
+ ],
19
+ "properties" : {
20
+ "q" : {
21
+ "const" : "undefined"
22
+ }
23
+ }
24
+ },
25
+ "then" : {
26
+ "s" : {
27
+ "type" : "null"
28
+ }
29
+ },
30
+ "else" : {
31
+ "allOf" : [
32
+ {
33
+ "if" : {
34
+ "required" : [
35
+ "n"
36
+ ],
37
+ "properties" : {
38
+ "n" : {
39
+ "const" : "intersection"
40
+ }
41
+ }
42
+ },
43
+ "then" : {
44
+ "properties" : {
45
+ "s" : {
46
+ "allOf" : [
47
+ {
48
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC."
49
+ },
50
+ {
51
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer_list"
52
+ }
53
+ ]
54
+ }
55
+ }
56
+ }
57
+ },
58
+ {
59
+ "if" : {
60
+ "required" : [
61
+ "n"
62
+ ],
63
+ "properties" : {
64
+ "n" : {
65
+ "const" : "status"
66
+ }
67
+ }
68
+ },
69
+ "then" : {
70
+ "properties" : {
71
+ "s" : {
72
+ "allOf" : [
73
+ {
74
+ "pattern" : "(?-mix:^(0|1|2|3)(?:,(0|1|2|3))*$)"
75
+ },
76
+ {
77
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer_list"
78
+ }
79
+ ]
80
+ }
81
+ }
82
+ }
83
+ }
84
+ ]
85
+ }
86
+ }
87
+ ]
88
+ }