rsmp_schemer 0.2.0 → 0.3.2

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 (109) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/Gemfile.lock +5 -5
  4. data/lib/rsmp_schemer/schemer.rb +24 -15
  5. data/lib/rsmp_schemer/version.rb +1 -1
  6. data/schemas/tlc_1.0.10/schema/tlc/alarms/A0301.json +1 -1
  7. data/schemas/tlc_1.0.10/schema/tlc/alarms/A0302.json +1 -1
  8. data/schemas/tlc_1.0.10/schema/tlc/commands/M0002.json +1 -1
  9. data/schemas/tlc_1.0.10/schema/tlc/commands/M0003.json +1 -1
  10. data/schemas/tlc_1.0.10/schema/tlc/commands/M0004.json +1 -1
  11. data/schemas/tlc_1.0.10/schema/tlc/commands/M0005.json +1 -1
  12. data/schemas/tlc_1.0.10/schema/tlc/commands/M0006.json +1 -1
  13. data/schemas/tlc_1.0.10/schema/tlc/commands/M0007.json +1 -1
  14. data/schemas/tlc_1.0.10/schema/tlc/commands/M0008.json +2 -2
  15. data/schemas/tlc_1.0.10/schema/tlc/commands/M0010.json +1 -1
  16. data/schemas/tlc_1.0.10/schema/tlc/commands/M0011.json +1 -1
  17. data/schemas/tlc_1.0.10/schema/tlc/commands/M0019.json +100 -0
  18. data/schemas/tlc_1.0.10/schema/tlc/statuses/S0001.json +1 -1
  19. data/schemas/tlc_1.0.10/schema/tlc/statuses/S0005.json +1 -1
  20. data/schemas/tlc_1.0.10/schema/tlc/statuses/S0006.json +1 -1
  21. data/schemas/tlc_1.0.10/schema/tlc/statuses/statuses.json +1 -257
  22. data/schemas/tlc_1.0.13/schema/tlc/alarms/A0301.json +1 -1
  23. data/schemas/tlc_1.0.13/schema/tlc/alarms/A0302.json +1 -1
  24. data/schemas/tlc_1.0.13/schema/tlc/commands/M0002.json +1 -1
  25. data/schemas/tlc_1.0.13/schema/tlc/commands/M0003.json +1 -1
  26. data/schemas/tlc_1.0.13/schema/tlc/commands/M0004.json +1 -1
  27. data/schemas/tlc_1.0.13/schema/tlc/commands/M0005.json +1 -1
  28. data/schemas/tlc_1.0.13/schema/tlc/commands/M0006.json +1 -1
  29. data/schemas/tlc_1.0.13/schema/tlc/commands/M0007.json +1 -1
  30. data/schemas/tlc_1.0.13/schema/tlc/commands/M0008.json +2 -2
  31. data/schemas/tlc_1.0.13/schema/tlc/commands/M0010.json +1 -1
  32. data/schemas/tlc_1.0.13/schema/tlc/commands/M0011.json +1 -1
  33. data/schemas/tlc_1.0.13/schema/tlc/commands/M0019.json +2 -2
  34. data/schemas/tlc_1.0.13/schema/tlc/statuses/S0001.json +1 -1
  35. data/schemas/tlc_1.0.13/schema/tlc/statuses/S0005.json +1 -1
  36. data/schemas/tlc_1.0.13/schema/tlc/statuses/S0006.json +1 -1
  37. data/schemas/tlc_1.0.13/schema/tlc/statuses/S0023.json +1 -1
  38. data/schemas/tlc_1.0.13/schema/tlc/statuses/statuses.json +1 -99
  39. data/schemas/tlc_1.0.13/spec/tlc/S0023_spec.rb +96 -0
  40. data/schemas/tlc_1.0.14/schema/tlc/alarms/A0301.json +1 -1
  41. data/schemas/tlc_1.0.14/schema/tlc/alarms/A0302.json +1 -1
  42. data/schemas/tlc_1.0.14/schema/tlc/commands/M0002.json +1 -1
  43. data/schemas/tlc_1.0.14/schema/tlc/commands/M0003.json +1 -1
  44. data/schemas/tlc_1.0.14/schema/tlc/commands/M0004.json +1 -1
  45. data/schemas/tlc_1.0.14/schema/tlc/commands/M0005.json +1 -1
  46. data/schemas/tlc_1.0.14/schema/tlc/commands/M0006.json +1 -1
  47. data/schemas/tlc_1.0.14/schema/tlc/commands/M0007.json +1 -1
  48. data/schemas/tlc_1.0.14/schema/tlc/commands/M0008.json +2 -2
  49. data/schemas/tlc_1.0.14/schema/tlc/commands/M0010.json +1 -1
  50. data/schemas/tlc_1.0.14/schema/tlc/commands/M0011.json +1 -1
  51. data/schemas/tlc_1.0.14/schema/tlc/commands/M0019.json +2 -2
  52. data/schemas/tlc_1.0.14/schema/tlc/statuses/S0001.json +1 -1
  53. data/schemas/tlc_1.0.14/schema/tlc/statuses/S0005.json +1 -1
  54. data/schemas/tlc_1.0.14/schema/tlc/statuses/S0006.json +1 -1
  55. data/schemas/tlc_1.0.14/schema/tlc/statuses/S0023.json +1 -1
  56. data/schemas/tlc_1.0.14/schema/tlc/statuses/statuses.json +0 -34
  57. data/schemas/tlc_1.0.14/spec/tlc/S0023_spec.rb +96 -0
  58. data/schemas/tlc_1.0.15/schema/tlc/statuses/S0001.json +1 -1
  59. data/schemas/tlc_1.0.15/schema/tlc/statuses/S0023.json +1 -1
  60. data/schemas/tlc_1.0.15/spec/tlc/S0023_spec.rb +96 -0
  61. data/schemas/tlc_1.0.7/schema/tlc/alarms/A0301.json +1 -1
  62. data/schemas/tlc_1.0.7/schema/tlc/alarms/A0302.json +1 -1
  63. data/schemas/tlc_1.0.7/schema/tlc/commands/M0002.json +1 -1
  64. data/schemas/tlc_1.0.7/schema/tlc/commands/M0003.json +1 -1
  65. data/schemas/tlc_1.0.7/schema/tlc/commands/M0004.json +1 -1
  66. data/schemas/tlc_1.0.7/schema/tlc/commands/M0005.json +1 -1
  67. data/schemas/tlc_1.0.7/schema/tlc/commands/M0006.json +1 -1
  68. data/schemas/tlc_1.0.7/schema/tlc/commands/M0007.json +1 -1
  69. data/schemas/tlc_1.0.7/schema/tlc/commands/M0008.json +2 -2
  70. data/schemas/tlc_1.0.7/schema/tlc/commands/M0010.json +1 -1
  71. data/schemas/tlc_1.0.7/schema/tlc/commands/M0011.json +1 -1
  72. data/schemas/tlc_1.0.7/schema/tlc/commands/M0019.json +100 -0
  73. data/schemas/tlc_1.0.7/schema/tlc/statuses/S0001.json +1 -1
  74. data/schemas/tlc_1.0.7/schema/tlc/statuses/S0005.json +1 -1
  75. data/schemas/tlc_1.0.7/schema/tlc/statuses/S0006.json +1 -1
  76. data/schemas/tlc_1.0.7/schema/tlc/statuses/statuses.json +1 -77
  77. data/schemas/tlc_1.0.8/schema/tlc/alarms/A0301.json +1 -1
  78. data/schemas/tlc_1.0.8/schema/tlc/alarms/A0302.json +1 -1
  79. data/schemas/tlc_1.0.8/schema/tlc/commands/M0002.json +1 -1
  80. data/schemas/tlc_1.0.8/schema/tlc/commands/M0003.json +1 -1
  81. data/schemas/tlc_1.0.8/schema/tlc/commands/M0004.json +1 -1
  82. data/schemas/tlc_1.0.8/schema/tlc/commands/M0005.json +1 -1
  83. data/schemas/tlc_1.0.8/schema/tlc/commands/M0006.json +1 -1
  84. data/schemas/tlc_1.0.8/schema/tlc/commands/M0007.json +1 -1
  85. data/schemas/tlc_1.0.8/schema/tlc/commands/M0008.json +2 -2
  86. data/schemas/tlc_1.0.8/schema/tlc/commands/M0010.json +1 -1
  87. data/schemas/tlc_1.0.8/schema/tlc/commands/M0011.json +1 -1
  88. data/schemas/tlc_1.0.8/schema/tlc/commands/M0019.json +100 -0
  89. data/schemas/tlc_1.0.8/schema/tlc/statuses/S0001.json +1 -1
  90. data/schemas/tlc_1.0.8/schema/tlc/statuses/S0005.json +1 -1
  91. data/schemas/tlc_1.0.8/schema/tlc/statuses/S0006.json +1 -1
  92. data/schemas/tlc_1.0.8/schema/tlc/statuses/statuses.json +1 -77
  93. data/schemas/tlc_1.0.9/schema/tlc/alarms/A0301.json +1 -1
  94. data/schemas/tlc_1.0.9/schema/tlc/alarms/A0302.json +1 -1
  95. data/schemas/tlc_1.0.9/schema/tlc/commands/M0002.json +1 -1
  96. data/schemas/tlc_1.0.9/schema/tlc/commands/M0003.json +1 -1
  97. data/schemas/tlc_1.0.9/schema/tlc/commands/M0004.json +1 -1
  98. data/schemas/tlc_1.0.9/schema/tlc/commands/M0005.json +1 -1
  99. data/schemas/tlc_1.0.9/schema/tlc/commands/M0006.json +1 -1
  100. data/schemas/tlc_1.0.9/schema/tlc/commands/M0007.json +1 -1
  101. data/schemas/tlc_1.0.9/schema/tlc/commands/M0008.json +2 -2
  102. data/schemas/tlc_1.0.9/schema/tlc/commands/M0010.json +1 -1
  103. data/schemas/tlc_1.0.9/schema/tlc/commands/M0011.json +1 -1
  104. data/schemas/tlc_1.0.9/schema/tlc/commands/M0019.json +100 -0
  105. data/schemas/tlc_1.0.9/schema/tlc/statuses/S0001.json +1 -1
  106. data/schemas/tlc_1.0.9/schema/tlc/statuses/S0005.json +1 -1
  107. data/schemas/tlc_1.0.9/schema/tlc/statuses/S0006.json +1 -1
  108. data/schemas/tlc_1.0.9/schema/tlc/statuses/statuses.json +1 -77
  109. metadata +10 -3
