rsmp 0.47.0 → 0.48.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.
Files changed (426) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/copilot-setup-steps.yml +1 -1
  3. data/.github/workflows/rubocop.yaml +1 -1
  4. data/.github/workflows/sus.yaml +1 -1
  5. data/CHANGELOG.md +10 -0
  6. data/Gemfile.lock +5 -5
  7. data/README.md +3 -1
  8. data/documentation/cli.md +225 -0
  9. data/documentation/configuration.md +57 -0
  10. data/lib/rsmp/cli/configuration.rb +30 -0
  11. data/lib/rsmp/cli.rb +18 -45
  12. data/lib/rsmp/collect/command_matcher.rb +13 -4
  13. data/lib/rsmp/collect/status_matcher.rb +14 -4
  14. data/lib/rsmp/command_list.rb +1 -1
  15. data/lib/rsmp/convert/export/json_schema/index.rb +64 -0
  16. data/lib/rsmp/convert/export/json_schema/items.rb +9 -1
  17. data/lib/rsmp/convert/export/json_schema/outputs.rb +65 -25
  18. data/lib/rsmp/convert/export/json_schema/values.rb +40 -11
  19. data/lib/rsmp/convert/export/json_schema.rb +3 -1
  20. data/lib/rsmp/message/sxl_codec.rb +194 -0
  21. data/lib/rsmp/message.rb +2 -0
  22. data/lib/rsmp/node/site/connections.rb +80 -0
  23. data/lib/rsmp/node/site/site.rb +21 -35
  24. data/lib/rsmp/node/supervisor/supervisor.rb +42 -0
  25. data/lib/rsmp/options/schemas/site.json +3 -0
  26. data/lib/rsmp/options/schemas/supervisor.json +1 -0
  27. data/lib/rsmp/options/site_options.rb +30 -21
  28. data/lib/rsmp/options/supervisor_options.rb +1 -0
  29. data/lib/rsmp/proxy/modules/receive.rb +3 -1
  30. data/lib/rsmp/proxy/modules/send.rb +26 -14
  31. data/lib/rsmp/proxy/proxy.rb +17 -0
  32. data/lib/rsmp/proxy/site/connection.rb +79 -0
  33. data/lib/rsmp/proxy/site/modules/commands.rb +24 -1
  34. data/lib/rsmp/proxy/site/site_proxy.rb +6 -15
  35. data/lib/rsmp/proxy/supervisor/modules/commands.rb +55 -0
  36. data/lib/rsmp/proxy/supervisor/modules/status.rb +13 -104
  37. data/lib/rsmp/proxy/supervisor/modules/status_updates.rb +148 -0
  38. data/lib/rsmp/proxy/supervisor/supervisor_proxy.rb +19 -0
  39. data/lib/rsmp/schema.rb +38 -1
  40. data/lib/rsmp/tlc/detector_logic.rb +2 -2
  41. data/lib/rsmp/tlc/modules/helpers.rb +0 -22
  42. data/lib/rsmp/tlc/modules/inputs.rb +4 -3
  43. data/lib/rsmp/tlc/modules/modes.rb +2 -2
  44. data/lib/rsmp/tlc/modules/plans.rb +7 -3
  45. data/lib/rsmp/tlc/modules/system.rb +1 -1
  46. data/lib/rsmp/tlc/proxy/control.rb +19 -19
  47. data/lib/rsmp/tlc/proxy/detectors.rb +3 -3
  48. data/lib/rsmp/tlc/proxy/io.rb +15 -12
  49. data/lib/rsmp/tlc/proxy/plans.rb +14 -14
  50. data/lib/rsmp/tlc/proxy/status.rb +9 -5
  51. data/lib/rsmp/tlc/proxy/system.rb +12 -6
  52. data/lib/rsmp/tlc/signal_group.rb +2 -2
  53. data/lib/rsmp/tlc/supervisor_interface.rb +42 -0
  54. data/lib/rsmp/tlc/traffic_controller_site.rb +1 -18
  55. data/lib/rsmp/version.rb +1 -1
  56. data/lib/rsmp.rb +4 -0
  57. data/schemas/core/3.1.4/command_response.json +11 -0
  58. data/schemas/core/3.1.5/command_response.json +11 -0
  59. data/schemas/core/3.2.0/command_response.json +11 -0
  60. data/schemas/core/3.2.1/command_response.json +11 -0
  61. data/schemas/core/3.2.2/command_response.json +11 -0
  62. data/schemas/core/3.3.0/command_response.json +11 -0
  63. data/schemas/tlc/1.0.10/alarms/A0008.json +21 -15
  64. data/schemas/tlc/1.0.10/alarms/A0201.json +26 -20
  65. data/schemas/tlc/1.0.10/alarms/A0202.json +26 -20
  66. data/schemas/tlc/1.0.10/alarms/A0301.json +69 -63
  67. data/schemas/tlc/1.0.10/alarms/A0302.json +87 -81
  68. data/schemas/tlc/1.0.10/commands/M0001.json +66 -60
  69. data/schemas/tlc/1.0.10/commands/M0002.json +48 -42
  70. data/schemas/tlc/1.0.10/commands/M0003.json +48 -42
  71. data/schemas/tlc/1.0.10/commands/M0004.json +35 -29
  72. data/schemas/tlc/1.0.10/commands/M0005.json +48 -42
  73. data/schemas/tlc/1.0.10/commands/M0006.json +48 -42
  74. data/schemas/tlc/1.0.10/commands/M0007.json +35 -29
  75. data/schemas/tlc/1.0.10/commands/M0008.json +48 -42
  76. data/schemas/tlc/1.0.10/commands/M0010.json +35 -29
  77. data/schemas/tlc/1.0.10/commands/M0011.json +35 -29
  78. data/schemas/tlc/1.0.10/commands/M0012.json +35 -29
  79. data/schemas/tlc/1.0.10/commands/M0013.json +35 -29
  80. data/schemas/tlc/1.0.10/commands/M0019.json +61 -55
  81. data/schemas/tlc/1.0.10/commands/M0103.json +51 -45
  82. data/schemas/tlc/1.0.10/commands/M0104.json +100 -94
  83. data/schemas/tlc/1.0.10/commands/command_requests.json +995 -1
  84. data/schemas/tlc/1.0.10/defs/guards.json +19 -0
  85. data/schemas/tlc/1.0.10/sxl.yaml +56 -56
  86. data/schemas/tlc/1.0.10/sxl_index.json +226 -244
  87. data/schemas/tlc/1.0.13/alarms/A0008.json +21 -15
  88. data/schemas/tlc/1.0.13/alarms/A0201.json +26 -20
  89. data/schemas/tlc/1.0.13/alarms/A0202.json +26 -20
  90. data/schemas/tlc/1.0.13/alarms/A0301.json +69 -63
  91. data/schemas/tlc/1.0.13/alarms/A0302.json +87 -81
  92. data/schemas/tlc/1.0.13/commands/M0001.json +66 -60
  93. data/schemas/tlc/1.0.13/commands/M0002.json +48 -42
  94. data/schemas/tlc/1.0.13/commands/M0003.json +48 -42
  95. data/schemas/tlc/1.0.13/commands/M0004.json +35 -29
  96. data/schemas/tlc/1.0.13/commands/M0005.json +48 -42
  97. data/schemas/tlc/1.0.13/commands/M0006.json +48 -42
  98. data/schemas/tlc/1.0.13/commands/M0007.json +35 -29
  99. data/schemas/tlc/1.0.13/commands/M0008.json +48 -42
  100. data/schemas/tlc/1.0.13/commands/M0010.json +35 -29
  101. data/schemas/tlc/1.0.13/commands/M0011.json +35 -29
  102. data/schemas/tlc/1.0.13/commands/M0012.json +35 -29
  103. data/schemas/tlc/1.0.13/commands/M0013.json +35 -29
  104. data/schemas/tlc/1.0.13/commands/M0014.json +48 -42
  105. data/schemas/tlc/1.0.13/commands/M0015.json +48 -42
  106. data/schemas/tlc/1.0.13/commands/M0016.json +35 -29
  107. data/schemas/tlc/1.0.13/commands/M0017.json +35 -29
  108. data/schemas/tlc/1.0.13/commands/M0018.json +48 -42
  109. data/schemas/tlc/1.0.13/commands/M0019.json +61 -55
  110. data/schemas/tlc/1.0.13/commands/M0103.json +51 -45
  111. data/schemas/tlc/1.0.13/commands/M0104.json +100 -94
  112. data/schemas/tlc/1.0.13/commands/command_requests.json +1293 -1
  113. data/schemas/tlc/1.0.13/defs/guards.json +19 -0
  114. data/schemas/tlc/1.0.13/sxl.yaml +63 -63
  115. data/schemas/tlc/1.0.13/sxl_index.json +280 -298
  116. data/schemas/tlc/1.0.14/alarms/A0008.json +21 -15
  117. data/schemas/tlc/1.0.14/alarms/A0201.json +26 -20
  118. data/schemas/tlc/1.0.14/alarms/A0202.json +26 -20
  119. data/schemas/tlc/1.0.14/alarms/A0301.json +69 -63
  120. data/schemas/tlc/1.0.14/alarms/A0302.json +87 -81
  121. data/schemas/tlc/1.0.14/commands/M0001.json +66 -60
  122. data/schemas/tlc/1.0.14/commands/M0002.json +48 -42
  123. data/schemas/tlc/1.0.14/commands/M0003.json +48 -42
  124. data/schemas/tlc/1.0.14/commands/M0004.json +35 -29
  125. data/schemas/tlc/1.0.14/commands/M0005.json +48 -42
  126. data/schemas/tlc/1.0.14/commands/M0006.json +48 -42
  127. data/schemas/tlc/1.0.14/commands/M0007.json +35 -29
  128. data/schemas/tlc/1.0.14/commands/M0008.json +48 -42
  129. data/schemas/tlc/1.0.14/commands/M0010.json +35 -29
  130. data/schemas/tlc/1.0.14/commands/M0011.json +35 -29
  131. data/schemas/tlc/1.0.14/commands/M0012.json +35 -29
  132. data/schemas/tlc/1.0.14/commands/M0013.json +35 -29
  133. data/schemas/tlc/1.0.14/commands/M0014.json +48 -42
  134. data/schemas/tlc/1.0.14/commands/M0015.json +48 -42
  135. data/schemas/tlc/1.0.14/commands/M0016.json +35 -29
  136. data/schemas/tlc/1.0.14/commands/M0017.json +35 -29
  137. data/schemas/tlc/1.0.14/commands/M0018.json +48 -42
  138. data/schemas/tlc/1.0.14/commands/M0019.json +61 -55
  139. data/schemas/tlc/1.0.14/commands/M0103.json +51 -45
  140. data/schemas/tlc/1.0.14/commands/M0104.json +100 -94
  141. data/schemas/tlc/1.0.14/commands/command_requests.json +1293 -1
  142. data/schemas/tlc/1.0.14/defs/guards.json +19 -0
  143. data/schemas/tlc/1.0.14/sxl.yaml +63 -63
  144. data/schemas/tlc/1.0.14/sxl_index.json +304 -322
  145. data/schemas/tlc/1.0.15/alarms/A0008.json +21 -15
  146. data/schemas/tlc/1.0.15/alarms/A0201.json +26 -20
  147. data/schemas/tlc/1.0.15/alarms/A0202.json +26 -20
  148. data/schemas/tlc/1.0.15/alarms/A0301.json +69 -63
  149. data/schemas/tlc/1.0.15/alarms/A0302.json +87 -81
  150. data/schemas/tlc/1.0.15/commands/M0001.json +66 -60
  151. data/schemas/tlc/1.0.15/commands/M0002.json +48 -42
  152. data/schemas/tlc/1.0.15/commands/M0003.json +48 -42
  153. data/schemas/tlc/1.0.15/commands/M0004.json +35 -29
  154. data/schemas/tlc/1.0.15/commands/M0005.json +48 -42
  155. data/schemas/tlc/1.0.15/commands/M0006.json +48 -42
  156. data/schemas/tlc/1.0.15/commands/M0007.json +35 -29
  157. data/schemas/tlc/1.0.15/commands/M0008.json +48 -42
  158. data/schemas/tlc/1.0.15/commands/M0010.json +35 -29
  159. data/schemas/tlc/1.0.15/commands/M0011.json +35 -29
  160. data/schemas/tlc/1.0.15/commands/M0012.json +35 -29
  161. data/schemas/tlc/1.0.15/commands/M0013.json +35 -29
  162. data/schemas/tlc/1.0.15/commands/M0014.json +48 -42
  163. data/schemas/tlc/1.0.15/commands/M0015.json +48 -42
  164. data/schemas/tlc/1.0.15/commands/M0016.json +35 -29
  165. data/schemas/tlc/1.0.15/commands/M0017.json +35 -29
  166. data/schemas/tlc/1.0.15/commands/M0018.json +48 -42
  167. data/schemas/tlc/1.0.15/commands/M0019.json +61 -55
  168. data/schemas/tlc/1.0.15/commands/M0020.json +61 -55
  169. data/schemas/tlc/1.0.15/commands/M0021.json +35 -29
  170. data/schemas/tlc/1.0.15/commands/M0103.json +51 -45
  171. data/schemas/tlc/1.0.15/commands/M0104.json +100 -94
  172. data/schemas/tlc/1.0.15/commands/command_requests.json +1425 -1
  173. data/schemas/tlc/1.0.15/defs/guards.json +19 -0
  174. data/schemas/tlc/1.0.15/sxl.yaml +66 -66
  175. data/schemas/tlc/1.0.15/sxl_index.json +330 -350
  176. data/schemas/tlc/1.0.7/alarms/A0008.json +21 -15
  177. data/schemas/tlc/1.0.7/alarms/A0201.json +26 -20
  178. data/schemas/tlc/1.0.7/alarms/A0202.json +26 -20
  179. data/schemas/tlc/1.0.7/alarms/A0301.json +69 -63
  180. data/schemas/tlc/1.0.7/alarms/A0302.json +87 -81
  181. data/schemas/tlc/1.0.7/commands/M0001.json +66 -60
  182. data/schemas/tlc/1.0.7/commands/M0002.json +48 -42
  183. data/schemas/tlc/1.0.7/commands/M0003.json +48 -42
  184. data/schemas/tlc/1.0.7/commands/M0004.json +35 -29
  185. data/schemas/tlc/1.0.7/commands/M0005.json +48 -42
  186. data/schemas/tlc/1.0.7/commands/M0006.json +48 -42
  187. data/schemas/tlc/1.0.7/commands/M0007.json +35 -29
  188. data/schemas/tlc/1.0.7/commands/M0008.json +48 -42
  189. data/schemas/tlc/1.0.7/commands/M0010.json +35 -29
  190. data/schemas/tlc/1.0.7/commands/M0011.json +35 -29
  191. data/schemas/tlc/1.0.7/commands/M0019.json +61 -55
  192. data/schemas/tlc/1.0.7/commands/M0103.json +51 -45
  193. data/schemas/tlc/1.0.7/commands/M0104.json +100 -94
  194. data/schemas/tlc/1.0.7/commands/command_requests.json +895 -1
  195. data/schemas/tlc/1.0.7/defs/guards.json +19 -0
  196. data/schemas/tlc/1.0.7/sxl.yaml +58 -58
  197. data/schemas/tlc/1.0.7/sxl_index.json +228 -246
  198. data/schemas/tlc/1.0.8/alarms/A0008.json +21 -15
  199. data/schemas/tlc/1.0.8/alarms/A0201.json +26 -20
  200. data/schemas/tlc/1.0.8/alarms/A0202.json +26 -20
  201. data/schemas/tlc/1.0.8/alarms/A0301.json +69 -63
  202. data/schemas/tlc/1.0.8/alarms/A0302.json +87 -81
  203. data/schemas/tlc/1.0.8/commands/M0001.json +66 -60
  204. data/schemas/tlc/1.0.8/commands/M0002.json +48 -42
  205. data/schemas/tlc/1.0.8/commands/M0003.json +48 -42
  206. data/schemas/tlc/1.0.8/commands/M0004.json +35 -29
  207. data/schemas/tlc/1.0.8/commands/M0005.json +48 -42
  208. data/schemas/tlc/1.0.8/commands/M0006.json +48 -42
  209. data/schemas/tlc/1.0.8/commands/M0007.json +35 -29
  210. data/schemas/tlc/1.0.8/commands/M0008.json +48 -42
  211. data/schemas/tlc/1.0.8/commands/M0010.json +35 -29
  212. data/schemas/tlc/1.0.8/commands/M0011.json +35 -29
  213. data/schemas/tlc/1.0.8/commands/M0012.json +35 -29
  214. data/schemas/tlc/1.0.8/commands/M0013.json +35 -29
  215. data/schemas/tlc/1.0.8/commands/M0019.json +61 -55
  216. data/schemas/tlc/1.0.8/commands/M0103.json +51 -45
  217. data/schemas/tlc/1.0.8/commands/M0104.json +100 -94
  218. data/schemas/tlc/1.0.8/commands/command_requests.json +995 -1
  219. data/schemas/tlc/1.0.8/defs/guards.json +19 -0
  220. data/schemas/tlc/1.0.8/sxl.yaml +56 -56
  221. data/schemas/tlc/1.0.8/sxl_index.json +226 -244
  222. data/schemas/tlc/1.0.9/alarms/A0008.json +21 -15
  223. data/schemas/tlc/1.0.9/alarms/A0201.json +26 -20
  224. data/schemas/tlc/1.0.9/alarms/A0202.json +26 -20
  225. data/schemas/tlc/1.0.9/alarms/A0301.json +69 -63
  226. data/schemas/tlc/1.0.9/alarms/A0302.json +87 -81
  227. data/schemas/tlc/1.0.9/commands/M0001.json +66 -60
  228. data/schemas/tlc/1.0.9/commands/M0002.json +48 -42
  229. data/schemas/tlc/1.0.9/commands/M0003.json +48 -42
  230. data/schemas/tlc/1.0.9/commands/M0004.json +35 -29
  231. data/schemas/tlc/1.0.9/commands/M0005.json +48 -42
  232. data/schemas/tlc/1.0.9/commands/M0006.json +48 -42
  233. data/schemas/tlc/1.0.9/commands/M0007.json +35 -29
  234. data/schemas/tlc/1.0.9/commands/M0008.json +48 -42
  235. data/schemas/tlc/1.0.9/commands/M0010.json +35 -29
  236. data/schemas/tlc/1.0.9/commands/M0011.json +35 -29
  237. data/schemas/tlc/1.0.9/commands/M0012.json +35 -29
  238. data/schemas/tlc/1.0.9/commands/M0013.json +35 -29
  239. data/schemas/tlc/1.0.9/commands/M0019.json +61 -55
  240. data/schemas/tlc/1.0.9/commands/M0103.json +51 -45
  241. data/schemas/tlc/1.0.9/commands/M0104.json +100 -94
  242. data/schemas/tlc/1.0.9/commands/command_requests.json +995 -1
  243. data/schemas/tlc/1.0.9/defs/guards.json +19 -0
  244. data/schemas/tlc/1.0.9/sxl.yaml +56 -56
  245. data/schemas/tlc/1.0.9/sxl_index.json +226 -244
  246. data/schemas/tlc/1.1.0/alarms/A0007.json +25 -19
  247. data/schemas/tlc/1.1.0/alarms/A0008.json +21 -15
  248. data/schemas/tlc/1.1.0/alarms/A0201.json +26 -20
  249. data/schemas/tlc/1.1.0/alarms/A0202.json +26 -20
  250. data/schemas/tlc/1.1.0/alarms/A0301.json +69 -63
  251. data/schemas/tlc/1.1.0/alarms/A0302.json +87 -81
  252. data/schemas/tlc/1.1.0/alarms/A0303.json +69 -63
  253. data/schemas/tlc/1.1.0/alarms/A0304.json +87 -81
  254. data/schemas/tlc/1.1.0/commands/M0001.json +66 -60
  255. data/schemas/tlc/1.1.0/commands/M0002.json +48 -42
  256. data/schemas/tlc/1.1.0/commands/M0003.json +48 -42
  257. data/schemas/tlc/1.1.0/commands/M0004.json +35 -29
  258. data/schemas/tlc/1.1.0/commands/M0005.json +48 -42
  259. data/schemas/tlc/1.1.0/commands/M0006.json +48 -42
  260. data/schemas/tlc/1.1.0/commands/M0007.json +35 -29
  261. data/schemas/tlc/1.1.0/commands/M0008.json +48 -42
  262. data/schemas/tlc/1.1.0/commands/M0010.json +35 -29
  263. data/schemas/tlc/1.1.0/commands/M0011.json +35 -29
  264. data/schemas/tlc/1.1.0/commands/M0012.json +35 -29
  265. data/schemas/tlc/1.1.0/commands/M0013.json +35 -29
  266. data/schemas/tlc/1.1.0/commands/M0014.json +48 -42
  267. data/schemas/tlc/1.1.0/commands/M0015.json +48 -42
  268. data/schemas/tlc/1.1.0/commands/M0016.json +35 -29
  269. data/schemas/tlc/1.1.0/commands/M0017.json +35 -29
  270. data/schemas/tlc/1.1.0/commands/M0018.json +48 -42
  271. data/schemas/tlc/1.1.0/commands/M0019.json +61 -55
  272. data/schemas/tlc/1.1.0/commands/M0020.json +61 -55
  273. data/schemas/tlc/1.1.0/commands/M0021.json +35 -29
  274. data/schemas/tlc/1.1.0/commands/M0022.json +194 -188
  275. data/schemas/tlc/1.1.0/commands/M0023.json +35 -29
  276. data/schemas/tlc/1.1.0/commands/M0103.json +51 -45
  277. data/schemas/tlc/1.1.0/commands/M0104.json +100 -94
  278. data/schemas/tlc/1.1.0/commands/command_requests.json +1525 -1
  279. data/schemas/tlc/1.1.0/defs/guards.json +19 -0
  280. data/schemas/tlc/1.1.0/statuses/S0033.json +2 -2
  281. data/schemas/tlc/1.1.0/sxl.yaml +75 -74
  282. data/schemas/tlc/1.1.0/sxl_index.json +391 -398
  283. data/schemas/tlc/1.2.0/alarms/A0007.json +25 -19
  284. data/schemas/tlc/1.2.0/alarms/A0008.json +21 -15
  285. data/schemas/tlc/1.2.0/alarms/A0201.json +26 -20
  286. data/schemas/tlc/1.2.0/alarms/A0202.json +26 -20
  287. data/schemas/tlc/1.2.0/alarms/A0301.json +69 -63
  288. data/schemas/tlc/1.2.0/alarms/A0302.json +87 -81
  289. data/schemas/tlc/1.2.0/alarms/A0303.json +69 -63
  290. data/schemas/tlc/1.2.0/alarms/A0304.json +87 -81
  291. data/schemas/tlc/1.2.0/commands/M0001.json +66 -60
  292. data/schemas/tlc/1.2.0/commands/M0002.json +48 -42
  293. data/schemas/tlc/1.2.0/commands/M0003.json +48 -42
  294. data/schemas/tlc/1.2.0/commands/M0004.json +35 -29
  295. data/schemas/tlc/1.2.0/commands/M0005.json +48 -42
  296. data/schemas/tlc/1.2.0/commands/M0006.json +48 -42
  297. data/schemas/tlc/1.2.0/commands/M0007.json +35 -29
  298. data/schemas/tlc/1.2.0/commands/M0008.json +48 -42
  299. data/schemas/tlc/1.2.0/commands/M0010.json +35 -29
  300. data/schemas/tlc/1.2.0/commands/M0011.json +35 -29
  301. data/schemas/tlc/1.2.0/commands/M0012.json +35 -29
  302. data/schemas/tlc/1.2.0/commands/M0013.json +35 -29
  303. data/schemas/tlc/1.2.0/commands/M0014.json +48 -42
  304. data/schemas/tlc/1.2.0/commands/M0015.json +48 -42
  305. data/schemas/tlc/1.2.0/commands/M0016.json +35 -29
  306. data/schemas/tlc/1.2.0/commands/M0017.json +35 -29
  307. data/schemas/tlc/1.2.0/commands/M0018.json +48 -42
  308. data/schemas/tlc/1.2.0/commands/M0019.json +61 -55
  309. data/schemas/tlc/1.2.0/commands/M0020.json +61 -55
  310. data/schemas/tlc/1.2.0/commands/M0021.json +35 -29
  311. data/schemas/tlc/1.2.0/commands/M0022.json +194 -188
  312. data/schemas/tlc/1.2.0/commands/M0023.json +35 -29
  313. data/schemas/tlc/1.2.0/commands/M0103.json +51 -45
  314. data/schemas/tlc/1.2.0/commands/M0104.json +100 -94
  315. data/schemas/tlc/1.2.0/commands/command_requests.json +1525 -1
  316. data/schemas/tlc/1.2.0/defs/guards.json +19 -0
  317. data/schemas/tlc/1.2.0/statuses/S0033.json +2 -2
  318. data/schemas/tlc/1.2.0/sxl.yaml +77 -76
  319. data/schemas/tlc/1.2.0/sxl_index.json +401 -397
  320. data/schemas/tlc/1.2.1/alarms/A0007.json +25 -19
  321. data/schemas/tlc/1.2.1/alarms/A0008.json +21 -15
  322. data/schemas/tlc/1.2.1/alarms/A0201.json +26 -20
  323. data/schemas/tlc/1.2.1/alarms/A0202.json +26 -20
  324. data/schemas/tlc/1.2.1/alarms/A0301.json +69 -63
  325. data/schemas/tlc/1.2.1/alarms/A0302.json +87 -81
  326. data/schemas/tlc/1.2.1/alarms/A0303.json +69 -63
  327. data/schemas/tlc/1.2.1/alarms/A0304.json +87 -81
  328. data/schemas/tlc/1.2.1/commands/M0001.json +66 -60
  329. data/schemas/tlc/1.2.1/commands/M0002.json +48 -42
  330. data/schemas/tlc/1.2.1/commands/M0003.json +48 -42
  331. data/schemas/tlc/1.2.1/commands/M0004.json +35 -29
  332. data/schemas/tlc/1.2.1/commands/M0005.json +48 -42
  333. data/schemas/tlc/1.2.1/commands/M0006.json +48 -42
  334. data/schemas/tlc/1.2.1/commands/M0007.json +35 -29
  335. data/schemas/tlc/1.2.1/commands/M0008.json +48 -42
  336. data/schemas/tlc/1.2.1/commands/M0010.json +35 -29
  337. data/schemas/tlc/1.2.1/commands/M0011.json +35 -29
  338. data/schemas/tlc/1.2.1/commands/M0012.json +35 -29
  339. data/schemas/tlc/1.2.1/commands/M0013.json +35 -29
  340. data/schemas/tlc/1.2.1/commands/M0014.json +48 -42
  341. data/schemas/tlc/1.2.1/commands/M0015.json +48 -42
  342. data/schemas/tlc/1.2.1/commands/M0016.json +35 -29
  343. data/schemas/tlc/1.2.1/commands/M0017.json +35 -29
  344. data/schemas/tlc/1.2.1/commands/M0018.json +48 -42
  345. data/schemas/tlc/1.2.1/commands/M0019.json +61 -55
  346. data/schemas/tlc/1.2.1/commands/M0020.json +61 -55
  347. data/schemas/tlc/1.2.1/commands/M0021.json +35 -29
  348. data/schemas/tlc/1.2.1/commands/M0022.json +194 -188
  349. data/schemas/tlc/1.2.1/commands/M0023.json +35 -29
  350. data/schemas/tlc/1.2.1/commands/M0103.json +51 -45
  351. data/schemas/tlc/1.2.1/commands/M0104.json +100 -94
  352. data/schemas/tlc/1.2.1/commands/command_requests.json +1525 -1
  353. data/schemas/tlc/1.2.1/defs/guards.json +19 -0
  354. data/schemas/tlc/1.2.1/statuses/S0033.json +2 -2
  355. data/schemas/tlc/1.2.1/sxl.yaml +77 -76
  356. data/schemas/tlc/1.2.1/sxl_index.json +401 -397
  357. data/schemas/tlc/1.3.0/alarms/A0007.json +25 -19
  358. data/schemas/tlc/1.3.0/alarms/A0008.json +21 -15
  359. data/schemas/tlc/1.3.0/alarms/A0201.json +26 -20
  360. data/schemas/tlc/1.3.0/alarms/A0202.json +26 -20
  361. data/schemas/tlc/1.3.0/alarms/A0301.json +69 -63
  362. data/schemas/tlc/1.3.0/alarms/A0302.json +87 -81
  363. data/schemas/tlc/1.3.0/alarms/A0303.json +70 -64
  364. data/schemas/tlc/1.3.0/alarms/A0304.json +88 -82
  365. data/schemas/tlc/1.3.0/commands/M0001.json +66 -60
  366. data/schemas/tlc/1.3.0/commands/M0002.json +48 -42
  367. data/schemas/tlc/1.3.0/commands/M0003.json +48 -42
  368. data/schemas/tlc/1.3.0/commands/M0004.json +35 -29
  369. data/schemas/tlc/1.3.0/commands/M0005.json +48 -42
  370. data/schemas/tlc/1.3.0/commands/M0006.json +48 -42
  371. data/schemas/tlc/1.3.0/commands/M0007.json +35 -29
  372. data/schemas/tlc/1.3.0/commands/M0008.json +61 -55
  373. data/schemas/tlc/1.3.0/commands/M0010.json +35 -29
  374. data/schemas/tlc/1.3.0/commands/M0011.json +35 -29
  375. data/schemas/tlc/1.3.0/commands/M0012.json +35 -29
  376. data/schemas/tlc/1.3.0/commands/M0013.json +36 -30
  377. data/schemas/tlc/1.3.0/commands/M0014.json +48 -42
  378. data/schemas/tlc/1.3.0/commands/M0015.json +48 -42
  379. data/schemas/tlc/1.3.0/commands/M0016.json +35 -29
  380. data/schemas/tlc/1.3.0/commands/M0017.json +35 -29
  381. data/schemas/tlc/1.3.0/commands/M0018.json +48 -42
  382. data/schemas/tlc/1.3.0/commands/M0019.json +61 -55
  383. data/schemas/tlc/1.3.0/commands/M0020.json +61 -55
  384. data/schemas/tlc/1.3.0/commands/M0021.json +35 -29
  385. data/schemas/tlc/1.3.0/commands/M0022.json +195 -189
  386. data/schemas/tlc/1.3.0/commands/M0023.json +35 -29
  387. data/schemas/tlc/1.3.0/commands/M0024.json +21 -15
  388. data/schemas/tlc/1.3.0/commands/M0103.json +51 -45
  389. data/schemas/tlc/1.3.0/commands/M0104.json +100 -94
  390. data/schemas/tlc/1.3.0/commands/command_requests.json +1559 -1
  391. data/schemas/tlc/1.3.0/defs/guards.json +19 -0
  392. data/schemas/tlc/1.3.0/statuses/S0001.json +4 -4
  393. data/schemas/tlc/1.3.0/statuses/S0005.json +3 -3
  394. data/schemas/tlc/1.3.0/statuses/S0006.json +2 -2
  395. data/schemas/tlc/1.3.0/statuses/S0007.json +1 -1
  396. data/schemas/tlc/1.3.0/statuses/S0008.json +1 -1
  397. data/schemas/tlc/1.3.0/statuses/S0009.json +1 -1
  398. data/schemas/tlc/1.3.0/statuses/S0010.json +1 -1
  399. data/schemas/tlc/1.3.0/statuses/S0011.json +1 -1
  400. data/schemas/tlc/1.3.0/statuses/S0012.json +1 -1
  401. data/schemas/tlc/1.3.0/statuses/S0013.json +1 -1
  402. data/schemas/tlc/1.3.0/statuses/S0014.json +1 -1
  403. data/schemas/tlc/1.3.0/statuses/S0015.json +1 -1
  404. data/schemas/tlc/1.3.0/statuses/S0016.json +1 -1
  405. data/schemas/tlc/1.3.0/statuses/S0017.json +1 -1
  406. data/schemas/tlc/1.3.0/statuses/S0019.json +1 -1
  407. data/schemas/tlc/1.3.0/statuses/S0020.json +1 -1
  408. data/schemas/tlc/1.3.0/statuses/S0025.json +2 -2
  409. data/schemas/tlc/1.3.0/statuses/S0027.json +1 -1
  410. data/schemas/tlc/1.3.0/statuses/S0032.json +2 -2
  411. data/schemas/tlc/1.3.0/statuses/S0033.json +5 -5
  412. data/schemas/tlc/1.3.0/statuses/S0034.json +1 -1
  413. data/schemas/tlc/1.3.0/statuses/S0035.json +1 -1
  414. data/schemas/tlc/1.3.0/statuses/S0091.json +1 -1
  415. data/schemas/tlc/1.3.0/statuses/S0092.json +1 -1
  416. data/schemas/tlc/1.3.0/statuses/S0096.json +6 -6
  417. data/schemas/tlc/1.3.0/statuses/S0201.json +1 -1
  418. data/schemas/tlc/1.3.0/statuses/S0202.json +1 -1
  419. data/schemas/tlc/1.3.0/statuses/S0203.json +1 -1
  420. data/schemas/tlc/1.3.0/statuses/S0204.json +9 -9
  421. data/schemas/tlc/1.3.0/statuses/S0205.json +1 -1
  422. data/schemas/tlc/1.3.0/statuses/S0206.json +1 -1
  423. data/schemas/tlc/1.3.0/statuses/S0207.json +1 -1
  424. data/schemas/tlc/1.3.0/statuses/S0208.json +9 -9
  425. data/schemas/tlc/1.3.0/sxl_index.json +408 -402
  426. metadata +8 -1
