zigbee-herdsman 0.55.5 → 0.56.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 (381) hide show
  1. package/.github/workflows/typedoc.yaml +38 -0
  2. package/.github/workflows/update_deps.yml +1 -1
  3. package/.prettierrc +18 -1
  4. package/.release-please-manifest.json +1 -1
  5. package/CHANGELOG.md +31 -0
  6. package/README.md +1 -1
  7. package/dist/adapter/adapter.d.ts +16 -8
  8. package/dist/adapter/adapter.d.ts.map +1 -1
  9. package/dist/adapter/adapter.js +5 -3
  10. package/dist/adapter/adapter.js.map +1 -1
  11. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +11 -11
  12. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  13. package/dist/adapter/deconz/adapter/deconzAdapter.js +103 -106
  14. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  15. package/dist/adapter/deconz/adapter/index.d.ts.map +1 -1
  16. package/dist/adapter/deconz/adapter/index.js +0 -2
  17. package/dist/adapter/deconz/adapter/index.js.map +1 -1
  18. package/dist/adapter/deconz/driver/driver.d.ts +13 -13
  19. package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
  20. package/dist/adapter/deconz/driver/driver.js +126 -128
  21. package/dist/adapter/deconz/driver/driver.js.map +1 -1
  22. package/dist/adapter/deconz/driver/frame.d.ts.map +1 -1
  23. package/dist/adapter/deconz/driver/frame.js +1 -1
  24. package/dist/adapter/deconz/driver/frame.js.map +1 -1
  25. package/dist/adapter/deconz/driver/frameParser.d.ts +3 -1
  26. package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -1
  27. package/dist/adapter/deconz/driver/frameParser.js +52 -40
  28. package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
  29. package/dist/adapter/deconz/driver/parser.d.ts +3 -4
  30. package/dist/adapter/deconz/driver/parser.d.ts.map +1 -1
  31. package/dist/adapter/deconz/driver/parser.js +4 -29
  32. package/dist/adapter/deconz/driver/parser.js.map +1 -1
  33. package/dist/adapter/deconz/driver/writer.d.ts.map +1 -1
  34. package/dist/adapter/deconz/driver/writer.js +2 -2
  35. package/dist/adapter/deconz/driver/writer.js.map +1 -1
  36. package/dist/adapter/ember/adapter/emberAdapter.d.ts +11 -21
  37. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
  38. package/dist/adapter/ember/adapter/emberAdapter.js +77 -123
  39. package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
  40. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
  41. package/dist/adapter/ember/adapter/oneWaitress.js +6 -3
  42. package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
  43. package/dist/adapter/ember/adapter/tokensManager.d.ts +1 -1
  44. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
  45. package/dist/adapter/ember/adapter/tokensManager.js +3 -3
  46. package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
  47. package/dist/adapter/ember/enums.d.ts +22 -0
  48. package/dist/adapter/ember/enums.d.ts.map +1 -1
  49. package/dist/adapter/ember/enums.js +24 -1
  50. package/dist/adapter/ember/enums.js.map +1 -1
  51. package/dist/adapter/ember/ezsp/buffalo.d.ts +1 -3
  52. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -1
  53. package/dist/adapter/ember/ezsp/buffalo.js +16 -37
  54. package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
  55. package/dist/adapter/ember/ezsp/ezsp.d.ts +25 -41
  56. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
  57. package/dist/adapter/ember/ezsp/ezsp.js +67 -72
  58. package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
  59. package/dist/adapter/ember/types.d.ts +16 -23
  60. package/dist/adapter/ember/types.d.ts.map +1 -1
  61. package/dist/adapter/ember/uart/ash.d.ts +6 -22
  62. package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
  63. package/dist/adapter/ember/uart/ash.js +100 -117
  64. package/dist/adapter/ember/uart/ash.js.map +1 -1
  65. package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
  66. package/dist/adapter/ember/uart/parser.js +1 -1
  67. package/dist/adapter/ember/uart/parser.js.map +1 -1
  68. package/dist/adapter/ember/uart/queues.d.ts +9 -9
  69. package/dist/adapter/ember/uart/queues.d.ts.map +1 -1
  70. package/dist/adapter/ember/uart/queues.js +27 -26
  71. package/dist/adapter/ember/uart/queues.js.map +1 -1
  72. package/dist/adapter/ember/uart/writer.d.ts.map +1 -1
  73. package/dist/adapter/ember/uart/writer.js +1 -1
  74. package/dist/adapter/ember/uart/writer.js.map +1 -1
  75. package/dist/adapter/ember/utils/initters.d.ts.map +1 -1
  76. package/dist/adapter/ember/utils/initters.js +1 -1
  77. package/dist/adapter/ember/utils/initters.js.map +1 -1
  78. package/dist/adapter/events.d.ts +1 -9
  79. package/dist/adapter/events.d.ts.map +1 -1
  80. package/dist/adapter/events.js +0 -10
  81. package/dist/adapter/events.js.map +1 -1
  82. package/dist/adapter/ezsp/adapter/backup.d.ts +1 -1
  83. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
  84. package/dist/adapter/ezsp/adapter/backup.js +33 -10
  85. package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
  86. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +7 -7
  87. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  88. package/dist/adapter/ezsp/adapter/ezspAdapter.js +35 -45
  89. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  90. package/dist/adapter/ezsp/adapter/index.d.ts.map +1 -1
  91. package/dist/adapter/ezsp/adapter/index.js +0 -2
  92. package/dist/adapter/ezsp/adapter/index.js.map +1 -1
  93. package/dist/adapter/ezsp/driver/commands.d.ts +2 -2
  94. package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
  95. package/dist/adapter/ezsp/driver/commands.js +112 -112
  96. package/dist/adapter/ezsp/driver/commands.js.map +1 -1
  97. package/dist/adapter/ezsp/driver/driver.d.ts +2 -3
  98. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
  99. package/dist/adapter/ezsp/driver/driver.js +21 -13
  100. package/dist/adapter/ezsp/driver/driver.js.map +1 -1
  101. package/dist/adapter/ezsp/driver/ezsp.d.ts +3 -3
  102. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
  103. package/dist/adapter/ezsp/driver/ezsp.js +8 -10
  104. package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
  105. package/dist/adapter/ezsp/driver/frame.d.ts.map +1 -1
  106. package/dist/adapter/ezsp/driver/frame.js +1 -1
  107. package/dist/adapter/ezsp/driver/frame.js.map +1 -1
  108. package/dist/adapter/ezsp/driver/index.d.ts.map +1 -1
  109. package/dist/adapter/ezsp/driver/index.js +0 -1
  110. package/dist/adapter/ezsp/driver/index.js.map +1 -1
  111. package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
  112. package/dist/adapter/ezsp/driver/multicast.js +3 -3
  113. package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
  114. package/dist/adapter/ezsp/driver/parser.d.ts +1 -2
  115. package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -1
  116. package/dist/adapter/ezsp/driver/parser.js +3 -9
  117. package/dist/adapter/ezsp/driver/parser.js.map +1 -1
  118. package/dist/adapter/ezsp/driver/types/basic.d.ts.map +1 -1
  119. package/dist/adapter/ezsp/driver/types/basic.js +0 -1
  120. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
  121. package/dist/adapter/ezsp/driver/types/index.d.ts +4 -4
  122. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
  123. package/dist/adapter/ezsp/driver/types/index.js +85 -86
  124. package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
  125. package/dist/adapter/ezsp/driver/types/named.js +1 -3
  126. package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
  127. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
  128. package/dist/adapter/ezsp/driver/types/struct.js +63 -3
  129. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
  130. package/dist/adapter/ezsp/driver/uart.d.ts +2 -3
  131. package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
  132. package/dist/adapter/ezsp/driver/uart.js +9 -13
  133. package/dist/adapter/ezsp/driver/uart.js.map +1 -1
  134. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +3 -1
  135. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +1 -1
  136. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +1 -2
  137. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
  138. package/dist/adapter/ezsp/driver/utils/index.d.ts +1 -15
  139. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
  140. package/dist/adapter/ezsp/driver/utils/index.js +2 -41
  141. package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
  142. package/dist/adapter/ezsp/driver/writer.d.ts.map +1 -1
  143. package/dist/adapter/ezsp/driver/writer.js +1 -1
  144. package/dist/adapter/ezsp/driver/writer.js.map +1 -1
  145. package/dist/adapter/serialPort.d.ts +7 -2
  146. package/dist/adapter/serialPort.d.ts.map +1 -1
  147. package/dist/adapter/serialPort.js +6 -2
  148. package/dist/adapter/serialPort.js.map +1 -1
  149. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +1 -1
  150. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
  151. package/dist/adapter/z-stack/adapter/adapter-backup.js +28 -21
  152. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  153. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +1 -1
  154. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +1 -1
  155. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +27 -14
  156. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
  157. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  158. package/dist/adapter/z-stack/adapter/manager.js +10 -10
  159. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  160. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +7 -7
  161. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  162. package/dist/adapter/z-stack/adapter/zStackAdapter.js +40 -31
  163. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  164. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +1 -1
  165. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +1 -3
  166. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -1
  167. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +1 -1
  168. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +5 -0
  169. package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +1 -1
  170. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +1 -2
  171. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +1 -1
  172. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +1 -1
  173. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +5 -0
  174. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +1 -1
  175. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +1 -2
  176. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +1 -1
  177. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +1 -1
  178. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +5 -0
  179. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +1 -1
  180. package/dist/adapter/z-stack/structs/entries/channel-list.js +1 -2
  181. package/dist/adapter/z-stack/structs/entries/channel-list.js.map +1 -1
  182. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +1 -1
  183. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +1 -1
  184. package/dist/adapter/z-stack/structs/entries/has-configured.js +12 -6
  185. package/dist/adapter/z-stack/structs/entries/has-configured.js.map +1 -1
  186. package/dist/adapter/z-stack/structs/entries/nib.d.ts +1 -1
  187. package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +1 -1
  188. package/dist/adapter/z-stack/structs/entries/nib.js +6 -2
  189. package/dist/adapter/z-stack/structs/entries/nib.js.map +1 -1
  190. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +1 -1
  191. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +1 -1
  192. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +9 -3
  193. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +1 -1
  194. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +1 -1
  195. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +1 -1
  196. package/dist/adapter/z-stack/structs/entries/nwk-key.js +9 -3
  197. package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +1 -1
  198. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +1 -2
  199. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +1 -1
  200. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +1 -2
  201. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +1 -1
  202. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +1 -1
  203. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +5 -0
  204. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +1 -1
  205. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +1 -2
  206. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -1
  207. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +1 -1
  208. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +5 -0
  209. package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +1 -1
  210. package/dist/adapter/z-stack/structs/struct.d.ts.map +1 -1
  211. package/dist/adapter/z-stack/structs/struct.js +16 -4
  212. package/dist/adapter/z-stack/structs/struct.js.map +1 -1
  213. package/dist/adapter/z-stack/structs/table.d.ts +1 -1
  214. package/dist/adapter/z-stack/structs/table.d.ts.map +1 -1
  215. package/dist/adapter/z-stack/structs/table.js +17 -13
  216. package/dist/adapter/z-stack/structs/table.js.map +1 -1
  217. package/dist/adapter/z-stack/unpi/frame.d.ts +3 -3
  218. package/dist/adapter/z-stack/unpi/frame.d.ts.map +1 -1
  219. package/dist/adapter/z-stack/unpi/frame.js +1 -1
  220. package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
  221. package/dist/adapter/z-stack/unpi/parser.js +1 -1
  222. package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
  223. package/dist/adapter/z-stack/utils/network-options.d.ts.map +1 -1
  224. package/dist/adapter/z-stack/utils/network-options.js +1 -2
  225. package/dist/adapter/z-stack/utils/network-options.js.map +1 -1
  226. package/dist/adapter/z-stack/znp/znp.d.ts +5 -6
  227. package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
  228. package/dist/adapter/z-stack/znp/znp.js +21 -28
  229. package/dist/adapter/z-stack/znp/znp.js.map +1 -1
  230. package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +1 -1
  231. package/dist/adapter/z-stack/znp/zpiObject.js +2 -2
  232. package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
  233. package/dist/adapter/zigate/adapter/index.js +1 -2
  234. package/dist/adapter/zigate/adapter/index.js.map +1 -1
  235. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +9 -9
  236. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  237. package/dist/adapter/zigate/adapter/zigateAdapter.js +92 -118
  238. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  239. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +1 -1
  240. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
  241. package/dist/adapter/zigate/driver/buffaloZiGate.js +4 -4
  242. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
  243. package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -1
  244. package/dist/adapter/zigate/driver/commandType.js +3 -2
  245. package/dist/adapter/zigate/driver/commandType.js.map +1 -1
  246. package/dist/adapter/zigate/driver/constants.d.ts +7 -1
  247. package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
  248. package/dist/adapter/zigate/driver/constants.js +1 -2
  249. package/dist/adapter/zigate/driver/constants.js.map +1 -1
  250. package/dist/adapter/zigate/driver/frame.d.ts.map +1 -1
  251. package/dist/adapter/zigate/driver/frame.js +2 -3
  252. package/dist/adapter/zigate/driver/frame.js.map +1 -1
  253. package/dist/adapter/zigate/driver/messageType.d.ts.map +1 -1
  254. package/dist/adapter/zigate/driver/messageType.js +1 -2
  255. package/dist/adapter/zigate/driver/messageType.js.map +1 -1
  256. package/dist/adapter/zigate/driver/ziGateObject.d.ts +5 -5
  257. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
  258. package/dist/adapter/zigate/driver/ziGateObject.js +9 -10
  259. package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
  260. package/dist/adapter/zigate/driver/zigate.d.ts +7 -10
  261. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
  262. package/dist/adapter/zigate/driver/zigate.js +35 -40
  263. package/dist/adapter/zigate/driver/zigate.js.map +1 -1
  264. package/dist/controller/controller.d.ts +18 -6
  265. package/dist/controller/controller.d.ts.map +1 -1
  266. package/dist/controller/controller.js +95 -103
  267. package/dist/controller/controller.js.map +1 -1
  268. package/dist/controller/events.d.ts +2 -13
  269. package/dist/controller/events.d.ts.map +1 -1
  270. package/dist/controller/events.js +0 -13
  271. package/dist/controller/events.js.map +1 -1
  272. package/dist/controller/greenPower.d.ts +6 -2
  273. package/dist/controller/greenPower.d.ts.map +1 -1
  274. package/dist/controller/greenPower.js +26 -16
  275. package/dist/controller/greenPower.js.map +1 -1
  276. package/dist/controller/helpers/request.d.ts +1 -1
  277. package/dist/controller/helpers/request.d.ts.map +1 -1
  278. package/dist/controller/helpers/request.js.map +1 -1
  279. package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
  280. package/dist/controller/helpers/requestQueue.js +1 -1
  281. package/dist/controller/helpers/requestQueue.js.map +1 -1
  282. package/dist/controller/helpers/zclFrameConverter.d.ts +2 -2
  283. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  284. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  285. package/dist/controller/index.d.ts.map +1 -1
  286. package/dist/controller/index.js.map +1 -1
  287. package/dist/controller/model/device.d.ts +31 -29
  288. package/dist/controller/model/device.d.ts.map +1 -1
  289. package/dist/controller/model/device.js +42 -30
  290. package/dist/controller/model/device.js.map +1 -1
  291. package/dist/controller/model/endpoint.d.ts +5 -2
  292. package/dist/controller/model/endpoint.d.ts.map +1 -1
  293. package/dist/controller/model/endpoint.js +96 -97
  294. package/dist/controller/model/endpoint.js.map +1 -1
  295. package/dist/controller/model/entity.d.ts +5 -3
  296. package/dist/controller/model/entity.d.ts.map +1 -1
  297. package/dist/controller/model/entity.js +2 -2
  298. package/dist/controller/model/entity.js.map +1 -1
  299. package/dist/controller/model/group.d.ts +1 -0
  300. package/dist/controller/model/group.d.ts.map +1 -1
  301. package/dist/controller/model/group.js +36 -28
  302. package/dist/controller/model/group.js.map +1 -1
  303. package/dist/controller/touchlink.d.ts.map +1 -1
  304. package/dist/controller/touchlink.js +6 -5
  305. package/dist/controller/touchlink.js.map +1 -1
  306. package/dist/controller/tstype.d.ts +1 -4
  307. package/dist/controller/tstype.d.ts.map +1 -1
  308. package/dist/controller/tstype.js +0 -5
  309. package/dist/controller/tstype.js.map +1 -1
  310. package/dist/models/backup-storage-unified.d.ts +2 -2
  311. package/dist/models/backup-storage-unified.d.ts.map +1 -1
  312. package/dist/models/backup.d.ts +1 -1
  313. package/dist/models/backup.d.ts.map +1 -1
  314. package/dist/utils/backup.d.ts.map +1 -1
  315. package/dist/utils/backup.js +22 -55
  316. package/dist/utils/backup.js.map +1 -1
  317. package/dist/utils/index.d.ts +2 -3
  318. package/dist/utils/index.d.ts.map +1 -1
  319. package/dist/utils/index.js +3 -5
  320. package/dist/utils/index.js.map +1 -1
  321. package/dist/utils/logger.d.ts +1 -1
  322. package/dist/utils/logger.d.ts.map +1 -1
  323. package/dist/utils/queue.d.ts.map +1 -1
  324. package/dist/utils/queue.js +8 -8
  325. package/dist/utils/queue.js.map +1 -1
  326. package/dist/utils/realpathSync.d.ts.map +1 -1
  327. package/dist/utils/realpathSync.js +1 -1
  328. package/dist/utils/realpathSync.js.map +1 -1
  329. package/dist/utils/utils.d.ts +5 -0
  330. package/dist/utils/utils.d.ts.map +1 -0
  331. package/dist/utils/utils.js +24 -0
  332. package/dist/utils/utils.js.map +1 -0
  333. package/dist/zspec/consts.d.ts +1 -0
  334. package/dist/zspec/consts.d.ts.map +1 -1
  335. package/dist/zspec/consts.js +2 -1
  336. package/dist/zspec/consts.js.map +1 -1
  337. package/dist/zspec/index.js +0 -10
  338. package/dist/zspec/index.js.map +1 -1
  339. package/dist/zspec/utils.d.ts.map +1 -1
  340. package/dist/zspec/utils.js +7 -1
  341. package/dist/zspec/utils.js.map +1 -1
  342. package/dist/zspec/zcl/buffaloZcl.js +13 -13
  343. package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
  344. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
  345. package/dist/zspec/zcl/definition/cluster.js +1 -1
  346. package/dist/zspec/zcl/definition/cluster.js.map +1 -1
  347. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
  348. package/dist/zspec/zcl/definition/foundation.js +1 -1
  349. package/dist/zspec/zcl/definition/foundation.js.map +1 -1
  350. package/dist/zspec/zcl/definition/tstype.d.ts +1 -1
  351. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
  352. package/dist/zspec/zcl/utils.d.ts +1 -1
  353. package/dist/zspec/zcl/utils.d.ts.map +1 -1
  354. package/dist/zspec/zcl/utils.js +21 -20
  355. package/dist/zspec/zcl/utils.js.map +1 -1
  356. package/dist/zspec/zcl/zclFrame.d.ts +4 -4
  357. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
  358. package/dist/zspec/zcl/zclFrame.js +10 -17
  359. package/dist/zspec/zcl/zclFrame.js.map +1 -1
  360. package/dist/zspec/zcl/zclHeader.d.ts +2 -2
  361. package/dist/zspec/zcl/zclHeader.d.ts.map +1 -1
  362. package/dist/zspec/zcl/zclHeader.js +3 -3
  363. package/dist/zspec/zcl/zclHeader.js.map +1 -1
  364. package/dist/zspec/zdo/buffaloZdo.d.ts +2 -2
  365. package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -1
  366. package/dist/zspec/zdo/buffaloZdo.js +12 -8
  367. package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
  368. package/dist/zspec/zdo/definition/tstypes.d.ts +1 -1
  369. package/dist/zspec/zdo/definition/tstypes.d.ts.map +1 -1
  370. package/eslint.config.mjs +32 -0
  371. package/package.json +12 -10
  372. package/tsconfig.json +1 -0
  373. package/.eslintignore +0 -3
  374. package/dist/utils/assertString.d.ts +0 -3
  375. package/dist/utils/assertString.d.ts.map +0 -1
  376. package/dist/utils/assertString.js +0 -9
  377. package/dist/utils/assertString.js.map +0 -1
  378. package/dist/utils/isNumberArray.d.ts +0 -3
  379. package/dist/utils/isNumberArray.d.ts.map +0 -1
  380. package/dist/utils/isNumberArray.js +0 -7
  381. package/dist/utils/isNumberArray.js.map +0 -1
