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.
- checksums.yaml +4 -4
- data/Gemfile.lock +11 -11
- data/README.md +19 -3
- data/Rakefile +2 -2
- data/config/supervisor.yaml +2 -1
- data/config/tlc.yaml +2 -2
- data/lib/rsmp/cli.rb +29 -5
- data/lib/rsmp/component/component.rb +0 -4
- data/lib/rsmp/component/component_base.rb +15 -2
- data/lib/rsmp/component/component_proxy.rb +1 -1
- data/lib/rsmp/component/components.rb +22 -1
- data/lib/rsmp/convert/export/json_schema/outputs.rb +1 -0
- data/lib/rsmp/convert/export/json_schema/values.rb +6 -4
- data/lib/rsmp/convert/export/json_schema.rb +7 -3
- data/lib/rsmp/helpers/deep_merge.rb +2 -2
- data/lib/rsmp/message.rb +32 -0
- data/lib/rsmp/node/site/site.rb +34 -10
- data/lib/rsmp/node/supervisor/modules/configuration.rb +32 -5
- data/lib/rsmp/node/supervisor/modules/connection.rb +0 -2
- data/lib/rsmp/node/supervisor/supervisor.rb +0 -7
- data/lib/rsmp/options/options.rb +55 -6
- data/lib/rsmp/options/schemas/site.json +6 -3
- data/lib/rsmp/options/schemas/supervisor.json +5 -2
- data/lib/rsmp/options/schemas/supervisor_site.json +5 -2
- data/lib/rsmp/options/site_options.rb +3 -2
- data/lib/rsmp/options/supervisor_options.rb +3 -1
- data/lib/rsmp/proxy/modules/acknowledgements.rb +2 -0
- data/lib/rsmp/proxy/modules/receive.rb +5 -2
- data/lib/rsmp/proxy/modules/state.rb +1 -0
- data/lib/rsmp/proxy/modules/versions.rb +90 -15
- data/lib/rsmp/proxy/proxy.rb +52 -3
- data/lib/rsmp/proxy/site/modules/status.rb +5 -3
- data/lib/rsmp/proxy/site/site_proxy.rb +68 -35
- data/lib/rsmp/proxy/site/sxl_selection.rb +54 -0
- data/lib/rsmp/proxy/supervisor/supervisor_proxy.rb +54 -18
- data/lib/rsmp/schema/message_resolution.rb +104 -0
- data/lib/rsmp/schema.rb +104 -22
- data/lib/rsmp/schema_error.rb +7 -1
- data/lib/rsmp/sxl/interface.rb +48 -0
- data/lib/rsmp/sxl/registry.rb +55 -0
- data/lib/rsmp/sxl/site_interface.rb +10 -0
- data/lib/rsmp/sxl/supervisor_interface.rb +21 -0
- data/lib/rsmp/tlc/detector_logic.rb +2 -2
- data/lib/rsmp/tlc/signal_group.rb +2 -2
- data/lib/rsmp/tlc/site_interface.rb +10 -0
- data/lib/rsmp/tlc/{traffic_controller_proxy.rb → supervisor_interface.rb} +19 -34
- data/lib/rsmp/tlc/traffic_controller.rb +10 -2
- data/lib/rsmp/tlc/traffic_controller_site.rb +4 -2
- data/lib/rsmp/tlc.rb +10 -0
- data/lib/rsmp/version.rb +1 -1
- data/lib/rsmp.rb +8 -1
- data/rsmp.gemspec +5 -5
- data/schemas/core/3.3.0/aggregated_status.json +25 -0
- data/schemas/core/3.3.0/aggregated_status_request.json +9 -0
- data/schemas/core/3.3.0/alarm.json +71 -0
- data/schemas/core/3.3.0/alarm_acknowledge.json +11 -0
- data/schemas/core/3.3.0/alarm_issue.json +44 -0
- data/schemas/core/3.3.0/alarm_request.json +3 -0
- data/schemas/core/3.3.0/alarm_suspend_resume.json +3 -0
- data/schemas/core/3.3.0/alarm_suspended_resumed.json +44 -0
- data/schemas/core/3.3.0/command_request.json +24 -0
- data/schemas/core/3.3.0/command_response.json +35 -0
- data/schemas/core/3.3.0/component_list.json +24 -0
- data/schemas/core/3.3.0/core.json +40 -0
- data/schemas/core/3.3.0/definitions.json +133 -0
- data/schemas/core/3.3.0/message_ack.json +11 -0
- data/schemas/core/3.3.0/message_not_ack.json +15 -0
- data/schemas/core/3.3.0/rsmp.json +142 -0
- data/schemas/core/3.3.0/status.json +21 -0
- data/schemas/core/3.3.0/status_request.json +5 -0
- data/schemas/core/3.3.0/status_response.json +41 -0
- data/schemas/core/3.3.0/status_subscribe.json +31 -0
- data/schemas/core/3.3.0/status_unsubscribe.json +5 -0
- data/schemas/core/3.3.0/status_update.json +41 -0
- data/schemas/core/3.3.0/version.json +144 -0
- data/schemas/core/3.3.0/watchdog.json +9 -0
- data/schemas/tlc/1.3.0/alarms/A0001.json +4 -0
- data/schemas/tlc/1.3.0/alarms/A0002.json +4 -0
- data/schemas/tlc/1.3.0/alarms/A0003.json +4 -0
- data/schemas/tlc/1.3.0/alarms/A0004.json +4 -0
- data/schemas/tlc/1.3.0/alarms/A0005.json +4 -0
- data/schemas/tlc/1.3.0/alarms/A0006.json +4 -0
- data/schemas/tlc/1.3.0/alarms/A0007.json +34 -0
- data/schemas/tlc/1.3.0/alarms/A0008.json +30 -0
- data/schemas/tlc/1.3.0/alarms/A0009.json +4 -0
- data/schemas/tlc/1.3.0/alarms/A0010.json +4 -0
- data/schemas/tlc/1.3.0/alarms/A0101.json +4 -0
- data/schemas/tlc/1.3.0/alarms/A0201.json +35 -0
- data/schemas/tlc/1.3.0/alarms/A0202.json +35 -0
- data/schemas/tlc/1.3.0/alarms/A0301.json +92 -0
- data/schemas/tlc/1.3.0/alarms/A0302.json +115 -0
- data/schemas/tlc/1.3.0/alarms/A0303.json +92 -0
- data/schemas/tlc/1.3.0/alarms/A0304.json +115 -0
- data/schemas/tlc/1.3.0/alarms/alarms.json +287 -0
- data/schemas/tlc/1.3.0/commands/M0001.json +92 -0
- data/schemas/tlc/1.3.0/commands/M0002.json +69 -0
- data/schemas/tlc/1.3.0/commands/M0003.json +69 -0
- data/schemas/tlc/1.3.0/commands/M0004.json +51 -0
- data/schemas/tlc/1.3.0/commands/M0005.json +69 -0
- data/schemas/tlc/1.3.0/commands/M0006.json +69 -0
- data/schemas/tlc/1.3.0/commands/M0007.json +51 -0
- data/schemas/tlc/1.3.0/commands/M0008.json +87 -0
- data/schemas/tlc/1.3.0/commands/M0010.json +51 -0
- data/schemas/tlc/1.3.0/commands/M0011.json +51 -0
- data/schemas/tlc/1.3.0/commands/M0012.json +51 -0
- data/schemas/tlc/1.3.0/commands/M0013.json +51 -0
- data/schemas/tlc/1.3.0/commands/M0014.json +69 -0
- data/schemas/tlc/1.3.0/commands/M0015.json +69 -0
- data/schemas/tlc/1.3.0/commands/M0016.json +51 -0
- data/schemas/tlc/1.3.0/commands/M0017.json +51 -0
- data/schemas/tlc/1.3.0/commands/M0018.json +69 -0
- data/schemas/tlc/1.3.0/commands/M0019.json +87 -0
- data/schemas/tlc/1.3.0/commands/M0020.json +87 -0
- data/schemas/tlc/1.3.0/commands/M0021.json +51 -0
- data/schemas/tlc/1.3.0/commands/M0022.json +249 -0
- data/schemas/tlc/1.3.0/commands/M0023.json +51 -0
- data/schemas/tlc/1.3.0/commands/M0024.json +33 -0
- data/schemas/tlc/1.3.0/commands/M0103.json +72 -0
- data/schemas/tlc/1.3.0/commands/M0104.json +141 -0
- data/schemas/tlc/1.3.0/commands/command_requests.json +8 -0
- data/schemas/tlc/1.3.0/commands/command_responses.json +8 -0
- data/schemas/tlc/1.3.0/commands/commands.json +415 -0
- data/schemas/tlc/1.3.0/defs/definitions.json +72 -0
- data/schemas/tlc/1.3.0/defs/guards.json +24 -0
- data/schemas/tlc/1.3.0/rsmp.json +74 -0
- data/schemas/tlc/1.3.0/statuses/S0001.json +109 -0
- data/schemas/tlc/1.3.0/statuses/S0002.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0003.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0004.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0005.json +72 -0
- data/schemas/tlc/1.3.0/statuses/S0006.json +54 -0
- data/schemas/tlc/1.3.0/statuses/S0007.json +73 -0
- data/schemas/tlc/1.3.0/statuses/S0008.json +73 -0
- data/schemas/tlc/1.3.0/statuses/S0009.json +73 -0
- data/schemas/tlc/1.3.0/statuses/S0010.json +73 -0
- data/schemas/tlc/1.3.0/statuses/S0011.json +73 -0
- data/schemas/tlc/1.3.0/statuses/S0012.json +73 -0
- data/schemas/tlc/1.3.0/statuses/S0013.json +54 -0
- data/schemas/tlc/1.3.0/statuses/S0014.json +55 -0
- data/schemas/tlc/1.3.0/statuses/S0015.json +55 -0
- data/schemas/tlc/1.3.0/statuses/S0016.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0017.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0018.json +61 -0
- data/schemas/tlc/1.3.0/statuses/S0019.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0020.json +54 -0
- data/schemas/tlc/1.3.0/statuses/S0021.json +37 -0
- data/schemas/tlc/1.3.0/statuses/S0022.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0023.json +37 -0
- data/schemas/tlc/1.3.0/statuses/S0024.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0025.json +162 -0
- data/schemas/tlc/1.3.0/statuses/S0026.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0027.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0028.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0029.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0030.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0031.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0032.json +73 -0
- data/schemas/tlc/1.3.0/statuses/S0033.json +77 -0
- data/schemas/tlc/1.3.0/statuses/S0034.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0035.json +49 -0
- data/schemas/tlc/1.3.0/statuses/S0091.json +40 -0
- data/schemas/tlc/1.3.0/statuses/S0092.json +40 -0
- data/schemas/tlc/1.3.0/statuses/S0095.json +36 -0
- data/schemas/tlc/1.3.0/statuses/S0096.json +126 -0
- data/schemas/tlc/1.3.0/statuses/S0097.json +54 -0
- data/schemas/tlc/1.3.0/statuses/S0098.json +72 -0
- data/schemas/tlc/1.3.0/statuses/S0201.json +54 -0
- data/schemas/tlc/1.3.0/statuses/S0202.json +54 -0
- data/schemas/tlc/1.3.0/statuses/S0203.json +54 -0
- data/schemas/tlc/1.3.0/statuses/S0204.json +198 -0
- data/schemas/tlc/1.3.0/statuses/S0205.json +54 -0
- data/schemas/tlc/1.3.0/statuses/S0206.json +54 -0
- data/schemas/tlc/1.3.0/statuses/S0207.json +54 -0
- data/schemas/tlc/1.3.0/statuses/S0208.json +198 -0
- data/schemas/tlc/1.3.0/statuses/statuses.json +787 -0
- data/schemas/tlc/1.3.0/sxl.yaml +2296 -0
- metadata +144 -12
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"name" : "tlc",
|
|
4
|
+
"description" : "Traffic Light Controllers",
|
|
5
|
+
"version" : "1.3.0",
|
|
6
|
+
"allOf" : [
|
|
7
|
+
{
|
|
8
|
+
"if" : {
|
|
9
|
+
"required" : [
|
|
10
|
+
"type"
|
|
11
|
+
],
|
|
12
|
+
"properties" : {
|
|
13
|
+
"type" : {
|
|
14
|
+
"const" : "CommandRequest"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"then" : {
|
|
19
|
+
"$ref" : "commands/command_requests.json"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"if" : {
|
|
24
|
+
"required" : [
|
|
25
|
+
"type"
|
|
26
|
+
],
|
|
27
|
+
"properties" : {
|
|
28
|
+
"type" : {
|
|
29
|
+
"const" : "CommandResponse"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"then" : {
|
|
34
|
+
"$ref" : "commands/command_responses.json"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"if" : {
|
|
39
|
+
"required" : [
|
|
40
|
+
"type"
|
|
41
|
+
],
|
|
42
|
+
"properties" : {
|
|
43
|
+
"type" : {
|
|
44
|
+
"enum" : [
|
|
45
|
+
"StatusRequest",
|
|
46
|
+
"StatusResponse",
|
|
47
|
+
"StatusSubscribe",
|
|
48
|
+
"StatusUnsubscribe",
|
|
49
|
+
"StatusUpdate"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"then" : {
|
|
55
|
+
"$ref" : "statuses/statuses.json"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"if" : {
|
|
60
|
+
"required" : [
|
|
61
|
+
"type"
|
|
62
|
+
],
|
|
63
|
+
"properties" : {
|
|
64
|
+
"type" : {
|
|
65
|
+
"const" : "Alarm"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"then" : {
|
|
70
|
+
"$ref" : "alarms/alarms.json"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"description" : "Signal group status.\nProvides the status of each signal group, e.g. green, yellow, red,\nor other states used in the signal program.\nSee the section on signal group states for more information about\nthe possible states.\n\nCan be used to draw a live signal group diagram as well as to provide\ndiagnostic information about the performance of the controller.\n\nThe base cycle counter is computed based on the internal clock and\nthe cycle time. Controllers in active coordination will have\nsynchronized base cycle counters.\n\nThe cycle clock is based on the base cycle counter, but shifts the\nphase using the offset set in the controller:\n\nc = (b + o) modulo t\n\nwhere: \\\nc = cycle counter \\\nb = base cycle counter \\\no = offset \\\nt = cycle time\n\nTHe cycle counter and base cycle counter are both specified using whole seconds.\n\nSee the coordination section for more information about cycle\ncounters.\n\nThe millisecond attributes provides the high resolution cycle counter\n(not base cycle counter) of the the last signal group change.\nIf the controller internally works with discrete ticks, the value must\nbe quantized to the tick where the signal groups changed.\nE.g. if the controller uses 100ms ticks, the value must be\nquantized to 0, 100, 200, 300...\n\nThe millisecond attribute updates only when one or more signal group states changes,\nNOT every millisecond. Subscribing with **sendOnChange** will therefore not result in\nupdates every millisecond.",
|
|
4
|
+
"properties" : {
|
|
5
|
+
"n" : {
|
|
6
|
+
"enum" : [
|
|
7
|
+
"basecyclecounter",
|
|
8
|
+
"cyclecounter",
|
|
9
|
+
"millisecond",
|
|
10
|
+
"signalgroupstatus",
|
|
11
|
+
"stage"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"if" : {
|
|
16
|
+
"$ref" : "../defs/guards.json#/$defs/q_unknown_or_undefined"
|
|
17
|
+
},
|
|
18
|
+
"then" : {},
|
|
19
|
+
"else" : {
|
|
20
|
+
"allOf" : [
|
|
21
|
+
{
|
|
22
|
+
"if" : {
|
|
23
|
+
"properties" : {
|
|
24
|
+
"n" : {
|
|
25
|
+
"const" : "signalgroupstatus"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"then" : {
|
|
30
|
+
"properties" : {
|
|
31
|
+
"s" : {
|
|
32
|
+
"description" : "Signal group status as text field.\nEach character represents 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.\nA dash \"-\" is used for undefined/non-existing signal groups.",
|
|
33
|
+
"type" : "string",
|
|
34
|
+
"pattern" : "^[a-hA-G0-9N-P]*$"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"if" : {
|
|
41
|
+
"properties" : {
|
|
42
|
+
"n" : {
|
|
43
|
+
"const" : "basecyclecounter"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"then" : {
|
|
48
|
+
"properties" : {
|
|
49
|
+
"s" : {
|
|
50
|
+
"description" : "Base cycle counter.\nUpdates once per second, counting from 0 and wrapping around when reaching the cycle time.",
|
|
51
|
+
"type" : "string"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"if" : {
|
|
58
|
+
"properties" : {
|
|
59
|
+
"n" : {
|
|
60
|
+
"const" : "cyclecounter"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"then" : {
|
|
65
|
+
"properties" : {
|
|
66
|
+
"s" : {
|
|
67
|
+
"description" : "Cycle counter.\nUpdates once per second, counting from 0 and wrapping around when reaching the cycle time.",
|
|
68
|
+
"type" : "string"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"if" : {
|
|
75
|
+
"properties" : {
|
|
76
|
+
"n" : {
|
|
77
|
+
"const" : "millisecond"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"then" : {
|
|
82
|
+
"properties" : {
|
|
83
|
+
"s" : {
|
|
84
|
+
"description" : "Provides the cycle counter (not base cycle counter) in milliseconds\nof when the last signal group state changed occured.\nUpdates only when the signalgroupstatus attribute changes.",
|
|
85
|
+
"type" : "string"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"if" : {
|
|
92
|
+
"properties" : {
|
|
93
|
+
"n" : {
|
|
94
|
+
"const" : "stage"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"then" : {
|
|
99
|
+
"properties" : {
|
|
100
|
+
"s" : {
|
|
101
|
+
"description" : "Current stage (isolated)",
|
|
102
|
+
"type" : "string"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"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.",
|
|
4
|
+
"properties" : {
|
|
5
|
+
"n" : {
|
|
6
|
+
"enum" : [
|
|
7
|
+
"detectorlogicstatus"
|
|
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" : "detectorlogicstatus"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"then" : {
|
|
26
|
+
"properties" : {
|
|
27
|
+
"s" : {
|
|
28
|
+
"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",
|
|
29
|
+
"$ref" : "../defs/definitions.json#/string_list"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"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.",
|
|
4
|
+
"properties" : {
|
|
5
|
+
"n" : {
|
|
6
|
+
"enum" : [
|
|
7
|
+
"inputstatus"
|
|
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" : "inputstatus"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"then" : {
|
|
26
|
+
"properties" : {
|
|
27
|
+
"s" : {
|
|
28
|
+
"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",
|
|
29
|
+
"$ref" : "../defs/definitions.json#/string_list"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"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.",
|
|
4
|
+
"properties" : {
|
|
5
|
+
"n" : {
|
|
6
|
+
"enum" : [
|
|
7
|
+
"outputstatus"
|
|
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" : "outputstatus"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"then" : {
|
|
26
|
+
"properties" : {
|
|
27
|
+
"s" : {
|
|
28
|
+
"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",
|
|
29
|
+
"type" : "string"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"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).",
|
|
4
|
+
"properties" : {
|
|
5
|
+
"n" : {
|
|
6
|
+
"enum" : [
|
|
7
|
+
"status",
|
|
8
|
+
"statusByIntersection"
|
|
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" : "False: Controller is not in start up mode\nTrue: Controller is currently in start up mode",
|
|
30
|
+
"type" : "string"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"if" : {
|
|
37
|
+
"properties" : {
|
|
38
|
+
"n" : {
|
|
39
|
+
"const" : "statusByIntersection"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"then" : {
|
|
44
|
+
"properties" : {
|
|
45
|
+
"s" : {
|
|
46
|
+
"description" : "False: Intersection is not in start up mode\nTrue: Intersection is currently in start up mode",
|
|
47
|
+
"type" : "array",
|
|
48
|
+
"items" : {
|
|
49
|
+
"type" : "object",
|
|
50
|
+
"required" : [
|
|
51
|
+
"intersection",
|
|
52
|
+
"startup"
|
|
53
|
+
],
|
|
54
|
+
"unevaluatedProperties" : false,
|
|
55
|
+
"properties" : {
|
|
56
|
+
"intersection" : {
|
|
57
|
+
"description" : "Intersection id",
|
|
58
|
+
"type" : "string"
|
|
59
|
+
},
|
|
60
|
+
"startup" : {
|
|
61
|
+
"description" : "Start up mode",
|
|
62
|
+
"type" : "string"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"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.",
|
|
4
|
+
"properties" : {
|
|
5
|
+
"n" : {
|
|
6
|
+
"enum" : [
|
|
7
|
+
"emergencystage",
|
|
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" : "False: Emergency route inactive\nTrue: Emergency route active",
|
|
30
|
+
"type" : "string"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"if" : {
|
|
37
|
+
"properties" : {
|
|
38
|
+
"n" : {
|
|
39
|
+
"const" : "emergencystage"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"then" : {
|
|
44
|
+
"properties" : {
|
|
45
|
+
"s" : {
|
|
46
|
+
"description" : "Number of emergency route (set to zero if no route is active)",
|
|
47
|
+
"type" : "string"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema" : "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"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).",
|
|
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: Traffic Light Controller in dark mode\nTrue: Traffic Light Controller not in dark mode",
|
|
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" : "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).",
|
|
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: Manual control inactive\nTrue: Manual control active",
|
|
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" : "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).",
|
|
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: Fixed time control inactive\nTrue: Fixed time control active",
|
|
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
|
+
}
|