@@ -15,7 +15,7 @@ module RSMP
15
15
  'cCI' => 'M0006',
16
16
  'cO' => 'setInput',
17
17
  'n' => 'status',
18
- 'v' => status.to_s
18
+ 'v' => command_value('M0006', 'status', status)
19
19
  }, {
20
20
  'cCI' => 'M0006',
21
21
  'cO' => 'setInput',
@@ -25,7 +25,7 @@ module RSMP
25
25
  'cCI' => 'M0006',
26
26
  'cO' => 'setInput',
27
27
  'n' => 'input',
28
- 'v' => input.to_s
28
+ 'v' => command_value('M0006', 'input', input)
29
29
  }]
30
30
  send_command_and_collect(command_list, within: within).ok!
31
31
  end
@@ -41,7 +41,7 @@ module RSMP
41
41
  'cCI' => 'M0013',
42
42
  'cO' => 'setInput',
43
43
  'n' => 'status',
44
- 'v' => status.to_s
44
+ 'v' => command_value('M0013', 'status', status)
45
45
  }, {
46
46
  'cCI' => 'M0013',
47
47
  'cO' => 'setInput',
@@ -73,7 +73,7 @@ module RSMP
73
73
  'cCI' => 'M0020',
74
74
  'cO' => 'setOutput',
75
75
  'n' => 'status',
76
- 'v' => status.to_s
76
+ 'v' => command_value('M0020', 'status', status)
77
77
  }, {
78
78
  'cCI' => 'M0020',
79
79
  'cO' => 'setOutput',
@@ -83,12 +83,12 @@ module RSMP
83
83
  'cCI' => 'M0020',
84
84
  'cO' => 'setOutput',
85
85
  'n' => 'output',
86
- 'v' => output.to_s
86
+ 'v' => command_value('M0020', 'output', output)
87
87
  }, {
88
88
  'cCI' => 'M0020',
89
89
  'cO' => 'setOutput',
90
90
  'n' => 'outputValue',
91
- 'v' => value.to_s
91
+ 'v' => command_value('M0020', 'outputValue', value)
92
92
  }]
