rsmp 0.40.0 → 0.40.1
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 +1 -1
- data/lib/rsmp/tlc/modules/inputs.rb +30 -1
- data/lib/rsmp/tlc/traffic_controller_site.rb +10 -1
- data/lib/rsmp/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8cafa5ad2e105bea349b42e08a8dca7e15f0635bfdcddca16d30b31062c2582e
|
|
4
|
+
data.tar.gz: f424bab2c9e1f77f2c8f752b24d2fe591d2b2f057fb78d774319ab216a8469f0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7bd78f82df81c06aaff4cb3298a0e94297599deb66d55e582385d89ee70848edd5b60e2d37b9eb21e75cb30d51cadeff6ff10993d7972e27d96629b6cfc9636b
|
|
7
|
+
data.tar.gz: 5a571aa560ec17d2233945e2ad371f18edad0bfa55ea0f31974ca81adff6d5bd6a10552d13c7c5b48bebc3202235fb4aa6d3e5f4e0001f4dbad783657db2e16f
|
data/Gemfile.lock
CHANGED
|
@@ -7,7 +7,7 @@ module RSMP
|
|
|
7
7
|
def setup_inputs(inputs)
|
|
8
8
|
if inputs
|
|
9
9
|
num_inputs = inputs['total']
|
|
10
|
-
@input_programming = inputs['programming']
|
|
10
|
+
@input_programming = normalize_input_programming(inputs['programming'])
|
|
11
11
|
else
|
|
12
12
|
@input_programming = nil
|
|
13
13
|
end
|
|
@@ -167,6 +167,35 @@ module RSMP
|
|
|
167
167
|
TrafficControllerSite.make_status @inputs.forced_string
|
|
168
168
|
end
|
|
169
169
|
end
|
|
170
|
+
|
|
171
|
+
private
|
|
172
|
+
|
|
173
|
+
def normalize_input_programming(programming)
|
|
174
|
+
return nil if programming.nil?
|
|
175
|
+
return programming if programming.is_a?(Array)
|
|
176
|
+
return programming unless programming.is_a?(Hash)
|
|
177
|
+
|
|
178
|
+
normalized = normalize_programming_keys(programming)
|
|
179
|
+
return normalized unless normalized.keys.all?(Integer)
|
|
180
|
+
|
|
181
|
+
programming_hash_to_array(normalized)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def normalize_programming_keys(programming)
|
|
185
|
+
programming.each_with_object({}) do |(key, value), memo|
|
|
186
|
+
int_key = key.is_a?(String) && key.match?(/^\d+$/) ? key.to_i : key
|
|
187
|
+
memo[int_key] = value
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def programming_hash_to_array(normalized)
|
|
192
|
+
max_key = normalized.keys.max
|
|
193
|
+
program_array = Array.new(max_key + 1)
|
|
194
|
+
normalized.each do |index, value|
|
|
195
|
+
program_array[index] = value
|
|
196
|
+
end
|
|
197
|
+
program_array
|
|
198
|
+
end
|
|
170
199
|
end
|
|
171
200
|
end
|
|
172
201
|
end
|
|
@@ -12,7 +12,7 @@ module RSMP
|
|
|
12
12
|
# setup options before calling super initializer,
|
|
13
13
|
# since build of components depend on options
|
|
14
14
|
@sxl = 'traffic_light_controller'
|
|
15
|
-
@security_codes = options
|
|
15
|
+
@security_codes = normalize_security_codes(options.dig(:site_settings, 'security_codes'))
|
|
16
16
|
@interval = options[:site_settings].dig('intervals', 'timer') || 1
|
|
17
17
|
@startup_sequence = options[:site_settings]['startup_sequence'] || 'efg'
|
|
18
18
|
build_plans options[:site_settings]['signal_plans']
|
|
@@ -131,6 +131,15 @@ module RSMP
|
|
|
131
131
|
raise MessageRejected, "Wrong security code for level #{level}"
|
|
132
132
|
end
|
|
133
133
|
|
|
134
|
+
def normalize_security_codes(codes)
|
|
135
|
+
return {} unless codes.is_a?(Hash)
|
|
136
|
+
|
|
137
|
+
codes.each_with_object({}) do |(key, value), memo|
|
|
138
|
+
int_key = key.is_a?(String) && key.match?(/^\d+$/) ? key.to_i : key
|
|
139
|
+
memo[int_key] = value
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
134
143
|
def change_security_code(level, old_code, new_code)
|
|
135
144
|
verify_security_code level, old_code
|
|
136
145
|
@security_codes[level] = new_code
|
data/lib/rsmp/version.rb
CHANGED