@@ -28,9 +28,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.EmberAdapter = exports.DEFAULT_APS_OPTIONS = exports.DEFAULT_STACK_CONFIG = void 0;
30
30
  const crypto_1 = require("crypto");
31
- const es6_1 = __importDefault(require("fast-deep-equal/es6"));
32
31
  const fs_1 = require("fs");
33
32
  const path_1 = __importDefault(require("path"));
33
+ const es6_1 = __importDefault(require("fast-deep-equal/es6"));
34
34
  const __1 = require("../..");
35
35
  const utils_1 = require("../../../utils");
36
36
  const logger_1 = require("../../../utils/logger");
@@ -38,7 +38,6 @@ const ZSpec = __importStar(require("../../../zspec"));
38
38
  const Zcl = __importStar(require("../../../zspec/zcl"));
39
39
  const Zdo = __importStar(require("../../../zspec/zdo"));
40
40
  const buffaloZdo_1 = require("../../../zspec/zdo/buffaloZdo");
41
- const events_1 = require("../../events");
42
41
  const serialPortUtils_1 = __importDefault(require("../../serialPortUtils"));
43
42
  const socketPortUtils_1 = __importDefault(require("../../socketPortUtils"));
44
43
  const consts_1 = require("../consts");
@@ -103,7 +102,6 @@ const BACKUP_OLDEST_SUPPORTED_EZSP_VERSION = 12;
103
102
  * NOTE: This is blocking the request queue, so we shouldn't go crazy high.