93
93
  send_command_and_collect(command_list, within: within).ok!
94
94
  end
@@ -98,10 +98,13 @@ module RSMP
98
98
  def force_input_command_list(input, status, value)
99
99
  security_code = security_code_for(2)
100
100
  [
101
- { 'cCI' => 'M0019', 'cO' => 'setInput', 'n' => 'status', 'v' => status.to_s },
101
+ { 'cCI' => 'M0019', 'cO' => 'setInput', 'n' => 'status',
102
+ 'v' => command_value('M0019', 'status', status) },
102
103
  { 'cCI' => 'M0019', 'cO' => 'setInput', 'n' => 'securityCode', 'v' => security_code.to_s },
103
- { 'cCI' => 'M0019', 'cO' => 'setInput', 'n' => 'input', 'v' => input.to_s },
104
- { 'cCI' => 'M0019', 'cO' => 'setInput', 'n' => 'inputValue', 'v' => value.to_s }
104
+ { 'cCI' => 'M0019', 'cO' => 'setInput', 'n' => 'input',
105
+ 'v' => command_value('M0019', 'input', input) },
106
+ { 'cCI' => 'M0019', 'cO' => 'setInput', 'n' => 'inputValue',
107
+ 'v' => command_value('M0019', 'inputValue', value) }
105
108
  ]