@@ -97,7 +97,7 @@
97
97
  "properties" : {
98
98
  "v" : {
99
99
  "description" : "Manually controlled detector logic (True/False)",
100
- "type" : "boolean"
100
+ "$ref" : "../../core/definitions.json#/boolean"
101
101
  }
102
102
  }
103
103
  }
@@ -30,7 +30,7 @@
30
30
  "properties" : {
31
31
  "v" : {
32
32
  "description" : "False: Controller uses time plan according to programming\nTrue: Controller uses time plan according to command",
33
- "type" : "boolean"
33
+ "$ref" : "../../core/definitions.json#/boolean"
34
34
  }
35
35
  }
36
36
  }
@@ -30,7 +30,7 @@
30
30
  "properties" : {
31
31
  "v" : {
32
32
  "description" : "False: Controller uses traffic situation according to own programming\nTrue: Controller uses traffic situation according to command",
33
- "type" : "boolean"
33
+ "$ref" : "../../core/definitions.json#/boolean"
34
34
  }
35
35
  }
36
36
  }
@@ -29,7 +29,7 @@
29
29
  "properties" : {
30
30
  "v" : {
31
31
  "description" : "True: Restart controller",
32
- "type" : "boolean"
32
+ "$ref" : "../../core/definitions.json#/boolean"
33
33
  }
34
34
  }