104
103
  */
105
104
  const BROADCAST_NETWORK_KEY_SWITCH_WAIT_TIME = 15000;
106
- const QUEUE_HIGH_COUNT = 4;
107
105
  const QUEUE_MAX_SEND_ATTEMPTS = 3;
108
106
  const QUEUE_BUSY_DEFER_MSEC = 500;
109
107
  const QUEUE_NETWORK_DOWN_DEFER_MSEC = 1500;
@@ -126,6 +124,7 @@ exports.DEFAULT_STACK_CONFIG = {
126
124
  TRANSIENT_DEVICE_TIMEOUT: 10000,
127
125
  END_DEVICE_POLL_TIMEOUT: 8, // zigpc: 8
128
126
  TRANSIENT_KEY_TIMEOUT_S: 300, // zigpc: 65535
127
+ CCA_MODE: undefined, // not set by default
129
128
  };
130
129
  /** Default behavior is to disable app key requests */
131
130
  const ALLOW_APP_KEY_REQUESTS = false;
@@ -140,8 +139,8 @@ const TRUST_CENTER_ADDRESS_CACHE_SIZE = 2;
140
139
  * Removing `ENABLE_ROUTE_DISCOVERY` leads to devices that won't reconnect/go offline, and various other issues. Keeping it for now.