106
109
  end
107
110
 
@@ -110,11 +113,11 @@ module RSMP
110
113
  # S0029 is used to check the forced status, but is only available from sxl 1.0.13
111
114
  if RSMP::Proxy.version_meets_requirement?(sxl_version, '>=1.0.13')
112
115
  result << { 'sCI' => 'S0029', 'n' => 'status',
113
- 's' => /^.{#{input.to_i - 1}}#{status == 'True' ? '1' : '0'}/ }
116
+ 's' => /^.{#{input.to_i - 1}}#{boolean_value(status) ? '1' : '0'}/ }
114
117
  end
115
- if status == 'True'
118
+ if boolean_value(status)
116
119
  result << { 'sCI' => 'S0003', 'n' => 'inputstatus',
117
- 's' => /^.{#{input.to_i - 1}}#{value == 'True' ? '1' : '0'}/ }
120
+ 's' => /^.{#{input.to_i - 1}}#{boolean_value(value) ? '1' : '0'}/ }
118
121
  end
119
122
  result
120
123
  end
@@ -15,7 +15,7 @@ module RSMP
15
15
  'cCI' => 'M0014',
16
16
  'cO' => 'setCommands',
17
17
  'n' => 'status',
18
- 'v' => status.to_s
18
+ 'v' => command_value('M0014', 'status', status)
19
19
  }, {
20
20
  'cCI' => 'M0014',
21
21
  'cO' => 'setCommands',
@@ -25,7 +25,7 @@ module RSMP
25
25
  'cCI' => 'M0014',
26
26
  'cO' => 'setCommands',
27
27
  'n' => 'plan',
28
- 'v' => plan.to_s
28
+ 'v' => command_value('M0014', 'plan', plan)
29
29
  }]
30
30
  send_command_and_collect(command_list, within: within).ok!
31
31
  end
@@ -41,7 +41,7 @@ module RSMP
41
41
  'cCI' => 'M0023',
42
42
  'cO' => 'setTimeout',
43
43
  'n' => 'status',
44
- 'v' => status.to_s
44
+ 'v' => command_value('M0023', 'status', status)
45
45
  }, {
46
46
  'cCI' => 'M0023',
47
47
  'cO' => 'setTimeout',
@@ -62,7 +62,7 @@ module RSMP
62
62
  'cCI' => 'M0015',
63
63
  'cO' => 'setOffset',
64
64
  'n' => 'status',
65
- 'v' => offset.to_s
65
+ 'v' => command_value('M0015', 'status', offset)
66
66
  }, {
67
67
  'cCI' => 'M0015',
68
68
  'cO' => 'setOffset',
@@ -72,7 +72,7 @@ module RSMP
72
72
  'cCI' => 'M0015',
73
73
  'cO' => 'setOffset',
74
74
  'n' => 'plan',
75
- 'v' => plan.to_s
75
+ 'v' => command_value('M0015', 'plan', plan)
76
76
  }]
77
77
  send_command_and_collect(command_list, within: within).ok!
78
78
  end
@@ -88,7 +88,7 @@ module RSMP
88
88
  'cCI' => 'M0002',
89
89
  'cO' => 'setPlan',
90
90
  'n' => 'status',
91
- 'v' => 'True'
91
+ 'v' => command_value('M0002', 'status', true)
92
92
  }, {
93
93
  'cCI' => 'M0002',
94
94
  'cO' => 'setPlan',
@@ -98,9 +98,9 @@ module RSMP
98
98
  'cCI' => 'M0002',
99
99
  'cO' => 'setPlan',
100
100
  'n' => 'timeplan',
101
- 'v' => plan_nr.to_s
101
+ 'v' => command_value('M0002', 'timeplan', plan_nr)
102
102
  }]
