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,137 @@
1
+ {
2
+ "description" : "Signal group status.\nProvides the status of each signal group, including basic information such as green, yellow and red. But also detailed technical information.\nCan be used to draw a live signal group diagram as well provide diagnostic information about the performance of the controller.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "basecyclecounter",
9
+ "cyclecounter",
10
+ "signalgroupstatus",
11
+ "stage"
12
+ ]
13
+ }
14
+ }
15
+ },
16
+ {
17
+ "if" : {
18
+ "required" : [
19
+ "q"
20
+ ],
21
+ "properties" : {
22
+ "q" : {
23
+ "const" : "undefined"
24
+ }
25
+ }
26
+ },
27
+ "then" : {
28
+ "s" : {
29
+ "type" : "null"
30
+ }
31
+ },
32
+ "else" : {
33
+ "allOf" : [
34
+ {
35
+ "if" : {
36
+ "required" : [
37
+ "n"
38
+ ],
39
+ "properties" : {
40
+ "n" : {
41
+ "const" : "signalgroupstatus"
42
+ }
43
+ }
44
+ },
45
+ "then" : {
46
+ "properties" : {
47
+ "s" : {
48
+ "description" : "Signal group status as text field.\nEach character represent the state of the signal group in consecutive order,\nwhere the leftmost character starts with signal group 1.\nSignal group status is described in detail in the corresponding section.\n- : Signal group is undefined/does not exist",
49
+ "type" : "string",
50
+ "pattern" : "^[a-hA-G0-9N-P]*$"
51
+ }
52
+ }
53
+ }
54
+ },
55
+ {
56
+ "if" : {
57
+ "required" : [
58
+ "n"
59
+ ],
60
+ "properties" : {
61
+ "n" : {
62
+ "const" : "cyclecounter"
63
+ }
64
+ }
65
+ },
66
+ "then" : {
67
+ "properties" : {
68
+ "s" : {
69
+ "allOf" : [
70
+ {
71
+ "description" : "Cycle counter.\nUsed for handling of coordination between TLC’s.\nIs counted from 0 until it reaches the cycle time (See S0028).\n\nc = (b + o) mod t\n\nwhere c = cycle counter,\nb = base cycle counter,\no = offset,\nt = cycle time,\nmod = modulo\n\nSee the coordination section for more information."
72
+ },
73
+ {
74
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
75
+ }
76
+ ]
77
+ }
78
+ }
79
+ }
80
+ },
81
+ {
82
+ "if" : {
83
+ "required" : [
84
+ "n"
85
+ ],
86
+ "properties" : {
87
+ "n" : {
88
+ "const" : "basecyclecounter"
89
+ }
90
+ }
91
+ },
92
+ "then" : {
93
+ "properties" : {
94
+ "s" : {
95
+ "allOf" : [
96
+ {
97
+ "description" : "Base cycle counter.\nUsed for handling of coordination between TLC’s.\nSynchronized between all TLC’s in an active coordination.\nSee the coordination section for more information."
98
+ },
99
+ {
100
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
101
+ }
102
+ ]
103
+ }
104
+ }
105
+ }
106
+ },
107
+ {
108
+ "if" : {
109
+ "required" : [
110
+ "n"
111
+ ],
112
+ "properties" : {
113
+ "n" : {
114
+ "const" : "stage"
115
+ }
116
+ }
117
+ },
118
+ "then" : {
119
+ "properties" : {
120
+ "s" : {
121
+ "allOf" : [
122
+ {
123
+ "description" : "Current stage (isolated)"
124
+ },
125
+ {
126
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
127
+ }
128
+ ]
129
+ }
130
+ }
131
+ }
132
+ }
133
+ ]
134
+ }
135
+ }
136
+ ]
137
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "description" : "Detector logic status.\nProvides the status of all detector logics of the controller.\nCan be used to draw a live signal group diagram as well provide diagnostic information about the performance of the controller. Can also be used for bus priority, external control systems, and much more.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "detectorlogicstatus"
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" : "detectorlogicstatus"
39
+ }
40
+ }
41
+ },
42
+ "then" : {
43
+ "properties" : {
44
+ "s" : {
45
+ "description" : "Detector logic status as text field.\nEach character represent the state of the detector logic in consecutive order,\nwhere the leftmost character starts with detector logic 1.\n0 : Detector logic is not active\n1 : Detector logic is active\n- : Detector logic is undefined/does not exist",
46
+ "type" : "string"
47
+ }
48
+ }
49
+ }
50
+ }
51
+ ]
52
+ }
53
+ }
54
+ ]
55
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "description" : "Input status.\nInput (1-255) of the controllers general purpose I/O.\nInput is used where the traffic light controller must react to external control. It could be external detectors, bus priority, and much more.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "inputstatus"
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" : "inputstatus"
39
+ }
40
+ }
41
+ },
42
+ "then" : {
43
+ "properties" : {
44
+ "s" : {
45
+ "description" : "Input status as text field.\nEach character represent the state of the input in consecutive order,\nwhere the leftmost character starts with input 1.\n0 : Input is not active\n1 : Input is active\n- : Input is undefined/does not exist",
46
+ "type" : "string"
47
+ }
48
+ }
49
+ }
50
+ }
51
+ ]
52
+ }
53
+ }
54
+ ]
55
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "description" : "Output status.\nOutput (1-255) of the controllers general purpose I/O.\nCan be used for all types of output where the traffic light controller needs to control other equipment. Can be used for bus priority, coordination between traffic controllers, external control systems, and much more.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "outputstatus"
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" : "outputstatus"
39
+ }
40
+ }
41
+ },
42
+ "then" : {
43
+ "properties" : {
44
+ "s" : {
45
+ "description" : "Output status as text field.\nEach character represent the state of the output status in consecutive order,\nwhere the leftmost character starts with output 1.\n0 : Output is not active\n1 : Output is active\n- : Output is undefined/does not exist",
46
+ "type" : "string"
47
+ }
48
+ }
49
+ }
50
+ }
51
+ ]
52
+ }
53
+ }
54
+ ]
55
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "description" : "Traffic Light Controller starting.\nThe traffic signal is starting, e.g. it is in startup mode and has not begun working normally yet.\nDuring startup mode the traffic controller shows dark, red, yellow flash or using the predetermined start cycle (minimum times).",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "status",
9
+ "statusByIntersection"
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" : "status"
40
+ }
41
+ }
42
+ },
43
+ "then" : {
44
+ "properties" : {
45
+ "s" : {
46
+ "allOf" : [
47
+ {
48
+ "description" : "False: Controller is not in start up mode\nTrue: Controller is currently in start up mode"
49
+ },
50
+ {
51
+ "$ref" : "../../../core/3.1.2/definitions.json#/boolean"
52
+ }
53
+ ]
54
+ }
55
+ }
56
+ }
57
+ },
58
+ {
59
+ "if" : {
60
+ "required" : [
61
+ "n"
62
+ ],
63
+ "properties" : {
64
+ "n" : {
65
+ "const" : "statusByIntersection"
66
+ }
67
+ }
68
+ },
69
+ "then" : {
70
+ "properties" : {
71
+ "s" : {
72
+ "description" : "False: Intersection is not in start up mode\nTrue: Intersection is currently in start up mode",
73
+ "type" : "array",
74
+ "items" : {
75
+ "type" : "object",
76
+ "required" : [
77
+ "intersection",
78
+ "startup"
79
+ ],
80
+ "additionalProperties" : false,
81
+ "properties" : {
82
+ "intersection" : {
83
+ "allOf" : [
84
+ {
85
+ "description" : "Intersection id"
86
+ },
87
+ {
88
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
89
+ }
90
+ ]
91
+ },
92
+ "startup" : {
93
+ "allOf" : [
94
+ {
95
+ "description" : "Start up mode"
96
+ },
97
+ {
98
+ "$ref" : "../../../core/3.1.2/definitions.json#/boolean"
99
+ }
100
+ ]
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ ]
109
+ }
110
+ }
111
+ ]
112
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "description" : "Emergency route.\nThe status is active during emergency prioritization.\nUsed in situations where full priority is given in the emergency vehicle program\nor for other types of priority in some cases.\n\nIf no emergency route is active, status should be set to False, and emergencystage to zero.\n\nDeprecated, use S0035 instead.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "emergencystage",
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" : "status"
40
+ }
41
+ }
42
+ },
43
+ "then" : {
44
+ "properties" : {
45
+ "s" : {
46
+ "allOf" : [
47
+ {
48
+ "description" : "False: Emergency route inactive\nTrue: Emergency route active"
49
+ },
50
+ {
51
+ "$ref" : "../../../core/3.1.2/definitions.json#/boolean"
52
+ }
53
+ ]
54
+ }
55
+ }
56
+ }
57
+ },
58
+ {
59
+ "if" : {
60
+ "required" : [
61
+ "n"
62
+ ],
63
+ "properties" : {
64
+ "n" : {
65
+ "const" : "emergencystage"
66
+ }
67
+ }
68
+ },
69
+ "then" : {
70
+ "properties" : {
71
+ "s" : {
72
+ "allOf" : [
73
+ {
74
+ "description" : "Number of emergency route (set to zero if no route is active)"
75
+ },
76
+ {
77
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
78
+ }
79
+ ]
80
+ }
81
+ }
82
+ }
83
+ }
84
+ ]
85
+ }
86
+ }
87
+ ]
88
+ }
@@ -0,0 +1,116 @@
1
+ {
2
+ "description" : "Controller switched on.\nThe controller is active and is not in dark mode.\nUsed to determine if the there is output to the signal heads, e.g. it shows red, green or yellow to the vehicles.\nDuring maintenance work the controller might be using dark mode (no output to the signal heads).\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: Traffic Light Controller in dark mode\nTrue: Traffic Light Controller not in dark mode"
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
+ }