35
35
  }
@@ -30,7 +30,7 @@
30
30
  "properties" : {
31
31
  "v" : {
32
32
  "description" : "False: Activate emergency route\nTrue: Deactivate emergency route",
33
- "type" : "boolean"
33
+ "$ref" : "../../core/definitions.json#/boolean"
34
34
  }
35
35
  }
36
36
  }
@@ -30,7 +30,7 @@
30
30
  "properties" : {
31
31
  "v" : {
32
32
  "description" : "False: Deactivate input\nTrue: Activate input",
33
- "type" : "boolean"
33
+ "$ref" : "../../core/definitions.json#/boolean"
34
34
  }
35
35
  }
36
36
  }
@@ -29,7 +29,7 @@
29
29
  "properties" : {
30
30
  "v" : {
31
31
  "description" : "False: Deactivate fixed time control\nTrue: Activate fixed time control",
32
- "type" : "boolean"
32
+ "$ref" : "../../core/definitions.json#/boolean"
33
33
  }
34
34
  }
35
35
  }
@@ -30,7 +30,7 @@
30
30
  "properties" : {
31
31
  "v" : {
32
32
  "description" : "False: Deactivate manual control of detector logic\nTrue: Activate manual control of detector logic",
33
- "type" : "boolean"
33
+ "$ref" : "../../core/definitions.json#/boolean"
34
34
  }
35
35
  }