103
- confirm_status = [{ 'sCI' => 'S0014', 'n' => 'status', 's' => plan_nr.to_s }]
103
+ confirm_status = [{ 'sCI' => 'S0014', 'n' => 'status', 's' => integer_value(plan_nr) }]
104
104
  send_command_and_collect(command_list, within: within).ok!
105
105
  wait_for_status("timeplan #{plan_nr}", confirm_status, timeout: within)
106
106
  end
@@ -116,7 +116,7 @@ module RSMP
116
116
  'cCI' => 'M0016',
117
117
  'cO' => 'setWeekTable',
118
118
  'n' => 'status',
119
- 'v' => status.to_s
119
+ 'v' => command_value('M0016', 'status', status)
120
120
  }, {
121
121
  'cCI' => 'M0016',
122
122
  'cO' => 'setWeekTable',
@@ -137,7 +137,7 @@ module RSMP
137
137
  'cCI' => 'M0017',
138
138
  'cO' => 'setTimeTable',
139
139
  'n' => 'status',
140
- 'v' => status.to_s
140
+ 'v' => command_value('M0017', 'status', status)
141
141
  }, {
142
142
  'cCI' => 'M0017',
143
143
  'cO' => 'setTimeTable',
@@ -158,7 +158,7 @@ module RSMP
158
158
  'cCI' => 'M0018',
159
159
  'cO' => 'setCycleTime',
160
160
  'n' => 'status',
161
- 'v' => cycle_time.to_s
161
+ 'v' => command_value('M0018', 'status', cycle_time)
162
162
  }, {
163
163
  'cCI' => 'M0018',
164
164
  'cO' => 'setCycleTime',
@@ -168,7 +168,7 @@ module RSMP
168
168
  'cCI' => 'M0018',
169
169
  'cO' => 'setCycleTime',
170
170
  'n' => 'plan',
171
- 'v' => plan.to_s
171
+ 'v' => command_value('M0018', 'plan', plan)
172
172
  }]