141
140
  */
142
141
  exports.DEFAULT_APS_OPTIONS = enums_1.EmberApsOption.RETRY | enums_1.EmberApsOption.ENABLE_ROUTE_DISCOVERY | enums_1.EmberApsOption.ENABLE_ADDRESS_DISCOVERY;
143
- /** Time for a ZDO request to get a callback response. ASH is 2400*6 for ACK timeout. */
144
- const DEFAULT_ZDO_REQUEST_TIMEOUT = 15000; // msec
142
+ /** Time for a request to get a callback response. ASH is 2400*6 for ACK timeout. */
143
+ const DEFAULT_REQUEST_TIMEOUT = 15000; // msec
145
144
  /** Time for a network-related request to get a response (usually via event). */
146
145
  const DEFAULT_NETWORK_REQUEST_TIMEOUT = 10000; // nothing on the network to bother requests, should be much faster than this
147
146
  /** Time between watchdog counters reading/clearing */
@@ -183,17 +182,32 @@ class EmberAdapter extends __1.Adapter {
183
182
  multicastTable;
184
183
  constructor(networkOptions, serialPortOptions, backupPath, adapterOptions) {
185
184
  super(networkOptions, serialPortOptions, backupPath, adapterOptions);
185
+ this.version = {
186
+ ezsp: 0,
187
+ revision: 'unknown',
188
+ build: 0,
189
+ major: 0,
190
+ minor: 0,
191
+ patch: 0,
192
+ special: 0,
193
+ type: enums_1.EmberVersionType.GA,
194
+ };
195
+ this.zdoRequestSequence = 0; // start at 1
196
+ this.interpanLock = false;
197
+ this.networkCache = (0, initters_1.initNetworkCache)();
198
+ this.manufacturerCode = DEFAULT_MANUFACTURER_CODE; // will be set in NCP in initEzsp
199
+ this.multicastTable = [];
186
200
  this.stackConfig = this.loadStackConfig();
187
201
  this.queue = new utils_1.Queue(this.adapterOptions.concurrent || 16); // ORed to avoid 0 (not checked in settings/queue constructor)
188
202
  this.oneWaitress = new oneWaitress_1.EmberOneWaitress();
189
203
  this.ezsp = new ezsp_1.Ezsp(serialPortOptions);
190
- this.ezsp.on(ezsp_1.EzspEvents.ZDO_RESPONSE, this.onZDOResponse.bind(this));
191
- this.ezsp.on(ezsp_1.EzspEvents.INCOMING_MESSAGE, this.onIncomingMessage.bind(this));
192
- this.ezsp.on(ezsp_1.EzspEvents.TOUCHLINK_MESSAGE, this.onTouchlinkMessage.bind(this));
193
- this.ezsp.on(ezsp_1.EzspEvents.STACK_STATUS, this.onStackStatus.bind(this));
194
- this.ezsp.on(ezsp_1.EzspEvents.TRUST_CENTER_JOIN, this.onTrustCenterJoin.bind(this));
195
- this.ezsp.on(ezsp_1.EzspEvents.MESSAGE_SENT, this.onMessageSent.bind(this));
196
- this.ezsp.on(ezsp_1.EzspEvents.GREENPOWER_MESSAGE, this.onGreenpowerMessage.bind(this));
204
+ this.ezsp.on('zdoResponse', this.onZDOResponse.bind(this));
205
+ this.ezsp.on('incomingMessage', this.onIncomingMessage.bind(this));
206
+ this.ezsp.on('touchlinkMessage', this.onTouchlinkMessage.bind(this));
207
+ this.ezsp.on('stackStatus', this.onStackStatus.bind(this));
208
+ this.ezsp.on('trustCenterJoin', this.onTrustCenterJoin.bind(this));
209
+ this.ezsp.on('messageSent', this.onMessageSent.bind(this));
210
+ this.ezsp.once('ncpNeedsResetAndInit', this.onNcpNeedsResetAndInit.bind(this));
197
211
  }
198
212
  loadStackConfig() {
199
213
  // store stack config in same dir as backup
@@ -243,10 +257,17 @@ class EmberAdapter extends __1.Adapter {
243
257
  config.TRANSIENT_KEY_TIMEOUT_S = exports.DEFAULT_STACK_CONFIG.TRANSIENT_KEY_TIMEOUT_S;
244
258
  logger_1.logger.error(`[STACK CONFIG] Invalid TRANSIENT_KEY_TIMEOUT_S, using default.`, NS);
245
259
  }
260
+ config.CCA_MODE = config.CCA_MODE ?? undefined; // always default to undefined
261
+ if (config.CCA_MODE && enums_1.IEEE802154CcaMode[config.CCA_MODE] === undefined) {
262
+ config.CCA_MODE = undefined;
263
+ logger_1.logger.error(`[STACK CONFIG] Invalid CCA_MODE, ignoring.`, NS);
264
+ }
246
265
  logger_1.logger.info(`Using stack config ${JSON.stringify(config)}.`, NS);
247
266
  return config;
248
267
  }
249
- catch { }
268
+ catch {
269
+ /* empty */
270
+ }
250
271
  logger_1.logger.info(`Using default stack config.`, NS);
251
272
  return exports.DEFAULT_STACK_CONFIG;
252
273
  }