36
36
  }
@@ -70,7 +70,7 @@
70
70
  "properties" : {
71
71
  "v" : {
72
72
  "description" : "False: Deactivate detector logic\nTrue: Activate detector logic",
73
- "type" : "boolean"
73
+ "$ref" : "../../core/definitions.json#/boolean"
74
74
  }
75
75
  }
76
76
  }
@@ -29,7 +29,7 @@
29
29
  "properties" : {
30
30
  "v" : {
31
31
  "description" : "False: No command (default)\nTrue: Order a signal group to green",
32
- "type" : "boolean"
32
+ "$ref" : "../../core/definitions.json#/boolean"
33
33
  }
34
34
  }
35
35
  }
@@ -29,7 +29,7 @@
29
29
  "properties" : {
30
30
  "v" : {
31
31
  "description" : "False: No command (default)\nTrue: Order a signal group to red",
32
- "type" : "boolean"
32
+ "$ref" : "../../core/definitions.json#/boolean"
33
33
  }
34
34
  }
35
35
  }
@@ -31,7 +31,7 @@
31
31
  "properties" : {
32
32
  "v" : {
33
33
  "description" : "False: Force input\nTrue: Release input",
34
- "type" : "boolean"
34
+ "$ref" : "../../core/definitions.json#/boolean"
35
35
  }
36
36
  }
37
37
  }
@@ -91,7 +91,7 @@
91
91
  "properties" : {
92
92
  "v" : {
93
93
  "description" : "False: input forced to False\nTrue: input forced to True",
94
- "type" : "boolean"
94
+ "$ref" : "../../core/definitions.json#/boolean"
95
95
  }
96
96
  }
97
97
  }
@@ -29,7 +29,7 @@
29
29
  "s" : {
30
30
  "description" : "Signal group status as text field",
31
31
  "type" : "string",
32
- "pattern" : "^[a-hA-G0-9N-P]+$"
32
+ "pattern" : "^[a-hA-G0-9N-P]*$"
33
33
  }
34
34
  }
35
35
  }