173
173
  send_command_and_collect(command_list, within:).ok!
174
174
  end
@@ -183,7 +183,7 @@ module RSMP
183
183
  'cCI' => 'M0010',
184
184
  'cO' => 'setStart',
185
185
  'n' => 'status',
186
- 'v' => 'True'
186
+ 'v' => command_value('M0010', 'status', true)
187
187
  }, {
188
188
  'cCI' => 'M0010',
189
189
  'cO' => 'setStart',
@@ -203,7 +203,7 @@ module RSMP
203
203
  'cCI' => 'M0011',
204
204
  'cO' => 'setStop',
205
205
  'n' => 'status',
206
- 'v' => 'True'
206
+ 'v' => command_value('M0011', 'status', true)
207
207
  }, {
208
208
  'cCI' => 'M0011',
209
209
  'cO' => 'setStop',
@@ -58,9 +58,9 @@ module RSMP
58
58
  wait_for_status(
59
59
  'normal control on, yellow flash off, startup mode off',
60
60
  [
61
- { 'sCI' => 'S0007', 'n' => 'status', 's' => /^True(,True)*$/ },
62
- { 'sCI' => 'S0011', 'n' => 'status', 's' => /^False(,False)*$/ },
63
- { 'sCI' => 'S0005', 'n' => 'status', 's' => 'False' }
61
+ { 'sCI' => 'S0007', 'n' => 'status', 's' => [true] },
62
+ { 'sCI' => 'S0011', 'n' => 'status', 's' => [false] },
63
+ { 'sCI' => 'S0005', 'n' => 'status', 's' => false }
64
64
  ],
65
65
  timeout: timeout
66
66
  )
@@ -73,7 +73,7 @@ module RSMP
73
73
  timeout = options[:timeout] || @timeouts['status_response']
74
74
  collector = request_status_and_collect({ S0028: [:status] }, within: timeout)
75
75
  collector.ok!
76
- collector.messages.first.attributes['sS'].first['s'].split(',').to_h do |item|
76
+ status_items(collector.messages.first.attributes['sS'].first['s']).to_h do |item|
77
77
  item.split('-').map(&:to_i)
78
78
  end
79
79
  end
@@ -101,12 +101,16 @@ module RSMP
101
101
  private
102
102
 
103
103
  def extract_band_value(collector, plan, band)
104
- collector.messages.first.attributes['sS'].first['s'].split(',').each do |item|
104
+ status_items(collector.messages.first.attributes['sS'].first['s']).each do |item|
105
105
  some_plan, some_band, value = item.split('-')
106
106
  return value.to_i if some_plan.to_i == plan.to_i && some_band.to_i == band.to_i
107
107
  end
108
108
  nil
109
109
  end
110
+
111
+ def status_items(status)
112
+ status.is_a?(Array) ? status : status.split(',')
113
+ end
110
114
  end
111
115
  end
112
116
  end
@@ -43,12 +43,18 @@ module RSMP
43
43
  security_code = security_code_for(1)
44
44
  [
45
45
  { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'securityCode', 'v' => security_code.to_s },
46
- { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'year', 'v' => clock.year.to_s },
47
- { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'month', 'v' => clock.month.to_s },
48
- { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'day', 'v' => clock.day.to_s },
49
- { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'hour', 'v' => clock.hour.to_s },
50
- { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'minute', 'v' => clock.min.to_s },
51
- { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'second', 'v' => clock.sec.to_s }
46
+ { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'year',
47
+ 'v' => command_value('M0104', 'year', clock.year) },
48
+ { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'month',
49
+ 'v' => command_value('M0104', 'month', clock.month) },
50
+ { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'day',
51
+ 'v' => command_value('M0104', 'day', clock.day) },
52
+ { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'hour',
53
+ 'v' => command_value('M0104', 'hour', clock.hour) },
54
+ { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'minute',
55
+ 'v' => command_value('M0104', 'minute', clock.min) },
56
+ { 'cCI' => 'M0104', 'cO' => 'setDate', 'n' => 'second',
57
+ 'v' => command_value('M0104', 'second', clock.sec) }
52
58
  ]
53
59
  end
54
60
  end
@@ -56,7 +56,7 @@ module RSMP
56
56
  # Start of signal group. Orders a signal group to green
57
57
  def handle_m0010(arg, _options = {})
58
58
  @node.verify_security_code 2, arg['securityCode']
59
- return unless TrafficControllerSite.from_rsmp_bool? arg['status']
59
+ return unless arg['status']
60
60
 
61
61
  log "Start signal group #{c_id}, go to green", level: :info
62
62
  end
@@ -64,7 +64,7 @@ module RSMP
64
64
  # Stop of signal group. Orders a signal group to red
65
65
  def handle_m0011(arg, _options = {})
66
66
  @node.verify_security_code 2, arg['securityCode']
67
- return unless TrafficControllerSite.from_rsmp_bool? arg['status']
67
+ return unless arg['status']
68
68
 
69
69
  log "Stop signal group #{c_id}, go to red", level: :info
70
70
  end
@@ -77,6 +77,48 @@ module RSMP
77
77
  code
78
78
  end
79
79
 
80
+ def boolean_value(value)
81
+ case value
82
+ when true, 'True'
83
+ true
84
+ when false, 'False'
85
+ false
86
+ else
87
+ value
88
+ end
89
+ end
90
+
91
+ def integer_value(value)
92
+ return value.to_i if value.is_a?(String) && value.match?(/\A[+-]?\d+\z/)
93
+
94
+ value
95
+ end
96
+
97
+ def list_value(value)
98
+ value.is_a?(Array) ? value : value.to_s.split(',')
99
+ end
100
+
101
+ def command_value(command_code, argument_name, value)
102
+ descriptor = RSMP::Schema.sxl_argument_descriptor(name, sxl_version, :commands, command_code, argument_name)
103
+ normalize_command_value(value, descriptor)
104
+ end
105
+
106
+ def normalize_command_value(value, descriptor)
107
+ type = descriptor.is_a?(Hash) ? descriptor['type'] : descriptor.to_s
108
+ case type
109
+ when 'boolean', 'boolean_as_string'
110
+ boolean_value(value)
111
+ when 'integer', 'integer_as_string', 'long_as_string'
112
+ integer_value(value)
113
+ when /_list(_as_string)?\z/
114
+ list_value(value)
115
+ when 'string', 'base64', 'timestamp'
116
+ value.to_s
117
+ else
118
+ value
119
+ end
120
+ end
121
+
80
122
  def cache_status_item(item)
81
123
  case item['sCI']
82
124
  when 'S0007' then @functional_position = item['s'] if item['n'] == 'status'
@@ -147,25 +147,8 @@ module RSMP
147
147
  @security_codes[level] = new_code
148
148
  end
149
149
 
150
- def self.to_rmsp_bool(bool)
151
- if bool
152
- 'True'
153
- else
154
- 'False'
155
- end
156
- end
157
-
158
- def self.from_rsmp_bool?(str)
159
- str == 'True'
160
- end
161
-
162
150
  def self.make_status(value, quality = 'recent')
163
- case value
164
- when true, false
165
- [to_rmsp_bool(value), quality]
166
- else
167
- [value, quality]
168
- end
151
+ [value, quality]
169
152
  end
170
153
 
171
154
  def do_deferred(key, _item = nil)
data/lib/rsmp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = '0.47.0'.freeze
2
+ VERSION = '0.48.0'.freeze
3
3
  end
data/lib/rsmp.rb CHANGED
@@ -25,6 +25,7 @@ require_relative 'rsmp/log/archive'
25
25
  require_relative 'rsmp/log/filtering'
26
26
  require_relative 'rsmp/log/colorization'
27
27
  require_relative 'rsmp/log/logger'
28
+ require_relative 'rsmp/message/sxl_codec'
28
29
  require_relative 'rsmp/message'
29
30
  require_relative 'rsmp/component/components'
30
31
  require_relative 'rsmp/component/alarm_state'
@@ -52,6 +53,7 @@ require_relative 'rsmp/collect/ack_collector'
52
53
  require_relative 'rsmp/node/protocol'
53
54
  require_relative 'rsmp/node/task'
54
55
  require_relative 'rsmp/node/node'
56
+ require_relative 'rsmp/node/site/connections'
55
57
  require_relative 'rsmp/node/site/site'
56
58
  require_relative 'rsmp/node/supervisor/modules/configuration'
57
59
  require_relative 'rsmp/node/supervisor/modules/connection'
@@ -74,6 +76,7 @@ require_relative 'rsmp/sxl/interface'
74
76
  require_relative 'rsmp/sxl/supervisor_interface'
75
77
  require_relative 'rsmp/sxl/site_interface'
76
78
  require_relative 'rsmp/sxl/registry'
79
+ require_relative 'rsmp/proxy/supervisor/modules/status_updates'
77
80
  require_relative 'rsmp/proxy/supervisor/modules/status'
78
81
  require_relative 'rsmp/proxy/supervisor/modules/commands'
79
82
  require_relative 'rsmp/proxy/supervisor/modules/alarms'
@@ -84,6 +87,7 @@ require_relative 'rsmp/proxy/site/modules/status'
84
87
  require_relative 'rsmp/proxy/site/modules/aggregated_status'
85
88
  require_relative 'rsmp/proxy/site/modules/alarms'
86
89
  require_relative 'rsmp/proxy/site/modules/commands'
90
+ require_relative 'rsmp/proxy/site/connection'
87
91
  require_relative 'rsmp/proxy/site/sxl_selection'
88
92
  require_relative 'rsmp/proxy/site/site_proxy'
89
93
  require_relative 'rsmp/tlc'
@@ -25,6 +25,17 @@
25
25
  "enum" : [ "recent", "old", "undefined", "unknown" ]
26
26
  }