@@ -349,7 +370,7 @@ class EmberAdapter extends __1.Adapter {
349
370
  catch (error) {
350
371
  // remove to allow retry on next occurrence
351
372
  this.multicastTable.splice(tableIdx, 1);
352
- logger_1.logger.error(error, NS);
373
+ logger_1.logger.error(error.message, NS);
353
374
  }
354
375
  }
355
376
  break;
@@ -370,13 +391,13 @@ class EmberAdapter extends __1.Adapter {
370
391
  logger_1.logger.debug(`<~~~ [ZDO ${Zdo.ClusterId[apsFrame.clusterId]} from=${sender} ${payload ? JSON.stringify(payload) : 'OK'}]`, NS);
371
392
  this.oneWaitress.resolveZDO(sender, apsFrame, payload);
372
393
  if (apsFrame.clusterId === Zdo.ClusterId.NETWORK_ADDRESS_RESPONSE) {
373
- this.emit(events_1.Events.networkAddress, {
394
+ this.emit('networkAddress', {
374
395
  networkAddress: payload.nwkAddress,
375
396
  ieeeAddr: payload.eui64,
376
397
  });
377
398
  }
378
399
  else if (apsFrame.clusterId === Zdo.ClusterId.END_DEVICE_ANNOUNCE) {
379
- this.emit(events_1.Events.deviceAnnounce, {
400
+ this.emit('deviceAnnounce', {
380
401
  networkAddress: payload.nwkAddress,
381
402
  ieeeAddr: payload.eui64,
382
403
  });
@@ -387,7 +408,7 @@ class EmberAdapter extends __1.Adapter {
387
408
  }
388
409
  }
389
410
  /**
390
- * Emitted from @see Ezsp.ezspIncomingMessageHandler
411
+ * Emitted from @see Ezsp.ezspIncomingMessageHandler @see Ezsp.ezspGpepIncomingMessageHandler
391
412
  *
392
413
  * @param type
393
414
  * @param apsFrame
@@ -408,7 +429,7 @@ class EmberAdapter extends __1.Adapter {
408
429
  destinationEndpoint: apsFrame.destinationEndpoint,
409
430
  };
410
431
  this.oneWaitress.resolveZCL(payload);
411
- this.emit(events_1.Events.zclPayload, payload);
432
+ this.emit('zclPayload', payload);
412
433
  }
413
434
  /**
414
435
  * Emitted from @see Ezsp.ezspMacFilterMatchMessageHandler when the message is a valid InterPAN touchlink message.
@@ -433,51 +454,7 @@ class EmberAdapter extends __1.Adapter {
433
454
  destinationEndpoint: endpoint,
434
455
  };
435
456
  this.oneWaitress.resolveZCL(payload);
436
- this.emit(events_1.Events.zclPayload, payload);
437
- }
438
- /**
439
- * Emitted from @see Ezsp.ezspGpepIncomingMessageHandler
440
- *
441
- * @param sequenceNumber
442
- * @param commandIdentifier
443
- * @param sourceId
444
- * @param frameCounter
445
- * @param gpdCommandId
446
- * @param gpdCommandPayload
447
- * @param gpdLink
448
- */
449
- async onGreenpowerMessage(sequenceNumber, commandIdentifier, sourceId, frameCounter, gpdCommandId, gpdCommandPayload, gpdLink) {
450
- try {
451
- const gpdHeader = Buffer.alloc(15);
452
- gpdHeader.writeUInt8(0b00000001, 0); // frameControl: FrameType.SPECIFIC + Direction.CLIENT_TO_SERVER + disableDefaultResponse=false
453
- gpdHeader.writeUInt8(sequenceNumber, 1); // transactionSequenceNumber
454
- gpdHeader.writeUInt8(commandIdentifier, 2); // commandIdentifier
455
- gpdHeader.writeUInt16LE(0, 3); // options XXX: bypassed, same as deconz https://github.com/Koenkk/zigbee-herdsman/pull/536
456
- gpdHeader.writeUInt32LE(sourceId, 5); // srcID
457
- // omitted: gpdIEEEAddr ieeeAddr
458
- // omitted: gpdEndpoint uint8
459
- gpdHeader.writeUInt32LE(frameCounter, 9); // frameCounter
460
- gpdHeader.writeUInt8(gpdCommandId, 13); // commandID
461
- gpdHeader.writeUInt8(gpdCommandPayload.length, 14); // payloadSize
462
- const data = Buffer.concat([gpdHeader, gpdCommandPayload]);
463
- const payload = {
464
- header: Zcl.Header.fromBuffer(data),
465
- data,
466
- clusterID: Zcl.Clusters.greenPower.ID,
467
- address: sourceId,
468
- endpoint: ZSpec.GP_ENDPOINT,
469
- linkquality: gpdLink,
470
- groupID: this.greenPowerGroup,
471
- wasBroadcast: true,
472
- destinationEndpoint: ZSpec.GP_ENDPOINT,
473
- };
474
- this.oneWaitress.resolveZCL(payload);
475
- this.emit(events_1.Events.zclPayload, payload);
476
- }
477
- catch (err) {
478
- logger_1.logger.error(`<~x~ [GP] Failed creating ZCL payload. Skipping. ${err}`, NS);
479
- return;
480
- }
457
+ this.emit('zclPayload', payload);
481
458
  }
482
459
  /**
483
460
  * Emitted from @see Ezsp.ezspTrustCenterJoinHandler
@@ -495,7 +472,7 @@ class EmberAdapter extends __1.Adapter {
495
472
  networkAddress: newNodeId,
496
473
  ieeeAddr: newNodeEui64,
497
474
  };
498
- this.emit(events_1.Events.deviceLeave, payload);
475
+ this.emit('deviceLeave', payload);
499
476
  }
500
477
  else {
501
478
  if (policyDecision !== enums_1.EmberJoinDecision.DENY_JOIN) {
@@ -510,11 +487,11 @@ class EmberAdapter extends __1.Adapter {
510
487
  logger_1.logger.debug(`[WORKAROUND] Setting coordinator manufacturer code to ${Zcl.ManufacturerCode[joinManufCode]}.`, NS);
511
488
  await this.ezsp.ezspSetManufacturerCode(joinManufCode);
512
489
  this.manufacturerCode = joinManufCode;
513
- this.emit(events_1.Events.deviceJoined, payload);
490
+ this.emit('deviceJoined', payload);
514
491
  });
515
492
  }
516
493
  else {
517
- this.emit(events_1.Events.deviceJoined, payload);
494
+ this.emit('deviceJoined', payload);
518
495
  }
519
496
  }
520
497
  else {
@@ -531,17 +508,6 @@ class EmberAdapter extends __1.Adapter {
531
508
  logger_1.logger.info(`[ASH COUNTERS] ${ashCounters.join(',')}`, NS);
532
509
  });
533
510
  }
534
- initVariables() {
535
- this.ezsp.removeAllListeners(ezsp_1.EzspEvents.NCP_NEEDS_RESET_AND_INIT);
536
- clearInterval(this.watchdogCountersHandle);
537
- this.queue.clear();
538
- this.zdoRequestSequence = 0; // start at 1
539
- this.interpanLock = false;
540
- this.networkCache = (0, initters_1.initNetworkCache)();
541
- this.manufacturerCode = DEFAULT_MANUFACTURER_CODE; // will be set in NCP in initEzsp
542
- this.multicastTable = [];
543
- this.ezsp.once(ezsp_1.EzspEvents.NCP_NEEDS_RESET_AND_INIT, this.onNcpNeedsResetAndInit.bind(this));
544
- }
545
511
  /**
546
512
  * Proceed to execute the long list of commands required to setup comms between Host<>NCP.
547
513
  * This is called by start and on internal reset.
@@ -575,6 +541,12 @@ class EmberAdapter extends __1.Adapter {
575
541
  await this.emberSetEzspConfigValue(enums_2.EzspConfigId.MAX_END_DEVICE_CHILDREN, this.stackConfig.MAX_END_DEVICE_CHILDREN);
576
542
  await this.emberSetEzspConfigValue(enums_2.EzspConfigId.END_DEVICE_POLL_TIMEOUT, this.stackConfig.END_DEVICE_POLL_TIMEOUT);
577
543
  await this.emberSetEzspConfigValue(enums_2.EzspConfigId.TRANSIENT_KEY_TIMEOUT_S, this.stackConfig.TRANSIENT_KEY_TIMEOUT_S);
544
+ // XXX: temp-fix: forces a side-effect in the firmware that prevents broadcast issues in environments with unusual interferences
545
+ await this.emberSetEzspValue(enums_2.EzspValueId.CCA_THRESHOLD, 1, [0]);
546
+ if (this.stackConfig.CCA_MODE) {
547
+ // validated in `loadStackConfig`
548
+ await this.ezsp.ezspSetRadioIeee802154CcaMode(enums_1.IEEE802154CcaMode[this.stackConfig.CCA_MODE]);
549
+ }
578
550
  // WARNING: From here on EZSP commands that affect memory allocation on the NCP should no longer be called (like resizing tables)
579
551
  await this.registerFixedEndpoints();
580
552
  this.clearNetworkCache();
@@ -726,7 +698,7 @@ class EmberAdapter extends __1.Adapter {
726
698
  const backup = this.getStoredBackup();
727
699
  if (initStatus === enums_1.SLStatus.NOT_JOINED || action === NetworkInitAction.LEFT) {
728
700
  // no network
729
- if (backup != null) {
701
+ if (backup != undefined) {
730
702
  if (this.networkOptions.panID === backup.networkOptions.panId &&
731
703
  Buffer.from(this.networkOptions.extendedPanID).equals(backup.networkOptions.extendedPanId) &&
732
704
  this.networkOptions.channelList.includes(backup.logicalChannel) &&
@@ -751,6 +723,7 @@ class EmberAdapter extends __1.Adapter {
751
723
  switch (action) {
752
724
  case NetworkInitAction.FORM_BACKUP: {
753
725
  logger_1.logger.info(`[INIT TC] Forming from backup.`, NS);
726
+ // `backup` valid in this `action` path (not detected by TS)
754
727
  /* istanbul ignore next */
755
728
  const keyList = backup.devices.map((device) => {
756
729
  const octets = Array.from(device.ieeeAddress.reverse());
@@ -855,14 +828,14 @@ class EmberAdapter extends __1.Adapter {
855
828
  */
856
829
  getStoredBackup() {
857
830
  if (!(0, fs_1.existsSync)(this.backupPath)) {
858
- return null;
831
+ return undefined;
859
832
  }
860
833
  let data;
861
834
  try {
862
835
  data = JSON.parse((0, fs_1.readFileSync)(this.backupPath).toString());
863
836
  }
864
837
  catch (error) {
865
- throw new Error(`[BACKUP] Coordinator backup is corrupted. (${error.message})`);
838
+ throw new Error(`[BACKUP] Coordinator backup is corrupted. (${error.stack})`);
866
839
  }
867
840
  if (data.metadata?.format === 'zigpy/open-coordinator-backup' && data.metadata?.version) {
868
841
  if (data.metadata?.version !== 1) {
@@ -874,7 +847,7 @@ class EmberAdapter extends __1.Adapter {
874
847
  if (data.metadata.internal.ezspVersion < BACKUP_OLDEST_SUPPORTED_EZSP_VERSION) {
875
848
  (0, fs_1.renameSync)(this.backupPath, `${this.backupPath}.old`);
876
849
  logger_1.logger.warning(`[BACKUP] Current backup file is from an unsupported EZSP version. Renaming and ignoring.`, NS);
877
- return null;
850
+ return undefined;
878
851
  }
879
852
  return utils_1.BackupUtils.fromUnifiedBackup(data);
880
853
  }
@@ -987,23 +960,8 @@ class EmberAdapter extends __1.Adapter {
987
960
  * @param status
988
961
  */
989
962
  async onNcpNeedsResetAndInit(status) {
990
- logger_1.logger.error(`!!! ADAPTER FATAL ERROR reason=${enums_1.EzspStatus[status]}. !!!`, NS);
991
- if (this.queue.count() > QUEUE_HIGH_COUNT) {
992
- logger_1.logger.info(`Request queue is high (${this.queue.count()}), triggering full restart to prevent stressing the adapter.`, NS);
993
- this.emit(events_1.Events.disconnected);
994
- }
995
- else {
996
- logger_1.logger.info(`Attempting adapter reset...`, NS);
997
- try {
998
- await this.stop();
999
- await (0, utils_1.Wait)(500); // just because
1000
- await this.start();
1001
- }
1002
- catch (err) {
1003
- logger_1.logger.error(`Failed to reset and init adapter. ${err}`, NS);
1004
- this.emit(events_1.Events.disconnected);
1005
- }
1006
- }
963
+ logger_1.logger.error(`Adapter fatal error: ${enums_1.EzspStatus[status]}`, NS);
964
+ this.emit('disconnected');
1007
965
  }
1008
966
  //---- START Events
1009
967
  //---- END Events
@@ -1196,8 +1154,8 @@ class EmberAdapter extends __1.Adapter {
1196
1154
  */
1197
1155
  async emberPermitJoining(duration, broadcastMgmtPermitJoin) {
1198
1156
  let status = await this.ezsp.ezspPermitJoining(duration);
1199
- let apsFrame = null;
1200
- let messageTag = null;
1157
+ let apsFrame;
1158
+ let messageTag;
1201
1159
  logger_1.logger.debug(`Permit joining for ${duration} sec. status=${[status]}`, NS);
1202
1160
  if (broadcastMgmtPermitJoin) {
1203
1161
  // `authentication`: TC significance always 1 (zb specs)
@@ -1306,17 +1264,17 @@ class EmberAdapter extends __1.Adapter {
1306
1264
  static async autoDetectPath() {
1307
1265
  const paths = await serialPortUtils_1.default.find(autoDetectDefinitions);
1308
1266
  paths.sort((a, b) => (a < b ? -1 : 1));
1309
- return paths.length > 0 ? paths[0] : null;
1267
+ return paths.length > 0 ? paths[0] : undefined;
1310
1268
  }
1311
1269
  async start() {
1312
1270
  logger_1.logger.info(`======== Ember Adapter Starting ========`, NS);
1313
- this.initVariables();
1314
1271
  const result = await this.initEzsp();
1315
1272
  return result;
1316
1273
  }
1317
1274
  async stop() {
1275
+ clearInterval(this.watchdogCountersHandle);
1318
1276
  await this.ezsp.stop();
1319
- this.initVariables();
1277
+ this.ezsp.removeAllListeners();
1320
1278
  logger_1.logger.info(`======== Ember Adapter Stopped ========`, NS);
1321
1279
  }
1322
1280
  // queued, non-InterPAN
@@ -1388,14 +1346,11 @@ class EmberAdapter extends __1.Adapter {
1388
1346
  if (nkStatus !== enums_1.SLStatus.OK) {
1389
1347
  throw new Error(`[BACKUP] Failed to export Network Key with status=${enums_1.SLStatus[nkStatus]}.`);
1390
1348
  }
1391
- const zbChannels = Array.from(Array(ZSpec.NUM_802_15_4_CHANNELS), (e, i) => i + ZSpec.MIN_802_15_4_CHANNEL_NUMBER);
1392
1349
  return {
1393
1350
  networkOptions: {
1394
1351
  panId: netParams.panId, // uint16_t
1395
1352
  extendedPanId: Buffer.from(netParams.extendedPanId),
1396
- channelList: zbChannels
1397
- .map(/* istanbul ignore next */ (c) => ((2 ** c) & netParams.channels ? c : null))
1398
- .filter((x) => x),
1353
+ channelList: ZSpec.Utils.uint32MaskToChannels(netParams.channels),
1399
1354
  networkKey: networkKey.contents,
1400
1355
  networkKeyDistribute: false,
1401
1356
  },
@@ -1570,7 +1525,7 @@ class EmberAdapter extends __1.Adapter {
1570
1525
  target: networkAddress,
1571
1526
  apsFrame,
1572
1527
  responseClusterId: Zdo.ClusterId.PERMIT_JOINING_RESPONSE,
1573
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1528
+ }, DEFAULT_REQUEST_TIMEOUT);
1574
1529
  });
1575
1530
  }
1576
1531
  else {
@@ -1618,7 +1573,7 @@ class EmberAdapter extends __1.Adapter {
1618
1573
  target: networkAddress,
1619
1574
  apsFrame,
1620
1575
  responseClusterId: Zdo.ClusterId.LQI_TABLE_RESPONSE,
1621
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1576
+ }, DEFAULT_REQUEST_TIMEOUT);
1622
1577
  for (const entry of result.entryList) {
1623
1578
  neighbors.push({
1624
1579
  ieeeAddr: entry.eui64,
@@ -1655,7 +1610,7 @@ class EmberAdapter extends __1.Adapter {
1655
1610
  target: networkAddress,
1656
1611
  apsFrame,
1657
1612
  responseClusterId: Zdo.ClusterId.ROUTING_TABLE_RESPONSE,
1658
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1613
+ }, DEFAULT_REQUEST_TIMEOUT);
1659
1614
  for (const entry of result.entryList) {
1660
1615
  table.push({
1661
1616
  destinationAddress: entry.destinationAddress,
@@ -1688,7 +1643,7 @@ class EmberAdapter extends __1.Adapter {
1688
1643
  target: networkAddress,
1689
1644
  apsFrame,
1690
1645
  responseClusterId: Zdo.ClusterId.NODE_DESCRIPTOR_RESPONSE,
1691
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1646
+ }, DEFAULT_REQUEST_TIMEOUT);
1692
1647
  let type = 'Unknown';
1693
1648
  switch (result.logicalType) {
1694
1649
  case 0x0:
@@ -1723,7 +1678,7 @@ class EmberAdapter extends __1.Adapter {
1723
1678
  target: networkAddress,
1724
1679
  apsFrame,
1725
1680
  responseClusterId: Zdo.ClusterId.ACTIVE_ENDPOINTS_RESPONSE,
1726
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1681
+ }, DEFAULT_REQUEST_TIMEOUT);
1727
1682
  return { endpoints: result.endpointList };
1728
1683
  }, networkAddress);
1729
1684
  }
@@ -1740,7 +1695,7 @@ class EmberAdapter extends __1.Adapter {
1740
1695
  target: networkAddress,
1741
1696
  apsFrame,
1742
1697
  responseClusterId: Zdo.ClusterId.SIMPLE_DESCRIPTOR_RESPONSE,
1743
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1698
+ }, DEFAULT_REQUEST_TIMEOUT);
1744
1699
  return {
1745
1700
  profileID: result.profileId,
1746
1701
  endpointID: result.endpoint,
@@ -1756,7 +1711,7 @@ class EmberAdapter extends __1.Adapter {
1756
1711
  this.checkInterpanLock();
1757
1712
  const zdoPayload = buffaloZdo_1.BuffaloZdo.buildBindRequest(sourceIeeeAddress, sourceEndpoint, clusterID, type === 'group' ? Zdo.MULTICAST_BINDING : Zdo.UNICAST_BINDING, destinationAddressOrGroup, // not used with MULTICAST_BINDING
1758
1713
  destinationAddressOrGroup, // not used with UNICAST_BINDING
1759
- destinationEndpoint);
1714
+ destinationEndpoint ?? 0);
1760
1715
  const [status, apsFrame] = await this.sendZDORequest(destinationNetworkAddress, Zdo.ClusterId.BIND_REQUEST, zdoPayload, exports.DEFAULT_APS_OPTIONS);
1761
1716
  if (status !== enums_1.SLStatus.OK) {
1762
1717
  throw new Error(`[ZDO] Failed bind request for '${destinationNetworkAddress}' destination '${destinationAddressOrGroup}' endpoint '${destinationEndpoint}' with status=${enums_1.SLStatus[status]}.`);
@@ -1765,7 +1720,7 @@ class EmberAdapter extends __1.Adapter {
1765
1720
  target: destinationNetworkAddress,
1766
1721
  apsFrame,
1767
1722
  responseClusterId: Zdo.ClusterId.BIND_RESPONSE,
1768
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1723
+ }, DEFAULT_REQUEST_TIMEOUT);
1769
1724
  }, destinationNetworkAddress);
1770
1725
  }
1771
1726
  // queued, non-InterPAN
@@ -1774,7 +1729,7 @@ class EmberAdapter extends __1.Adapter {
1774
1729
  this.checkInterpanLock();
1775
1730
  const zdoPayload = buffaloZdo_1.BuffaloZdo.buildUnbindRequest(sourceIeeeAddress, sourceEndpoint, clusterID, type === 'group' ? Zdo.MULTICAST_BINDING : Zdo.UNICAST_BINDING, destinationAddressOrGroup, // not used with MULTICAST_BINDING
1776
1731
  destinationAddressOrGroup, // not used with UNICAST_BINDING
1777
- destinationEndpoint);
1732
+ destinationEndpoint ?? 0);
1778
1733
  const [status, apsFrame] = await this.sendZDORequest(destinationNetworkAddress, Zdo.ClusterId.UNBIND_REQUEST, zdoPayload, exports.DEFAULT_APS_OPTIONS);
1779
1734
  if (status !== enums_1.SLStatus.OK) {
1780
1735
  throw new Error(`[ZDO] Failed unbind request for '${destinationNetworkAddress}' destination '${destinationAddressOrGroup}' endpoint '${destinationEndpoint}' with status=${enums_1.SLStatus[status]}.`);
@@ -1783,7 +1738,7 @@ class EmberAdapter extends __1.Adapter {
1783
1738
  target: destinationNetworkAddress,
1784
1739
  apsFrame,
1785
1740
  responseClusterId: Zdo.ClusterId.UNBIND_RESPONSE,
1786
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1741
+ }, DEFAULT_REQUEST_TIMEOUT);
1787
1742
  }, destinationNetworkAddress);
1788
1743
  }
1789
1744
  // queued, non-InterPAN
@@ -1799,7 +1754,7 @@ class EmberAdapter extends __1.Adapter {
1799
1754
  target: networkAddress,
1800
1755
  apsFrame,
1801
1756
  responseClusterId: Zdo.ClusterId.LEAVE_RESPONSE,
1802
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1757
+ }, DEFAULT_REQUEST_TIMEOUT);
1803
1758
  }, networkAddress);
1804
1759
  }
1805
1760
  //---- ZCL
@@ -1807,7 +1762,7 @@ class EmberAdapter extends __1.Adapter {
1807
1762
  async sendZclFrameToEndpoint(ieeeAddr, networkAddress, endpoint, zclFrame, timeout, disableResponse, disableRecovery, sourceEndpoint) {
1808
1763
  const sourceEndpointInfo = (sourceEndpoint && endpoints_1.FIXED_ENDPOINTS.find((epi) => epi.endpoint === sourceEndpoint)) || endpoints_1.FIXED_ENDPOINTS[0];
1809
1764
  const command = zclFrame.command;
1810
- let commandResponseId = null;
1765
+ let commandResponseId;
1811
1766
  if (command.response !== undefined && disableResponse === false) {
1812
1767
  commandResponseId = command.response;
1813
1768
  }
@@ -1824,7 +1779,7 @@ class EmberAdapter extends __1.Adapter {
1824
1779
  sequence: 0, // set by stack
1825
1780
  };
1826
1781
  // don't RETRY if no response expected
1827
- if (commandResponseId == null) {
1782
+ if (commandResponseId === undefined) {
1828
1783
  apsFrame.options &= ~enums_1.EmberApsOption.RETRY;
1829
1784
  }
1830
1785
  const data = zclFrame.toBuffer();
@@ -1870,7 +1825,7 @@ class EmberAdapter extends __1.Adapter {
1870
1825
  }
1871
1826
  logger_1.logger.debug(`~x~> [ZCL to=${networkAddress}] Failed to send request attempt ${i}/${QUEUE_MAX_SEND_ATTEMPTS} with status=${enums_1.SLStatus[status]}.`, NS);
1872
1827
  }
1873
- if (commandResponseId != null) {
1828
+ if (commandResponseId !== undefined) {
1874
1829
  // NOTE: aps sequence number will have been set by send function
1875
1830
  const result = await this.oneWaitress.startWaitingFor({
1876
1831
  target: networkAddress,
@@ -1880,7 +1835,6 @@ class EmberAdapter extends __1.Adapter {
1880
1835
  }, timeout);
1881
1836
  return result;
1882
1837
  }
1883
- return null;
1884
1838
  }, networkAddress);
1885
1839
  }
1886
1840
  // queued, non-InterPAN
@@ -2015,7 +1969,7 @@ class EmberAdapter extends __1.Adapter {
2015
1969
  }
2016
1970
  // NOTE: can use ezspRawTransmitCompleteHandler if needed here
2017
1971
  const result = await this.oneWaitress.startWaitingFor({
2018
- target: null,
1972
+ target: undefined,
2019
1973
  apsFrame: apsFrame,
2020
1974
  zclSequence: zclFrame.header.transactionSequenceNumber,
2021
1975
  commandIdentifier: command.response,