@@ -25,7 +25,7 @@
25
25
  "properties" : {
26
26
  "s" : {
27
27
  "description" : "False: Controller is not in start up mode\nTrue: Controller is currently in start up mode",
28
- "type" : "boolean"
28
+ "$ref" : "../../core/definitions.json#/boolean"
29
29
  }
30
30
  }
31
31
  }
@@ -26,7 +26,7 @@
26
26
  "properties" : {
27
27
  "s" : {
28
28
  "description" : "False: Emergency stage inactive\nTrue: Emergency stage active",
29
- "type" : "boolean"
29
+ "$ref" : "../../core/definitions.json#/boolean"
30
30
  }
31
31
  }
32
32
  }
@@ -26,7 +26,7 @@
26
26
  "s" : {
27
27
  "description" : "Dynamic bands.\nEach dynamic band are written as pp-dd-ee where:\npp=Time plan\ndd=Dynamic band number (from 1-10)\nee=Extension in seconds in this band\n\nEach dynamic band is separated with a comma.\n\nE.g.\npp-dd-ee,pp-dd-ee",
28
28
  "type" : "string",
29
- "pattern" : "^(\\d{1,2}\\-\\d{1,2}-\\d{1,2})(?:,(\\d{1,2}\\-\\d{1,2}-\\d{1,2}))*$"
29
+ "pattern" : "(^$)|(^(?<item>(\\d{1,2})\\-\\d{1,2}-\\d{1,2})(,\\g<item>)*$)"
30
30
  }
31
31
  }
32
32
  }
@@ -36,22 +36,14 @@
36
36
  "S0027",
37
37
  "S0028",
38
38
  "S0029",
39
- "S0030",
40
- "S0031",
41
39
  "S0091",
42
40
  "S0092",
43
41
  "S0095",
44
42
  "S0096",
45
- "S0097",
46
- "S0098",
47
43
  "S0201",
48
44
  "S0202",
49
45
  "S0203",
50
- "S0204",
51
- "S0205",
52
- "S0206",
53
- "S0207",
54
- "S0208"
46
+ "S0204"
55
47
  ]
56
48
  }
57
49
  }
@@ -491,36 +483,6 @@
491
483
  "$ref" : "S0029.json"
492
484
  }
493
485
  },
494
- {
495
- "if" : {
496
- "required" : [
497
- "sCI"
498
- ],
499
- "properties" : {
500
- "sCI" : {
501
- "const" : "S0030"
502
- }
503
- }
504
- },
505
- "then" : {
506
- "$ref" : "S0030.json"
507
- }
508
- },
509
- {
510
- "if" : {
511
- "required" : [
512
- "sCI"
513
- ],
514
- "properties" : {
515
- "sCI" : {
516
- "const" : "S0031"
517
- }
518
- }
519
- },
520
- "then" : {
521
- "$ref" : "S0031.json"
522
- }
523
- },
524
486
  {
525
487
  "if" : {
526
488
  "required" : [
@@ -670,66 +632,6 @@
670
632
  "then" : {
671
633
  "$ref" : "S0204.json"
672
634
  }
673
- },
674
- {
675
- "if" : {
676
- "required" : [
677
- "sCI"
678
- ],
679
- "properties" : {
680
- "sCI" : {
681
- "const" : "S0205"
682
- }
683
- }
684
- },
685
- "then" : {
686
- "$ref" : "S0205.json"
687
- }
688
- },
689
- {
690
- "if" : {
691
- "required" : [
692
- "sCI"
693
- ],
694
- "properties" : {
695
- "sCI" : {
696
- "const" : "S0206"
697
- }
698
- }
699
- },
700
- "then" : {
701
- "$ref" : "S0206.json"
702
- }
703
- },
704
- {
705
- "if" : {
706
- "required" : [
707
- "sCI"
708
- ],
709
- "properties" : {
710
- "sCI" : {
711
- "const" : "S0207"
712
- }
713
- }
714
- },
715
- "then" : {
716
- "$ref" : "S0207.json"
717
- }
718
- },
719
- {
720
- "if" : {
721
- "required" : [
722
- "sCI"
723
- ],
724
- "properties" : {
725
- "sCI" : {
726
- "const" : "S0208"
727
- }
728
- }
729
- },
730
- "then" : {
731
- "$ref" : "S0208.json"
732
- }
733
635
  }
734
636
  ]
735
637
  }