27
27
  },
28
+ "if": {
29
+ "required": [ "age" ],
30
+ "properties": {
31
+ "age" : { "enum" : [ "unknown", "undefined" ] }
32
+ }
33
+ },
34
+ "then": {
35
+ "properties": {
36
+ "v" : { "type" : "null" }
37
+ }
38
+ },
28
39
  "required" : [ "cCI", "n", "v", "age" ],
29
40
  "additionalProperties": false
30
41
  }
@@ -25,6 +25,17 @@
25
25
  "enum" : [ "recent", "old", "undefined", "unknown" ]
26
26
  }
27
27
  },
28
+ "if": {
29
+ "required": [ "age" ],
30
+ "properties": {
31
+ "age" : { "enum" : [ "unknown", "undefined" ] }
32
+ }
33
+ },
34
+ "then": {
35
+ "properties": {
36
+ "v" : { "type" : "null" }
37
+ }
38
+ },
28
39
  "required" : [ "cCI", "n", "v", "age" ],
29
40
  "additionalProperties": false
30
41
  }
@@ -25,6 +25,17 @@
25
25
  "enum" : [ "recent", "old", "undefined", "unknown" ]
26
26
  }
27
27
  },
28
+ "if": {
29
+ "required": [ "age" ],
30
+ "properties": {
31
+ "age" : { "enum" : [ "unknown", "undefined" ] }
32
+ }
33
+ },
34
+ "then": {
35
+ "properties": {
36
+ "v" : { "type" : "null" }
37
+ }
38
+ },
28
39
  "required" : [ "cCI", "n", "v", "age" ],