@@ -0,0 +1,96 @@
1
+ RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
2
+ let(:message) {{
3
+ "mType" => "rSMsg",
4
+ "mId" => "4173c2c8-a933-43cb-9425-66d4613731ed",
5
+ "type" => "StatusResponse",
6
+ "cId" => "O+14439=481WA001",
7
+ "sTs" => "2015-06-08T09:15:18.266Z",
8
+ "sS" => [
9
+ { "sCI" => "S0023", "n" => "status", "s" => "", "q" => "recent" }
10
+ ]
11
+ }}
12
+
13
+ it 'accepts empty list' do
14
+ message["sS"][0]['s'] = ''
15
+ expect( validate(message) ).to be_nil
16
+ end
17
+ it 'accepts one digit' do
18
+ message["sS"][0]['s'] = '1-1-0'
19
+ expect( validate(message) ).to be_nil
20
+ end
21
+
22
+ it 'accepts two digits' do
23
+ message["sS"][0]['s'] = '01-01-20'
24
+ expect( validate(message) ).to be_nil
25
+ end
26
+
27
+ it 'rejects three digits or more' do
28
+ message["sS"][0]['s'] = '01-01-100'
29
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
30
+
31
+ message["sS"][0]['s'] = '100-01-01'
32
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
33
+ end
34
+
35
+ it 'accepts comma-separated items' do
36
+ message["sS"][0]['s'] = '1-1-0,1-2-0'
37
+ expect( validate(message) ).to be_nil
38
+
39
+ message["sS"][0]['s'] = '1-1-0,1-2-0,2-4-5'
40
+ expect( validate(message) ).to be_nil
41
+ end
42
+
43
+ it 'rejects comma-separated lists with spaces' do
44
+ message["sS"][0]['s'] = '1-1-0, 1-2-0'
45
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
46
+
47
+ message["sS"][0]['s'] = '1-1-0 ,1-2-0'
48
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
49
+ end
50
+
51
+ it 'rejects comma-separated lists with trailing comma' do
52
+ message["sS"][0]['s'] = '1-1-0,'
53
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
54
+ end
55
+
56
+ it 'rejects comma-separated lists with leading comma' do
57
+ message["sS"][0]['s'] = ',1-1-0'
58
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
59
+ end
60
+
61
+ it 'rejects comma-separated lists with empty items' do
62
+ message["sS"][0]['s'] = '1-1-0,,1-2-0'
63
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
64
+ end
65
+
66
+ it 'rejects negatives' do
67
+ message["sS"][0]['s'] = '-1-2-3'
68
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
69
+
70
+ message["sS"][0]['s'] = '1--2-3'
71
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
72
+
73
+ message["sS"][0]['s'] = '1-2--3'
74
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
75
+ end
76
+
77
+ it 'rejects floats' do
78
+ message["sS"][0]['s'] = '.1-2-3'
79
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
80
+
81
+ message["sS"][0]['s'] = '1-.2-3'
82
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
83
+
84
+ message["sS"][0]['s'] = '1-2-.3'
85
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
86
+
87
+ message["sS"][0]['s'] = '1.-2-3'
88
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
89
+
90
+ message["sS"][0]['s'] = '1-2.-3'
91
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
92
+
93
+ message["sS"][0]['s'] = '1-2-3.'
94
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
95
+ end
96
+ end
@@ -96,7 +96,7 @@
96
96
  "properties" : {
97
97
  "v" : {
98
98
  "description" : "Manually controlled detector logic (True/False)",
99
- "type" : "boolean"
99
+ "$ref" : "../../core/definitions.json#/boolean"
100
100
  }
101
101
  }
102
102
  }
@@ -97,7 +97,7 @@
97
97
  "properties" : {
98
98
  "v" : {
99
99
  "description" : "Manually controlled detector logic (True/False)",
100
- "type" : "boolean"
100
+ "$ref" : "../../core/definitions.json#/boolean"
101
101
  }
102
102
  }
103
103
  }
@@ -30,7 +30,7 @@
30
30
  "properties" : {
31
31
  "v" : {
32
32
  "description" : "False: Controller uses time plan according to programming\nTrue: Controller uses time plan according to command",
33
- "type" : "boolean"
33
+ "$ref" : "../../core/definitions.json#/boolean"
34
34
  }
35
35
  }
36
36
  }
@@ -30,7 +30,7 @@
30
30
  "properties" : {
31
31
  "v" : {
32
32
  "description" : "False: Controller uses traffic situation according to own programming\nTrue: Controller uses traffic situation according to command",
33
- "type" : "boolean"
33
+ "$ref" : "../../core/definitions.json#/boolean"
34
34
  }
35
35
  }
36
36
  }
@@ -29,7 +29,7 @@
29
29
  "properties" : {
30
30
  "v" : {
31
31
  "description" : "True: Restart controller",
32
- "type" : "boolean"
32
+ "$ref" : "../../core/definitions.json#/boolean"
33
33
  }
34
34
  }
35
35
  }
@@ -30,7 +30,7 @@
30
30
  "properties" : {
31
31
  "v" : {
32
32
  "description" : "False: Activate emergency route\nTrue: Deactivate emergency route",
33
- "type" : "boolean"
33
+ "$ref" : "../../core/definitions.json#/boolean"
34
34
  }
35
35
  }
36
36
  }
@@ -30,7 +30,7 @@
30
30
  "properties" : {
31
31
  "v" : {
32
32
  "description" : "False: Deactivate input\nTrue: Activate input",
33
- "type" : "boolean"
33
+ "$ref" : "../../core/definitions.json#/boolean"
34
34
  }
35
35
  }
36
36
  }
@@ -29,7 +29,7 @@
29
29
  "properties" : {
30
30
  "v" : {
31
31
  "description" : "False: Deactivate fixed time control\nTrue: Activate fixed time control",
32
- "type" : "boolean"
32
+ "$ref" : "../../core/definitions.json#/boolean"
33
33
  }
34
34
  }
35
35
  }
@@ -30,7 +30,7 @@
30
30
  "properties" : {
31
31
  "v" : {
32
32
  "description" : "False: Deactivate manual control of detector logic\nTrue: Activate manual control of detector logic",
33
- "type" : "boolean"
33
+ "$ref" : "../../core/definitions.json#/boolean"
34
34
  }
35
35
  }
36
36
  }
@@ -70,7 +70,7 @@
70
70
  "properties" : {
71
71
  "v" : {
72
72
  "description" : "False: Deactivate detector logic\nTrue: Activate detector logic",
73
- "type" : "boolean"
73
+ "$ref" : "../../core/definitions.json#/boolean"
74
74
  }
75
75
  }
76
76
  }
@@ -29,7 +29,7 @@
29
29
  "properties" : {
30
30
  "v" : {
31
31
  "description" : "False: No command (default)\nTrue: Order a signal group to green",
32
- "type" : "boolean"
32
+ "$ref" : "../../core/definitions.json#/boolean"
33
33
  }
34
34
  }
35
35
  }
@@ -29,7 +29,7 @@
29
29
  "properties" : {
30
30
  "v" : {
31
31
  "description" : "False: No command (default)\nTrue: Order a signal group to red",
32
- "type" : "boolean"
32
+ "$ref" : "../../core/definitions.json#/boolean"
33
33
  }
34
34
  }