29
40
  "additionalProperties": false
30
41
  }
@@ -25,6 +25,17 @@
25
25
  "enum" : [ "recent", "old", "undefined", "unknown" ]
26
26
  }
27
27
  },
28
+ "if": {
29
+ "required": [ "age" ],
30
+ "properties": {
31
+ "age" : { "enum" : [ "unknown", "undefined" ] }
32
+ }
33
+ },
34
+ "then": {
35
+ "properties": {
36
+ "v" : { "type" : "null" }
37
+ }
38
+ },
28
39
  "required" : [ "cCI", "n", "v", "age" ],
29
40
  "additionalProperties": false
30
41
  }
@@ -26,6 +26,17 @@
26
26
  "enum" : [ "recent", "old", "undefined", "unknown" ]
27
27
  }
28
28
  },
29
+ "if": {
30
+ "required": [ "age" ],
31
+ "properties": {
32
+ "age" : { "enum" : [ "unknown", "undefined" ] }
33
+ }
34
+ },
35
+ "then": {
36
+ "properties": {
37
+ "v" : { "type" : "null" }
38
+ }
39
+ },
29
40
  "required" : [ "cCI", "n", "v", "age" ],
30
41
  "additionalProperties": false
31
42
  }
@@ -26,6 +26,17 @@
26
26
  "enum" : [ "recent", "old", "undefined", "unknown" ]
27
27
  }
28
28
  },
29
+ "if": {
30
+ "required": [ "age" ],
31
+ "properties": {
32
+ "age" : { "enum" : [ "unknown", "undefined" ] }
33
+ }
34
+ },
35
+ "then": {
36
+ "properties": {
37
+ "v" : { "type" : "null" }
38
+ }
39
+ },
29
40
  "required" : [ "cCI", "n", "v", "age" ],
30
41
  "additionalProperties": false
31
42
  }
@@ -8,23 +8,29 @@
8
8
  ]
9
9
  }
10
10
  },
11
- "allOf" : [
12
- {
13
- "if" : {
14
- "properties" : {
15
- "n" : {
16
- "const" : "timeplan"
11
+ "if" : {
12
+ "$ref" : "../defs/guards.json#/$defs/age_unknown_or_undefined"
13
+ },
14
+ "then" : {},
15
+ "else" : {
16
+ "allOf" : [
17
+ {
18
+ "if" : {
19
+ "properties" : {
20
+ "n" : {
21
+ "const" : "timeplan"
22
+ }
17
23
  }
18
- }
19
- },
20
- "then" : {
21
- "properties" : {
22
- "v" : {
23
- "description" : "Current time plan",
24
- "$ref" : "../defs/definitions.json#/integer"
24
+ },
25
+ "then" : {
26
+ "properties" : {
27
+ "v" : {
28
+ "description" : "Current time plan",
29
+ "$ref" : "../defs/definitions.json#/integer"
30
+ }
25
31
  }
26
32
  }
27
33
  }
28
- }
29
- ]
34
+ ]
35
+ }
30
36
  }
@@ -8,28 +8,34 @@
8
8
  ]
9
9
  }
10
10
  },
11
- "allOf" : [
12
- {
13
- "if" : {
14
- "properties" : {
15
- "n" : {
16
- "const" : "color"
11
+ "if" : {
12
+ "$ref" : "../defs/guards.json#/$defs/age_unknown_or_undefined"
13
+ },
14
+ "then" : {},
15
+ "else" : {
16
+ "allOf" : [
17
+ {
18
+ "if" : {
19
+ "properties" : {
20
+ "n" : {
21
+ "const" : "color"
22
+ }
17
23
  }
18
- }
19
- },
20
- "then" : {
21
- "properties" : {
22
- "v" : {
23
- "description" : "Color of lamp",
24
- "type" : "string",
25
- "enum" : [
26
- "green",
27
- "red",
28
- "yellow"
29
- ]
24
+ },
25
+ "then" : {
26
+ "properties" : {
27
+ "v" : {
28
+ "description" : "Color of lamp",
29
+ "type" : "string",
30
+ "enum" : [
31
+ "green",
32
+ "red",
33
+ "yellow"
34
+ ]
35
+ }
30
36
  }
31
37
  }
32
38
  }
33
- }
34
- ]
39
+ ]
40
+ }
35
41
  }