35
35
  }
@@ -31,7 +31,7 @@
31
31
  "properties" : {
32
32
  "v" : {
33
33
  "description" : "False: Force input\nTrue: Release input",
34
- "type" : "boolean"
34
+ "$ref" : "../../core/definitions.json#/boolean"
35
35
  }
36
36
  }
37
37
  }
@@ -91,7 +91,7 @@
91
91
  "properties" : {
92
92
  "v" : {
93
93
  "description" : "False: input forced to False\nTrue: input forced to True",
94
- "type" : "boolean"
94
+ "$ref" : "../../core/definitions.json#/boolean"
95
95
  }
96
96
  }
97
97
  }
@@ -29,7 +29,7 @@
29
29
  "s" : {
30
30
  "description" : "Signal group status as text field",
31
31
  "type" : "string",
32
- "pattern" : "^[a-hA-G0-9N-P]+$"
32
+ "pattern" : "^[a-hA-G0-9N-P]*$"
33
33
  }
34
34
  }
35
35
  }
@@ -25,7 +25,7 @@
25
25
  "properties" : {
26
26
  "s" : {
27
27
  "description" : "False: Controller is not in start up mode\nTrue: Controller is currently in start up mode",
28
- "type" : "boolean"
28
+ "$ref" : "../../core/definitions.json#/boolean"
29
29
  }
30
30
  }
31
31
  }
@@ -26,7 +26,7 @@
26
26
  "properties" : {
27
27
  "s" : {
28
28
  "description" : "False: Emergency stage inactive\nTrue: Emergency stage active",
29
- "type" : "boolean"
29
+ "$ref" : "../../core/definitions.json#/boolean"
30
30
  }
31
31
  }
32
32
  }
@@ -26,7 +26,7 @@
26
26
  "s" : {
27
27
  "description" : "Dynamic bands.\nEach dynamic band are written as pp-dd-ee where:\npp=Time plan\ndd=Dynamic band number (from 1-10)\nee=Extension in seconds in this band\n\nEach dynamic band is separated with a comma.\n\nE.g.\npp-dd-ee,pp-dd-ee",
28
28
  "type" : "string",
29
- "pattern" : "^(\\d{1,2}\\-\\d{1,2}-\\d{1,2})(?:,(\\d{1,2}\\-\\d{1,2}-\\d{1,2}))*$"
29
+ "pattern" : "(^$)|(^(?<item>(\\d{1,2})\\-\\d{1,2}-\\d{1,2})(,\\g<item>)*$)"
30
30
  }
31
31
  }
32
32
  }
@@ -36,14 +36,10 @@
36
36
  "S0027",
37
37
  "S0028",
38
38
  "S0029",
39
- "S0030",
40
- "S0031",
41
39
  "S0091",
42
40
  "S0092",
43
41
  "S0095",
44
42
  "S0096",
45
- "S0097",
46
- "S0098",
47
43
  "S0201",
48
44
  "S0202",
49
45
  "S0203",
@@ -491,36 +487,6 @@
491
487
  "$ref" : "S0029.json"
492
488
  }
493
489
  },
494
- {
495
- "if" : {
496
- "required" : [
497
- "sCI"
498
- ],
499
- "properties" : {
500
- "sCI" : {
501
- "const" : "S0030"
502
- }
503
- }
504
- },
505
- "then" : {
506
- "$ref" : "S0030.json"
507
- }
508
- },
509
- {
510
- "if" : {
511
- "required" : [
512
- "sCI"
513
- ],
514
- "properties" : {
515
- "sCI" : {
516
- "const" : "S0031"
517
- }
518
- }
519
- },
520
- "then" : {
521
- "$ref" : "S0031.json"
522
- }
523
- },
524
490
  {
525
491
  "if" : {
526
492
  "required" : [