@willieee802/zigbee-herdsman 0.14.10-5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (622) hide show
  1. package/.babelrc.js +10 -0
  2. package/.eslintignore +3 -0
  3. package/.github/ISSUE_TEMPLATE/config.yml +5 -0
  4. package/.github/dependabot.yml +6 -0
  5. package/.github/workflows/ci.yml +31 -0
  6. package/.github/workflows/release.yml +56 -0
  7. package/.github/workflows/stale.yml +19 -0
  8. package/.github/workflows/update_deps.yml +24 -0
  9. package/LICENSE +21 -0
  10. package/README.md +9 -0
  11. package/dist/adapter/adapter.d.ts +62 -0
  12. package/dist/adapter/adapter.d.ts.map +1 -0
  13. package/dist/adapter/adapter.js +101 -0
  14. package/dist/adapter/adapter.js.map +1 -0
  15. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +69 -0
  16. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -0
  17. package/dist/adapter/deconz/adapter/deconzAdapter.js +1064 -0
  18. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -0
  19. package/dist/adapter/deconz/adapter/index.d.ts +3 -0
  20. package/dist/adapter/deconz/adapter/index.d.ts.map +1 -0
  21. package/dist/adapter/deconz/adapter/index.js +11 -0
  22. package/dist/adapter/deconz/adapter/index.js.map +1 -0
  23. package/dist/adapter/deconz/driver/constants.d.ts +105 -0
  24. package/dist/adapter/deconz/driver/constants.d.ts.map +1 -0
  25. package/dist/adapter/deconz/driver/constants.js +56 -0
  26. package/dist/adapter/deconz/driver/constants.js.map +1 -0
  27. package/dist/adapter/deconz/driver/driver.d.ts +82 -0
  28. package/dist/adapter/deconz/driver/driver.d.ts.map +1 -0
  29. package/dist/adapter/deconz/driver/driver.js +733 -0
  30. package/dist/adapter/deconz/driver/driver.js.map +1 -0
  31. package/dist/adapter/deconz/driver/frame.d.ts +7 -0
  32. package/dist/adapter/deconz/driver/frame.d.ts.map +1 -0
  33. package/dist/adapter/deconz/driver/frame.js +14 -0
  34. package/dist/adapter/deconz/driver/frame.js.map +1 -0
  35. package/dist/adapter/deconz/driver/frameParser.d.ts +3 -0
  36. package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -0
  37. package/dist/adapter/deconz/driver/frameParser.js +444 -0
  38. package/dist/adapter/deconz/driver/frameParser.js.map +1 -0
  39. package/dist/adapter/deconz/driver/parser.d.ts +13 -0
  40. package/dist/adapter/deconz/driver/parser.d.ts.map +1 -0
  41. package/dist/adapter/deconz/driver/parser.js +62 -0
  42. package/dist/adapter/deconz/driver/parser.js.map +1 -0
  43. package/dist/adapter/deconz/driver/writer.d.ts +9 -0
  44. package/dist/adapter/deconz/driver/writer.d.ts.map +1 -0
  45. package/dist/adapter/deconz/driver/writer.js +45 -0
  46. package/dist/adapter/deconz/driver/writer.js.map +1 -0
  47. package/dist/adapter/events.d.ts +48 -0
  48. package/dist/adapter/events.d.ts.map +1 -0
  49. package/dist/adapter/events.js +15 -0
  50. package/dist/adapter/events.js.map +1 -0
  51. package/dist/adapter/ezsp/adapter/backup.d.ts +10 -0
  52. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -0
  53. package/dist/adapter/ezsp/adapter/backup.js +54 -0
  54. package/dist/adapter/ezsp/adapter/backup.js.map +1 -0
  55. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +60 -0
  56. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -0
  57. package/dist/adapter/ezsp/adapter/ezspAdapter.js +586 -0
  58. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -0
  59. package/dist/adapter/ezsp/adapter/index.d.ts +3 -0
  60. package/dist/adapter/ezsp/adapter/index.d.ts.map +1 -0
  61. package/dist/adapter/ezsp/adapter/index.js +11 -0
  62. package/dist/adapter/ezsp/adapter/index.js.map +1 -0
  63. package/dist/adapter/ezsp/driver/commands.d.ts +35 -0
  64. package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -0
  65. package/dist/adapter/ezsp/driver/commands.js +2358 -0
  66. package/dist/adapter/ezsp/driver/commands.js.map +1 -0
  67. package/dist/adapter/ezsp/driver/consts.d.ts +11 -0
  68. package/dist/adapter/ezsp/driver/consts.d.ts.map +1 -0
  69. package/dist/adapter/ezsp/driver/consts.js +14 -0
  70. package/dist/adapter/ezsp/driver/consts.js.map +1 -0
  71. package/dist/adapter/ezsp/driver/driver.d.ts +104 -0
  72. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -0
  73. package/dist/adapter/ezsp/driver/driver.js +640 -0
  74. package/dist/adapter/ezsp/driver/driver.js.map +1 -0
  75. package/dist/adapter/ezsp/driver/ezsp.d.ts +97 -0
  76. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -0
  77. package/dist/adapter/ezsp/driver/ezsp.js +578 -0
  78. package/dist/adapter/ezsp/driver/ezsp.js.map +1 -0
  79. package/dist/adapter/ezsp/driver/index.d.ts +4 -0
  80. package/dist/adapter/ezsp/driver/index.d.ts.map +1 -0
  81. package/dist/adapter/ezsp/driver/index.js +9 -0
  82. package/dist/adapter/ezsp/driver/index.js.map +1 -0
  83. package/dist/adapter/ezsp/driver/multicast.d.ts +13 -0
  84. package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -0
  85. package/dist/adapter/ezsp/driver/multicast.js +75 -0
  86. package/dist/adapter/ezsp/driver/multicast.js.map +1 -0
  87. package/dist/adapter/ezsp/driver/parser.d.ts +13 -0
  88. package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -0
  89. package/dist/adapter/ezsp/driver/parser.js +112 -0
  90. package/dist/adapter/ezsp/driver/parser.js.map +1 -0
  91. package/dist/adapter/ezsp/driver/types/basic.d.ts +63 -0
  92. package/dist/adapter/ezsp/driver/types/basic.d.ts.map +1 -0
  93. package/dist/adapter/ezsp/driver/types/basic.js +209 -0
  94. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -0
  95. package/dist/adapter/ezsp/driver/types/index.d.ts +10 -0
  96. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -0
  97. package/dist/adapter/ezsp/driver/types/index.js +134 -0
  98. package/dist/adapter/ezsp/driver/types/index.js.map +1 -0
  99. package/dist/adapter/ezsp/driver/types/named.d.ts +698 -0
  100. package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -0
  101. package/dist/adapter/ezsp/driver/types/named.js +1727 -0
  102. package/dist/adapter/ezsp/driver/types/named.js.map +1 -0
  103. package/dist/adapter/ezsp/driver/types/struct.d.ts +252 -0
  104. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -0
  105. package/dist/adapter/ezsp/driver/types/struct.js +709 -0
  106. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -0
  107. package/dist/adapter/ezsp/driver/uart.d.ts +45 -0
  108. package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -0
  109. package/dist/adapter/ezsp/driver/uart.js +367 -0
  110. package/dist/adapter/ezsp/driver/uart.js.map +1 -0
  111. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +3 -0
  112. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +1 -0
  113. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +56 -0
  114. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -0
  115. package/dist/adapter/ezsp/driver/utils/index.d.ts +19 -0
  116. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -0
  117. package/dist/adapter/ezsp/driver/utils/index.js +68 -0
  118. package/dist/adapter/ezsp/driver/utils/index.js.map +1 -0
  119. package/dist/adapter/ezsp/driver/writer.d.ts +14 -0
  120. package/dist/adapter/ezsp/driver/writer.d.ts.map +1 -0
  121. package/dist/adapter/ezsp/driver/writer.js +89 -0
  122. package/dist/adapter/ezsp/driver/writer.js.map +1 -0
  123. package/dist/adapter/index.d.ts +5 -0
  124. package/dist/adapter/index.d.ts.map +1 -0
  125. package/dist/adapter/index.js +36 -0
  126. package/dist/adapter/index.js.map +1 -0
  127. package/dist/adapter/serialPort.d.ts +9 -0
  128. package/dist/adapter/serialPort.d.ts.map +1 -0
  129. package/dist/adapter/serialPort.js +23 -0
  130. package/dist/adapter/serialPort.js.map +1 -0
  131. package/dist/adapter/serialPortUtils.d.ts +13 -0
  132. package/dist/adapter/serialPortUtils.d.ts.map +1 -0
  133. package/dist/adapter/serialPortUtils.js +19 -0
  134. package/dist/adapter/serialPortUtils.js.map +1 -0
  135. package/dist/adapter/socketPortUtils.d.ts +11 -0
  136. package/dist/adapter/socketPortUtils.d.ts.map +1 -0
  137. package/dist/adapter/socketPortUtils.js +17 -0
  138. package/dist/adapter/socketPortUtils.js.map +1 -0
  139. package/dist/adapter/tstype.d.ts +86 -0
  140. package/dist/adapter/tstype.d.ts.map +1 -0
  141. package/dist/adapter/tstype.js +3 -0
  142. package/dist/adapter/tstype.js.map +1 -0
  143. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +63 -0
  144. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -0
  145. package/dist/adapter/z-stack/adapter/adapter-backup.js +442 -0
  146. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -0
  147. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +151 -0
  148. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +1 -0
  149. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +259 -0
  150. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -0
  151. package/dist/adapter/z-stack/adapter/endpoints.d.ts +12 -0
  152. package/dist/adapter/z-stack/adapter/endpoints.d.ts.map +1 -0
  153. package/dist/adapter/z-stack/adapter/endpoints.js +74 -0
  154. package/dist/adapter/z-stack/adapter/endpoints.js.map +1 -0
  155. package/dist/adapter/z-stack/adapter/index.d.ts +3 -0
  156. package/dist/adapter/z-stack/adapter/index.d.ts.map +1 -0
  157. package/dist/adapter/z-stack/adapter/index.js +9 -0
  158. package/dist/adapter/z-stack/adapter/index.js.map +1 -0
  159. package/dist/adapter/z-stack/adapter/manager.d.ts +87 -0
  160. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -0
  161. package/dist/adapter/z-stack/adapter/manager.js +477 -0
  162. package/dist/adapter/z-stack/adapter/manager.js.map +1 -0
  163. package/dist/adapter/z-stack/adapter/tstype.d.ts +7 -0
  164. package/dist/adapter/z-stack/adapter/tstype.d.ts.map +1 -0
  165. package/dist/adapter/z-stack/adapter/tstype.js +11 -0
  166. package/dist/adapter/z-stack/adapter/tstype.js.map +1 -0
  167. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +82 -0
  168. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -0
  169. package/dist/adapter/z-stack/adapter/zStackAdapter.js +869 -0
  170. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -0
  171. package/dist/adapter/z-stack/constants/af.d.ts +24 -0
  172. package/dist/adapter/z-stack/constants/af.d.ts.map +1 -0
  173. package/dist/adapter/z-stack/constants/af.js +28 -0
  174. package/dist/adapter/z-stack/constants/af.js.map +1 -0
  175. package/dist/adapter/z-stack/constants/common.d.ts +279 -0
  176. package/dist/adapter/z-stack/constants/common.d.ts.map +1 -0
  177. package/dist/adapter/z-stack/constants/common.js +290 -0
  178. package/dist/adapter/z-stack/constants/common.js.map +1 -0
  179. package/dist/adapter/z-stack/constants/dbg.d.ts +23 -0
  180. package/dist/adapter/z-stack/constants/dbg.d.ts.map +1 -0
  181. package/dist/adapter/z-stack/constants/dbg.js +25 -0
  182. package/dist/adapter/z-stack/constants/dbg.js.map +1 -0
  183. package/dist/adapter/z-stack/constants/index.d.ts +11 -0
  184. package/dist/adapter/z-stack/constants/index.d.ts.map +1 -0
  185. package/dist/adapter/z-stack/constants/index.js +48 -0
  186. package/dist/adapter/z-stack/constants/index.js.map +1 -0
  187. package/dist/adapter/z-stack/constants/mac.d.ts +128 -0
  188. package/dist/adapter/z-stack/constants/mac.d.ts.map +1 -0
  189. package/dist/adapter/z-stack/constants/mac.js +130 -0
  190. package/dist/adapter/z-stack/constants/mac.js.map +1 -0
  191. package/dist/adapter/z-stack/constants/sapi.d.ts +25 -0
  192. package/dist/adapter/z-stack/constants/sapi.d.ts.map +1 -0
  193. package/dist/adapter/z-stack/constants/sapi.js +27 -0
  194. package/dist/adapter/z-stack/constants/sapi.js.map +1 -0
  195. package/dist/adapter/z-stack/constants/sys.d.ts +72 -0
  196. package/dist/adapter/z-stack/constants/sys.d.ts.map +1 -0
  197. package/dist/adapter/z-stack/constants/sys.js +74 -0
  198. package/dist/adapter/z-stack/constants/sys.js.map +1 -0
  199. package/dist/adapter/z-stack/constants/util.d.ts +82 -0
  200. package/dist/adapter/z-stack/constants/util.d.ts.map +1 -0
  201. package/dist/adapter/z-stack/constants/util.js +84 -0
  202. package/dist/adapter/z-stack/constants/util.js.map +1 -0
  203. package/dist/adapter/z-stack/constants/utils.d.ts +5 -0
  204. package/dist/adapter/z-stack/constants/utils.d.ts.map +1 -0
  205. package/dist/adapter/z-stack/constants/utils.js +15 -0
  206. package/dist/adapter/z-stack/constants/utils.js.map +1 -0
  207. package/dist/adapter/z-stack/constants/zdo.d.ts +103 -0
  208. package/dist/adapter/z-stack/constants/zdo.d.ts.map +1 -0
  209. package/dist/adapter/z-stack/constants/zdo.js +105 -0
  210. package/dist/adapter/z-stack/constants/zdo.js.map +1 -0
  211. package/dist/adapter/z-stack/models/index.d.ts +2 -0
  212. package/dist/adapter/z-stack/models/index.d.ts.map +1 -0
  213. package/dist/adapter/z-stack/models/index.js +18 -0
  214. package/dist/adapter/z-stack/models/index.js.map +1 -0
  215. package/dist/adapter/z-stack/models/startup-options.d.ts +13 -0
  216. package/dist/adapter/z-stack/models/startup-options.d.ts.map +1 -0
  217. package/dist/adapter/z-stack/models/startup-options.js +3 -0
  218. package/dist/adapter/z-stack/models/startup-options.js.map +1 -0
  219. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +24 -0
  220. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +1 -0
  221. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +46 -0
  222. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -0
  223. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +11 -0
  224. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +1 -0
  225. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +23 -0
  226. package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +1 -0
  227. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +11 -0
  228. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts.map +1 -0
  229. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +22 -0
  230. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +1 -0
  231. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +11 -0
  232. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +1 -0
  233. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +24 -0
  234. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +1 -0
  235. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +11 -0
  236. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts.map +1 -0
  237. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +25 -0
  238. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +1 -0
  239. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +11 -0
  240. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +1 -0
  241. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +24 -0
  242. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +1 -0
  243. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +9 -0
  244. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts.map +1 -0
  245. package/dist/adapter/z-stack/structs/entries/channel-list.js +16 -0
  246. package/dist/adapter/z-stack/structs/entries/channel-list.js.map +1 -0
  247. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +9 -0
  248. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +1 -0
  249. package/dist/adapter/z-stack/structs/entries/has-configured.js +17 -0
  250. package/dist/adapter/z-stack/structs/entries/has-configured.js.map +1 -0
  251. package/dist/adapter/z-stack/structs/entries/index.d.ts +17 -0
  252. package/dist/adapter/z-stack/structs/entries/index.d.ts.map +1 -0
  253. package/dist/adapter/z-stack/structs/entries/index.js +33 -0
  254. package/dist/adapter/z-stack/structs/entries/index.js.map +1 -0
  255. package/dist/adapter/z-stack/structs/entries/nib.d.ts +11 -0
  256. package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +1 -0
  257. package/dist/adapter/z-stack/structs/entries/nib.js +69 -0
  258. package/dist/adapter/z-stack/structs/entries/nib.js.map +1 -0
  259. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +11 -0
  260. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +1 -0
  261. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +19 -0
  262. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +1 -0
  263. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +9 -0
  264. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +1 -0
  265. package/dist/adapter/z-stack/structs/entries/nwk-key.js +16 -0
  266. package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +1 -0
  267. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +9 -0
  268. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts.map +1 -0
  269. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +16 -0
  270. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +1 -0
  271. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +14 -0
  272. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts.map +1 -0
  273. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +24 -0
  274. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +1 -0
  275. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +11 -0
  276. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +1 -0
  277. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +23 -0
  278. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +1 -0
  279. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +21 -0
  280. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts.map +1 -0
  281. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +37 -0
  282. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -0
  283. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +11 -0
  284. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +1 -0
  285. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +25 -0
  286. package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +1 -0
  287. package/dist/adapter/z-stack/structs/index.d.ts +5 -0
  288. package/dist/adapter/z-stack/structs/index.d.ts.map +1 -0
  289. package/dist/adapter/z-stack/structs/index.js +21 -0
  290. package/dist/adapter/z-stack/structs/index.js.map +1 -0
  291. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +14 -0
  292. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts.map +1 -0
  293. package/dist/adapter/z-stack/structs/serializable-memory-object.js +3 -0
  294. package/dist/adapter/z-stack/structs/serializable-memory-object.js.map +1 -0
  295. package/dist/adapter/z-stack/structs/struct.d.ts +100 -0
  296. package/dist/adapter/z-stack/structs/struct.d.ts.map +1 -0
  297. package/dist/adapter/z-stack/structs/struct.js +296 -0
  298. package/dist/adapter/z-stack/structs/struct.js.map +1 -0
  299. package/dist/adapter/z-stack/structs/table.d.ts +95 -0
  300. package/dist/adapter/z-stack/structs/table.d.ts.map +1 -0
  301. package/dist/adapter/z-stack/structs/table.js +162 -0
  302. package/dist/adapter/z-stack/structs/table.js.map +1 -0
  303. package/dist/adapter/z-stack/unpi/constants.d.ts +29 -0
  304. package/dist/adapter/z-stack/unpi/constants.d.ts.map +1 -0
  305. package/dist/adapter/z-stack/unpi/constants.js +42 -0
  306. package/dist/adapter/z-stack/unpi/constants.js.map +1 -0
  307. package/dist/adapter/z-stack/unpi/frame.d.ts +17 -0
  308. package/dist/adapter/z-stack/unpi/frame.d.ts.map +1 -0
  309. package/dist/adapter/z-stack/unpi/frame.js +49 -0
  310. package/dist/adapter/z-stack/unpi/frame.js.map +1 -0
  311. package/dist/adapter/z-stack/unpi/index.d.ts +6 -0
  312. package/dist/adapter/z-stack/unpi/index.d.ts.map +1 -0
  313. package/dist/adapter/z-stack/unpi/index.js +38 -0
  314. package/dist/adapter/z-stack/unpi/index.js.map +1 -0
  315. package/dist/adapter/z-stack/unpi/parser.d.ts +11 -0
  316. package/dist/adapter/z-stack/unpi/parser.d.ts.map +1 -0
  317. package/dist/adapter/z-stack/unpi/parser.js +75 -0
  318. package/dist/adapter/z-stack/unpi/parser.js.map +1 -0
  319. package/dist/adapter/z-stack/unpi/writer.d.ts +11 -0
  320. package/dist/adapter/z-stack/unpi/writer.d.ts.map +1 -0
  321. package/dist/adapter/z-stack/unpi/writer.js +45 -0
  322. package/dist/adapter/z-stack/unpi/writer.js.map +1 -0
  323. package/dist/adapter/z-stack/utils/channel-list.d.ts +21 -0
  324. package/dist/adapter/z-stack/utils/channel-list.d.ts.map +1 -0
  325. package/dist/adapter/z-stack/utils/channel-list.js +41 -0
  326. package/dist/adapter/z-stack/utils/channel-list.js.map +1 -0
  327. package/dist/adapter/z-stack/utils/index.d.ts +3 -0
  328. package/dist/adapter/z-stack/utils/index.d.ts.map +1 -0
  329. package/dist/adapter/z-stack/utils/index.js +19 -0
  330. package/dist/adapter/z-stack/utils/index.js.map +1 -0
  331. package/dist/adapter/z-stack/utils/network-options.d.ts +9 -0
  332. package/dist/adapter/z-stack/utils/network-options.d.ts.map +1 -0
  333. package/dist/adapter/z-stack/utils/network-options.js +23 -0
  334. package/dist/adapter/z-stack/utils/network-options.js.map +1 -0
  335. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +12 -0
  336. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +1 -0
  337. package/dist/adapter/z-stack/znp/buffaloZnp.js +114 -0
  338. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -0
  339. package/dist/adapter/z-stack/znp/definition.d.ts +6 -0
  340. package/dist/adapter/z-stack/znp/definition.d.ts.map +1 -0
  341. package/dist/adapter/z-stack/znp/definition.js +3051 -0
  342. package/dist/adapter/z-stack/znp/definition.js.map +1 -0
  343. package/dist/adapter/z-stack/znp/index.d.ts +4 -0
  344. package/dist/adapter/z-stack/znp/index.d.ts.map +1 -0
  345. package/dist/adapter/z-stack/znp/index.js +11 -0
  346. package/dist/adapter/z-stack/znp/index.js.map +1 -0
  347. package/dist/adapter/z-stack/znp/parameterType.d.ts +23 -0
  348. package/dist/adapter/z-stack/znp/parameterType.d.ts.map +1 -0
  349. package/dist/adapter/z-stack/znp/parameterType.js +26 -0
  350. package/dist/adapter/z-stack/znp/parameterType.js.map +1 -0
  351. package/dist/adapter/z-stack/znp/tstype.d.ts +22 -0
  352. package/dist/adapter/z-stack/znp/tstype.d.ts.map +1 -0
  353. package/dist/adapter/z-stack/znp/tstype.js +3 -0
  354. package/dist/adapter/z-stack/znp/tstype.js.map +1 -0
  355. package/dist/adapter/z-stack/znp/znp.d.ts +44 -0
  356. package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -0
  357. package/dist/adapter/z-stack/znp/znp.js +326 -0
  358. package/dist/adapter/z-stack/znp/znp.js.map +1 -0
  359. package/dist/adapter/z-stack/znp/zpiObject.d.ts +20 -0
  360. package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +1 -0
  361. package/dist/adapter/z-stack/znp/zpiObject.js +97 -0
  362. package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -0
  363. package/dist/adapter/zigate/adapter/index.d.ts +3 -0
  364. package/dist/adapter/zigate/adapter/index.d.ts.map +1 -0
  365. package/dist/adapter/zigate/adapter/index.js +11 -0
  366. package/dist/adapter/zigate/adapter/index.js.map +1 -0
  367. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +70 -0
  368. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -0
  369. package/dist/adapter/zigate/adapter/zigateAdapter.js +679 -0
  370. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -0
  371. package/dist/adapter/zigate/debug.d.ts +8 -0
  372. package/dist/adapter/zigate/debug.d.ts.map +1 -0
  373. package/dist/adapter/zigate/debug.js +23 -0
  374. package/dist/adapter/zigate/debug.js.map +1 -0
  375. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +19 -0
  376. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -0
  377. package/dist/adapter/zigate/driver/buffaloZiGate.js +140 -0
  378. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -0
  379. package/dist/adapter/zigate/driver/commandType.d.ts +42 -0
  380. package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -0
  381. package/dist/adapter/zigate/driver/commandType.js +386 -0
  382. package/dist/adapter/zigate/driver/commandType.js.map +1 -0
  383. package/dist/adapter/zigate/driver/constants.d.ts +277 -0
  384. package/dist/adapter/zigate/driver/constants.d.ts.map +1 -0
  385. package/dist/adapter/zigate/driver/constants.js +372 -0
  386. package/dist/adapter/zigate/driver/constants.js.map +1 -0
  387. package/dist/adapter/zigate/driver/frame.d.ts +27 -0
  388. package/dist/adapter/zigate/driver/frame.d.ts.map +1 -0
  389. package/dist/adapter/zigate/driver/frame.js +173 -0
  390. package/dist/adapter/zigate/driver/frame.js.map +1 -0
  391. package/dist/adapter/zigate/driver/messageType.d.ts +12 -0
  392. package/dist/adapter/zigate/driver/messageType.d.ts.map +1 -0
  393. package/dist/adapter/zigate/driver/messageType.js +279 -0
  394. package/dist/adapter/zigate/driver/messageType.js.map +1 -0
  395. package/dist/adapter/zigate/driver/parameterType.d.ts +21 -0
  396. package/dist/adapter/zigate/driver/parameterType.d.ts.map +1 -0
  397. package/dist/adapter/zigate/driver/parameterType.js +24 -0
  398. package/dist/adapter/zigate/driver/parameterType.js.map +1 -0
  399. package/dist/adapter/zigate/driver/ziGateObject.d.ts +24 -0
  400. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -0
  401. package/dist/adapter/zigate/driver/ziGateObject.js +107 -0
  402. package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -0
  403. package/dist/adapter/zigate/driver/zigate.d.ts +50 -0
  404. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -0
  405. package/dist/adapter/zigate/driver/zigate.js +304 -0
  406. package/dist/adapter/zigate/driver/zigate.js.map +1 -0
  407. package/dist/buffalo/buffalo.d.ts +49 -0
  408. package/dist/buffalo/buffalo.d.ts.map +1 -0
  409. package/dist/buffalo/buffalo.js +308 -0
  410. package/dist/buffalo/buffalo.js.map +1 -0
  411. package/dist/buffalo/index.d.ts +4 -0
  412. package/dist/buffalo/index.d.ts.map +1 -0
  413. package/dist/buffalo/index.js +34 -0
  414. package/dist/buffalo/index.js.map +1 -0
  415. package/dist/buffalo/tstype.d.ts +9 -0
  416. package/dist/buffalo/tstype.d.ts.map +1 -0
  417. package/dist/buffalo/tstype.js +3 -0
  418. package/dist/buffalo/tstype.js.map +1 -0
  419. package/dist/controller/controller.d.ts +111 -0
  420. package/dist/controller/controller.d.ts.map +1 -0
  421. package/dist/controller/controller.js +608 -0
  422. package/dist/controller/controller.js.map +1 -0
  423. package/dist/controller/database.d.ts +19 -0
  424. package/dist/controller/database.d.ts.map +1 -0
  425. package/dist/controller/database.js +94 -0
  426. package/dist/controller/database.js.map +1 -0
  427. package/dist/controller/events.d.ts +56 -0
  428. package/dist/controller/events.d.ts.map +1 -0
  429. package/dist/controller/events.js +100 -0
  430. package/dist/controller/events.js.map +1 -0
  431. package/dist/controller/greenPower.d.ts +13 -0
  432. package/dist/controller/greenPower.d.ts.map +1 -0
  433. package/dist/controller/greenPower.js +221 -0
  434. package/dist/controller/greenPower.js.map +1 -0
  435. package/dist/controller/helpers/index.d.ts +3 -0
  436. package/dist/controller/helpers/index.d.ts.map +1 -0
  437. package/dist/controller/helpers/index.js +29 -0
  438. package/dist/controller/helpers/index.js.map +1 -0
  439. package/dist/controller/helpers/zclFrameConverter.d.ts +8 -0
  440. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -0
  441. package/dist/controller/helpers/zclFrameConverter.js +32 -0
  442. package/dist/controller/helpers/zclFrameConverter.js.map +1 -0
  443. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +6 -0
  444. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts.map +1 -0
  445. package/dist/controller/helpers/zclTransactionSequenceNumber.js +14 -0
  446. package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +1 -0
  447. package/dist/controller/index.d.ts +6 -0
  448. package/dist/controller/index.d.ts.map +1 -0
  449. package/dist/controller/index.js +9 -0
  450. package/dist/controller/index.js.map +1 -0
  451. package/dist/controller/logger-stub.d.ts +7 -0
  452. package/dist/controller/logger-stub.d.ts.map +1 -0
  453. package/dist/controller/logger-stub.js +3 -0
  454. package/dist/controller/logger-stub.js.map +1 -0
  455. package/dist/controller/model/device.d.ts +128 -0
  456. package/dist/controller/model/device.d.ts.map +1 -0
  457. package/dist/controller/model/device.js +682 -0
  458. package/dist/controller/model/device.js.map +1 -0
  459. package/dist/controller/model/endpoint.d.ts +129 -0
  460. package/dist/controller/model/endpoint.d.ts.map +1 -0
  461. package/dist/controller/model/endpoint.js +666 -0
  462. package/dist/controller/model/endpoint.js.map +1 -0
  463. package/dist/controller/model/entity.d.ts +15 -0
  464. package/dist/controller/model/entity.d.ts.map +1 -0
  465. package/dist/controller/model/entity.js +27 -0
  466. package/dist/controller/model/entity.js.map +1 -0
  467. package/dist/controller/model/group.d.ts +40 -0
  468. package/dist/controller/model/group.d.ts.map +1 -0
  469. package/dist/controller/model/group.js +222 -0
  470. package/dist/controller/model/group.js.map +1 -0
  471. package/dist/controller/model/index.d.ts +6 -0
  472. package/dist/controller/model/index.d.ts.map +1 -0
  473. package/dist/controller/model/index.js +15 -0
  474. package/dist/controller/model/index.js.map +1 -0
  475. package/dist/controller/touchlink.d.ts +20 -0
  476. package/dist/controller/touchlink.d.ts.map +1 -0
  477. package/dist/controller/touchlink.js +158 -0
  478. package/dist/controller/touchlink.js.map +1 -0
  479. package/dist/controller/tstype.d.ts +21 -0
  480. package/dist/controller/tstype.d.ts.map +1 -0
  481. package/dist/controller/tstype.js +10 -0
  482. package/dist/controller/tstype.js.map +1 -0
  483. package/dist/index.d.ts +4 -0
  484. package/dist/index.d.ts.map +1 -0
  485. package/dist/index.js +34 -0
  486. package/dist/index.js.map +1 -0
  487. package/dist/models/backup-storage-legacy.d.ts +27 -0
  488. package/dist/models/backup-storage-legacy.d.ts.map +1 -0
  489. package/dist/models/backup-storage-legacy.js +3 -0
  490. package/dist/models/backup-storage-legacy.js.map +1 -0
  491. package/dist/models/backup-storage-unified.d.ts +50 -0
  492. package/dist/models/backup-storage-unified.d.ts.map +1 -0
  493. package/dist/models/backup-storage-unified.js +3 -0
  494. package/dist/models/backup-storage-unified.js.map +1 -0
  495. package/dist/models/backup.d.ts +38 -0
  496. package/dist/models/backup.d.ts.map +1 -0
  497. package/dist/models/backup.js +3 -0
  498. package/dist/models/backup.js.map +1 -0
  499. package/dist/models/index.d.ts +5 -0
  500. package/dist/models/index.d.ts.map +1 -0
  501. package/dist/models/index.js +21 -0
  502. package/dist/models/index.js.map +1 -0
  503. package/dist/models/network-options.d.ts +13 -0
  504. package/dist/models/network-options.d.ts.map +1 -0
  505. package/dist/models/network-options.js +3 -0
  506. package/dist/models/network-options.js.map +1 -0
  507. package/dist/utils/assertString.d.ts +3 -0
  508. package/dist/utils/assertString.d.ts.map +1 -0
  509. package/dist/utils/assertString.js +9 -0
  510. package/dist/utils/assertString.js.map +1 -0
  511. package/dist/utils/backup.d.ts +21 -0
  512. package/dist/utils/backup.d.ts.map +1 -0
  513. package/dist/utils/backup.js +188 -0
  514. package/dist/utils/backup.js.map +1 -0
  515. package/dist/utils/equalsPartial.d.ts +3 -0
  516. package/dist/utils/equalsPartial.d.ts.map +1 -0
  517. package/dist/utils/equalsPartial.js +12 -0
  518. package/dist/utils/equalsPartial.js.map +1 -0
  519. package/dist/utils/index.d.ts +10 -0
  520. package/dist/utils/index.d.ts.map +1 -0
  521. package/dist/utils/index.js +46 -0
  522. package/dist/utils/index.js.map +1 -0
  523. package/dist/utils/isNumberArray.d.ts +3 -0
  524. package/dist/utils/isNumberArray.d.ts.map +1 -0
  525. package/dist/utils/isNumberArray.js +7 -0
  526. package/dist/utils/isNumberArray.js.map +1 -0
  527. package/dist/utils/queue.d.ts +12 -0
  528. package/dist/utils/queue.d.ts.map +1 -0
  529. package/dist/utils/queue.js +51 -0
  530. package/dist/utils/queue.js.map +1 -0
  531. package/dist/utils/realpathSync.d.ts +3 -0
  532. package/dist/utils/realpathSync.d.ts.map +1 -0
  533. package/dist/utils/realpathSync.js +13 -0
  534. package/dist/utils/realpathSync.js.map +1 -0
  535. package/dist/utils/wait.d.ts +3 -0
  536. package/dist/utils/wait.d.ts.map +1 -0
  537. package/dist/utils/wait.js +9 -0
  538. package/dist/utils/wait.js.map +1 -0
  539. package/dist/utils/waitress.d.ts +22 -0
  540. package/dist/utils/waitress.d.ts.map +1 -0
  541. package/dist/utils/waitress.js +62 -0
  542. package/dist/utils/waitress.js.map +1 -0
  543. package/dist/zcl/buffaloZcl.d.ts +42 -0
  544. package/dist/zcl/buffaloZcl.d.ts.map +1 -0
  545. package/dist/zcl/buffaloZcl.js +592 -0
  546. package/dist/zcl/buffaloZcl.js.map +1 -0
  547. package/dist/zcl/definition/buffaloZclDataType.d.ts +18 -0
  548. package/dist/zcl/definition/buffaloZclDataType.d.ts.map +1 -0
  549. package/dist/zcl/definition/buffaloZclDataType.js +21 -0
  550. package/dist/zcl/definition/buffaloZclDataType.js.map +1 -0
  551. package/dist/zcl/definition/cluster.d.ts +30 -0
  552. package/dist/zcl/definition/cluster.d.ts.map +1 -0
  553. package/dist/zcl/definition/cluster.js +5216 -0
  554. package/dist/zcl/definition/cluster.js.map +1 -0
  555. package/dist/zcl/definition/dataType.d.ts +60 -0
  556. package/dist/zcl/definition/dataType.d.ts.map +1 -0
  557. package/dist/zcl/definition/dataType.js +65 -0
  558. package/dist/zcl/definition/dataType.js.map +1 -0
  559. package/dist/zcl/definition/direction.d.ts +6 -0
  560. package/dist/zcl/definition/direction.d.ts.map +1 -0
  561. package/dist/zcl/definition/direction.js +9 -0
  562. package/dist/zcl/definition/direction.js.map +1 -0
  563. package/dist/zcl/definition/endpointDeviceType.d.ts +5 -0
  564. package/dist/zcl/definition/endpointDeviceType.d.ts.map +1 -0
  565. package/dist/zcl/definition/endpointDeviceType.js +16 -0
  566. package/dist/zcl/definition/endpointDeviceType.js.map +1 -0
  567. package/dist/zcl/definition/foundation.d.ts +12 -0
  568. package/dist/zcl/definition/foundation.d.ts.map +1 -0
  569. package/dist/zcl/definition/foundation.js +168 -0
  570. package/dist/zcl/definition/foundation.js.map +1 -0
  571. package/dist/zcl/definition/frameControl.d.ts +11 -0
  572. package/dist/zcl/definition/frameControl.d.ts.map +1 -0
  573. package/dist/zcl/definition/frameControl.js +3 -0
  574. package/dist/zcl/definition/frameControl.js.map +1 -0
  575. package/dist/zcl/definition/frameType.d.ts +6 -0
  576. package/dist/zcl/definition/frameType.d.ts.map +1 -0
  577. package/dist/zcl/definition/frameType.js +9 -0
  578. package/dist/zcl/definition/frameType.js.map +1 -0
  579. package/dist/zcl/definition/index.d.ts +14 -0
  580. package/dist/zcl/definition/index.d.ts.map +1 -0
  581. package/dist/zcl/definition/index.js +52 -0
  582. package/dist/zcl/definition/index.js.map +1 -0
  583. package/dist/zcl/definition/manufacturerCode.d.ts +1075 -0
  584. package/dist/zcl/definition/manufacturerCode.d.ts.map +1 -0
  585. package/dist/zcl/definition/manufacturerCode.js +1080 -0
  586. package/dist/zcl/definition/manufacturerCode.js.map +1 -0
  587. package/dist/zcl/definition/powerSource.d.ts +5 -0
  588. package/dist/zcl/definition/powerSource.d.ts.map +1 -0
  589. package/dist/zcl/definition/powerSource.js +13 -0
  590. package/dist/zcl/definition/powerSource.js.map +1 -0
  591. package/dist/zcl/definition/status.d.ts +39 -0
  592. package/dist/zcl/definition/status.d.ts.map +1 -0
  593. package/dist/zcl/definition/status.js +42 -0
  594. package/dist/zcl/definition/status.js.map +1 -0
  595. package/dist/zcl/definition/tstype.d.ts +17 -0
  596. package/dist/zcl/definition/tstype.d.ts.map +1 -0
  597. package/dist/zcl/definition/tstype.js +3 -0
  598. package/dist/zcl/definition/tstype.js.map +1 -0
  599. package/dist/zcl/index.d.ts +16 -0
  600. package/dist/zcl/index.d.ts.map +1 -0
  601. package/dist/zcl/index.js +56 -0
  602. package/dist/zcl/index.js.map +1 -0
  603. package/dist/zcl/tstype.d.ts +57 -0
  604. package/dist/zcl/tstype.d.ts.map +1 -0
  605. package/dist/zcl/tstype.js +11 -0
  606. package/dist/zcl/tstype.js.map +1 -0
  607. package/dist/zcl/utils.d.ts +7 -0
  608. package/dist/zcl/utils.d.ts.map +1 -0
  609. package/dist/zcl/utils.js +166 -0
  610. package/dist/zcl/utils.js.map +1 -0
  611. package/dist/zcl/zclFrame.d.ts +46 -0
  612. package/dist/zcl/zclFrame.d.ts.map +1 -0
  613. package/dist/zcl/zclFrame.js +348 -0
  614. package/dist/zcl/zclFrame.js.map +1 -0
  615. package/dist/zcl/zclStatusError.d.ts +6 -0
  616. package/dist/zcl/zclStatusError.d.ts.map +1 -0
  617. package/dist/zcl/zclStatusError.js +14 -0
  618. package/dist/zcl/zclStatusError.js.map +1 -0
  619. package/examples/join-and-log.js +29 -0
  620. package/package.json +76 -0
  621. package/tsconfig.json +24 -0
  622. package/typedoc-tsconfig.json +44 -0
@@ -0,0 +1,640 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Driver = void 0;
7
+ const ezsp_1 = require("./ezsp");
8
+ const types_1 = require("./types");
9
+ const events_1 = require("events");
10
+ const struct_1 = require("./types/struct");
11
+ const utils_1 = require("./utils");
12
+ const named_1 = require("./types/named");
13
+ const multicast_1 = require("./multicast");
14
+ const utils_2 = require("../../../utils");
15
+ const debug_1 = __importDefault(require("debug"));
16
+ const es6_1 = __importDefault(require("fast-deep-equal/es6"));
17
+ const debug = {
18
+ error: (0, debug_1.default)('zigbee-herdsman:adapter:ezsp:erro'),
19
+ log: (0, debug_1.default)('zigbee-herdsman:adapter:ezsp:driv'),
20
+ };
21
+ const IEEE_PREFIX_MFG_ID = [
22
+ { mfgId: 0x115F, prefix: [0x04, 0xcf, 0xfc] },
23
+ { mfgId: 0x115F, prefix: [0x54, 0xef, 0x44] },
24
+ ];
25
+ const DEFAULT_MFG_ID = 0x1049;
26
+ class Driver extends events_1.EventEmitter {
27
+ constructor() {
28
+ super();
29
+ this.direct = named_1.EmberOutgoingMessageType.OUTGOING_DIRECT;
30
+ this.eui64ToNodeId = new Map();
31
+ this.eui64ToRelays = new Map();
32
+ this.transactionID = 1;
33
+ this.queue = new utils_2.Queue(8);
34
+ this.waitress = new utils_2.Waitress(this.waitressValidator, this.waitressTimeoutFormatter);
35
+ }
36
+ async onReset() {
37
+ let attempts = 0;
38
+ const pauses = [10, 30, 60];
39
+ let pause = 0;
40
+ while (true) {
41
+ debug.log(`Reset connection. Try ${attempts}`);
42
+ try {
43
+ await this.stop();
44
+ await (0, utils_2.Wait)(1000);
45
+ await this.startup(this.port, this.serialOpt, this.nwkOpt, this.greenPowerGroup);
46
+ break;
47
+ }
48
+ catch (e) {
49
+ debug.error(`Reset error ${e.stack}`);
50
+ attempts += 1;
51
+ if (pauses.length) {
52
+ pause = pauses.shift();
53
+ }
54
+ debug.log(`Pause ${pause}sec before try ${attempts}`);
55
+ await (0, utils_2.Wait)(pause * 1000);
56
+ }
57
+ }
58
+ }
59
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any*/
60
+ async startup(port, serialOpt, nwkOpt, greenPowerGroup) {
61
+ let result = 'resumed';
62
+ this.nwkOpt = nwkOpt;
63
+ this.port = port;
64
+ this.serialOpt = serialOpt;
65
+ this.greenPowerGroup = greenPowerGroup;
66
+ this.transactionID = 1;
67
+ this.ezsp = undefined;
68
+ this.ezsp = new ezsp_1.Ezsp();
69
+ this.ezsp.on('reset', this.onReset.bind(this));
70
+ this.ezsp.on('close', this.onClose.bind(this));
71
+ await this.ezsp.connect(port, serialOpt);
72
+ await this.ezsp.version();
73
+ await this.ezsp.updateConfig();
74
+ await this.ezsp.updatePolicies();
75
+ //await this.ezsp.setValue(EzspValueId.VALUE_MAXIMUM_OUTGOING_TRANSFER_SIZE, 82);
76
+ //await this.ezsp.setValue(EzspValueId.VALUE_MAXIMUM_INCOMING_TRANSFER_SIZE, 82);
77
+ await this.ezsp.setValue(named_1.EzspValueId.VALUE_END_DEVICE_KEEP_ALIVE_SUPPORT_MODE, 3);
78
+ await this.ezsp.setValue(named_1.EzspValueId.VALUE_CCA_THRESHOLD, 0);
79
+ await this.ezsp.setSourceRouting();
80
+ //const count = await ezsp.getConfigurationValue(EzspConfigId.CONFIG_APS_UNICAST_MESSAGE_COUNT);
81
+ //debug.log("APS_UNICAST_MESSAGE_COUNT is set to %s", count);
82
+ await this.addEndpoint({
83
+ inputClusters: [0x0000, 0x0003, 0x0006, 0x000A, 0x0019, 0x001A, 0x0300],
84
+ outputClusters: [0x0000, 0x0003, 0x0004, 0x0005, 0x0006, 0x0008, 0x0020,
85
+ 0x0300, 0x0400, 0x0402, 0x0405, 0x0406, 0x0500, 0x0B01, 0x0B03,
86
+ 0x0B04, 0x0702, 0x1000, 0xFC01, 0xFC02]
87
+ });
88
+ await this.addEndpoint({
89
+ endpoint: 242, profileId: 0xA1E0, deviceId: 0x61,
90
+ outputClusters: [0x0021]
91
+ });
92
+ // getting MFG_STRING token
93
+ //const mfgName = await ezsp.execCommand('getMfgToken', EzspMfgTokenId.MFG_STRING);
94
+ // getting MFG_BOARD_NAME token
95
+ //const boardName = await ezsp.execCommand('getMfgToken', EzspMfgTokenId.MFG_BOARD_NAME);
96
+ /* eslint-disable prefer-const */
97
+ let verInfo = await this.ezsp.getValue(named_1.EzspValueId.VALUE_VERSION_INFO);
98
+ let build, major, minor, patch, special;
99
+ [build, verInfo] = types_1.uint16_t.deserialize(types_1.uint16_t, verInfo);
100
+ [major, verInfo] = types_1.uint8_t.deserialize(types_1.uint8_t, verInfo);
101
+ [minor, verInfo] = types_1.uint8_t.deserialize(types_1.uint8_t, verInfo);
102
+ [patch, verInfo] = types_1.uint8_t.deserialize(types_1.uint8_t, verInfo);
103
+ [special, verInfo] = types_1.uint8_t.deserialize(types_1.uint8_t, verInfo);
104
+ /* eslint-enable prefer-const */
105
+ const vers = `${major}.${minor}.${patch}.${special} build ${build}`;
106
+ debug.log(`EmberZNet version: ${vers}`);
107
+ this.version = {
108
+ product: this.ezsp.ezspV,
109
+ majorrel: `${major}`,
110
+ minorrel: `${minor}`,
111
+ maintrel: `${patch} `,
112
+ revision: vers
113
+ };
114
+ if (await this.needsToBeInitialised(nwkOpt)) {
115
+ const res = await this.ezsp.execCommand('networkState');
116
+ debug.log(`Network state ${res.status}`);
117
+ if (res.status == named_1.EmberNetworkStatus.JOINED_NETWORK) {
118
+ debug.log(`Leaving current network and forming new network`);
119
+ const st = await this.ezsp.leaveNetwork();
120
+ console.assert(st == types_1.EmberStatus.NETWORK_DOWN, `leaveNetwork returned unexpected status: ${st}`);
121
+ }
122
+ await this.form_network();
123
+ result = 'reset';
124
+ }
125
+ const state = (await this.ezsp.execCommand('networkState')).status;
126
+ debug.log(`Network state ${state}`);
127
+ const netParams = await this.ezsp.execCommand('getNetworkParameters');
128
+ console.assert(netParams.status == types_1.EmberStatus.SUCCESS, `Command (getNetworkParameters) returned unexpected state: ${netParams.status}`);
129
+ this.networkParams = netParams.parameters;
130
+ debug.log("Node type: %s, Network parameters: %s", netParams.nodeType, this.networkParams);
131
+ const nwk = (await this.ezsp.execCommand('getNodeId')).nodeId;
132
+ const ieee = (await this.ezsp.execCommand('getEui64')).eui64;
133
+ this.ieee = new named_1.EmberEUI64(ieee);
134
+ debug.log('Network ready');
135
+ this.ezsp.on('frame', this.handleFrame.bind(this));
136
+ this.handleNodeJoined(nwk, this.ieee);
137
+ debug.log(`EZSP nwk=${nwk}, IEEE=0x${this.ieee}`);
138
+ const linkResult = await this.ezsp.execCommand('getKey', { keyType: named_1.EmberKeyType.TRUST_CENTER_LINK_KEY });
139
+ debug.log(`TRUST_CENTER_LINK_KEY: ${JSON.stringify(linkResult)}`);
140
+ const netResult = await this.ezsp.execCommand('getKey', { keyType: named_1.EmberKeyType.CURRENT_NETWORK_KEY });
141
+ debug.log(`CURRENT_NETWORK_KEY: ${JSON.stringify(netResult)}`);
142
+ await (0, utils_2.Wait)(1000);
143
+ await this.ezsp.execCommand('setManufacturerCode', { code: DEFAULT_MFG_ID });
144
+ this.multicast = new multicast_1.Multicast(this);
145
+ await this.multicast.startup([]);
146
+ await this.multicast.subscribe(242, greenPowerGroup);
147
+ // await this.multicast.subscribe(1, 901);
148
+ return result;
149
+ }
150
+ async needsToBeInitialised(options) {
151
+ let valid = true;
152
+ valid = valid && (await this.ezsp.networkInit());
153
+ const netParams = await this.ezsp.execCommand('getNetworkParameters');
154
+ const networkParams = netParams.parameters;
155
+ debug.log("Current Node type: %s, Network parameters: %s", netParams.nodeType, networkParams);
156
+ valid = valid && (netParams.status == types_1.EmberStatus.SUCCESS);
157
+ valid = valid && (netParams.nodeType == types_1.EmberNodeType.COORDINATOR);
158
+ valid = valid && (options.panID == networkParams.panId);
159
+ valid = valid && (options.channelList.includes(networkParams.radioChannel));
160
+ valid = valid && ((0, es6_1.default)(options.extendedPanID, networkParams.extendedPanId));
161
+ return !valid;
162
+ }
163
+ async form_network() {
164
+ let status;
165
+ status = (await this.ezsp.execCommand('clearKeyTable')).status;
166
+ console.assert(status == types_1.EmberStatus.SUCCESS, `Command clearKeyTable returned unexpected state: ${status}`);
167
+ await this.ezsp.execCommand('clearTransientLinkKeys');
168
+ const panID = this.nwkOpt.panID;
169
+ const extendedPanID = this.nwkOpt.extendedPanID;
170
+ const initial_security_state = (0, utils_1.ember_security)(this.nwkOpt);
171
+ status = await this.ezsp.setInitialSecurityState(initial_security_state);
172
+ const parameters = new struct_1.EmberNetworkParameters();
173
+ parameters.panId = panID;
174
+ parameters.extendedPanId = extendedPanID;
175
+ parameters.radioTxPower = 5;
176
+ parameters.radioChannel = this.nwkOpt.channelList[0];
177
+ parameters.joinMethod = named_1.EmberJoinMethod.USE_MAC_ASSOCIATION;
178
+ parameters.nwkManagerId = 0;
179
+ parameters.nwkUpdateId = 0;
180
+ parameters.channels = 0x07FFF800; // all channels
181
+ await this.ezsp.formNetwork(parameters);
182
+ await this.ezsp.setValue(named_1.EzspValueId.VALUE_STACK_TOKEN_WRITING, 1);
183
+ }
184
+ handleFrame(frameName, frame) {
185
+ switch (true) {
186
+ case (frameName === 'incomingMessageHandler'): {
187
+ const eui64 = this.eui64ToNodeId.get(frame.sender);
188
+ const handled = this.waitress.resolve({ address: frame.sender, payload: frame.message,
189
+ frame: frame.apsFrame });
190
+ if (!handled) {
191
+ this.emit('incomingMessage', {
192
+ messageType: frame.type,
193
+ apsFrame: frame.apsFrame,
194
+ lqi: frame.lastHopLqi,
195
+ rssi: frame.lastHopRssi,
196
+ sender: frame.sender,
197
+ bindingIndex: frame.bindingIndex,
198
+ addressIndex: frame.addressIndex,
199
+ message: frame.message,
200
+ senderEui64: eui64
201
+ });
202
+ }
203
+ break;
204
+ }
205
+ case (frameName === 'trustCenterJoinHandler'): {
206
+ if (frame.status === named_1.EmberDeviceUpdate.DEVICE_LEFT) {
207
+ this.handleNodeLeft(frame.newNodeId, frame.newNodeEui64);
208
+ }
209
+ else {
210
+ if (frame.status === named_1.EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_JOIN) {
211
+ this.cleanupTClinkKey(frame.newNodeEui64);
212
+ }
213
+ if (frame.policyDecision !== types_1.EmberJoinDecision.DENY_JOIN) {
214
+ this.handleNodeJoined(frame.newNodeId, frame.newNodeEui64);
215
+ }
216
+ }
217
+ break;
218
+ }
219
+ case (frameName === 'incomingRouteRecordHandler'): {
220
+ this.handleRouteRecord(frame.source, frame.longId, frame.lastHopLqi, frame.lastHopRssi, frame.relay);
221
+ break;
222
+ }
223
+ case (frameName === 'incomingRouteErrorHandler'): {
224
+ this.handleRouteError(frame.status, frame.target);
225
+ break;
226
+ }
227
+ case (frameName === 'messageSentHandler'): {
228
+ // todo
229
+ const status = frame.status;
230
+ if (status != 0) {
231
+ // send failure
232
+ }
233
+ else {
234
+ // send success
235
+ // If there was a message to the group and this group is not known,
236
+ // then we will register the coordinator in this group
237
+ // Applicable for IKEA remotes
238
+ const msgType = frame.type;
239
+ if (msgType == named_1.EmberOutgoingMessageType.OUTGOING_MULTICAST) {
240
+ const apsFrame = frame.apsFrame;
241
+ if (apsFrame.destinationEndpoint == 255) {
242
+ this.multicast.subscribe(apsFrame.groupId, 1);
243
+ }
244
+ }
245
+ }
246
+ break;
247
+ }
248
+ case (frameName === 'macFilterMatchMessageHandler'): {
249
+ const [rawFrame, data] = struct_1.EmberIeeeRawFrame.deserialize(struct_1.EmberIeeeRawFrame, frame.message);
250
+ debug.log(`macFilterMatchMessageHandler frame message: ${rawFrame}`);
251
+ this.emit('incomingMessage', {
252
+ messageType: null,
253
+ apsFrame: rawFrame,
254
+ lqi: frame.lastHopLqi,
255
+ rssi: frame.lastHopRssi,
256
+ sender: null,
257
+ bindingIndex: null,
258
+ addressIndex: null,
259
+ message: data,
260
+ senderEui64: new named_1.EmberEUI64(rawFrame.sourceAddress)
261
+ });
262
+ break;
263
+ }
264
+ case (frameName === 'stackStatusHandler'): {
265
+ debug.log(`stackStatusHandler: ${types_1.EmberStatus.valueToName(types_1.EmberStatus, frame.status)}`);
266
+ break;
267
+ }
268
+ // case (frameName === 'childJoinHandler'): {
269
+ // if (!frame.joining) {
270
+ // this.handleNodeLeft(frame.childId, frame.childEui64);
271
+ // } else {
272
+ // this.handleNodeJoined(frame.childId, frame.childEui64);
273
+ // }
274
+ // break;
275
+ // }
276
+ case (frameName == 'gpepIncomingMessageHandler'): {
277
+ this.handleGPMessage(frame);
278
+ break;
279
+ }
280
+ default:
281
+ // <=== Application frame 35 (childJoinHandler) received: 00013e9c2ebd08feff9ffd9004 +1ms
282
+ // <=== Application frame 35 (childJoinHandler) parsed: 0,1,39998,144,253,159,255,254,8,189,46,4 +1ms
283
+ // Unhandled frame childJoinHandler +2s
284
+ // <=== Application frame 98 (incomingSenderEui64Handler) received: 2ebd08feff9ffd90 +2ms
285
+ // <=== Application frame 98 (incomingSenderEui64Handler) parsed: 144,253,159,255,254,8,189,46 +1ms
286
+ // Unhandled frame incomingSenderEui64Handler
287
+ // <=== Application frame 155 (zigbeeKeyEstablishmentHandler) received: 2ebd08feff9ffd9006 +2ms
288
+ // <=== Application frame 155 (zigbeeKeyEstablishmentHandler) parsed: 144,253,159,255,254,8,189,46,6 +2ms
289
+ // Unhandled frame zigbeeKeyEstablishmentHandler
290
+ debug.log(`Unhandled frame ${frameName}`);
291
+ }
292
+ }
293
+ async cleanupTClinkKey(ieee) {
294
+ // Remove tc link_key for the given device.
295
+ const index = (await this.ezsp.execCommand('findKeyTableEntry', { address: ieee, linkKey: true })).index;
296
+ if (index != 0xFF) {
297
+ await this.ezsp.execCommand('eraseKeyTableEntry', { index: index });
298
+ }
299
+ }
300
+ handleRouteRecord(nwk, ieee, lqi, rssi, relays) {
301
+ // todo
302
+ debug.log(`handleRouteRecord: nwk=${nwk}, ieee=${ieee}, lqi=${lqi}, rssi=${rssi}, relays=${relays}`);
303
+ this.setNode(nwk, ieee);
304
+ // if (ieee && !(ieee instanceof EmberEUI64)) {
305
+ // ieee = new EmberEUI64(ieee);
306
+ // }
307
+ // this.eui64ToRelays.set(ieee.toString(), relays);
308
+ }
309
+ async handleRouteError(status, nwk) {
310
+ // todo
311
+ debug.log(`handleRouteError: nwk=${nwk}, status=${status}`);
312
+ //this.waitress.reject({address: nwk, payload: null, frame: null}, 'Route error');
313
+ // const ieee = await this.networkIdToEUI64(nwk);
314
+ // this.eui64ToRelays.set(ieee.toString(), null);
315
+ }
316
+ handleNodeLeft(nwk, ieee) {
317
+ if (ieee && !(ieee instanceof named_1.EmberEUI64)) {
318
+ ieee = new named_1.EmberEUI64(ieee);
319
+ }
320
+ this.eui64ToNodeId.delete(ieee.toString());
321
+ this.emit('deviceLeft', [nwk, ieee]);
322
+ }
323
+ async resetMfgId(mfgId) {
324
+ await this.ezsp.execCommand('setManufacturerCode', { code: mfgId });
325
+ // 60 sec for waiting
326
+ await (0, utils_2.Wait)(60000);
327
+ await this.ezsp.execCommand('setManufacturerCode', { code: DEFAULT_MFG_ID });
328
+ }
329
+ handleNodeJoined(nwk, ieee) {
330
+ if (ieee && !(ieee instanceof named_1.EmberEUI64)) {
331
+ ieee = new named_1.EmberEUI64(ieee);
332
+ }
333
+ for (const rec of IEEE_PREFIX_MFG_ID) {
334
+ if ((Buffer.from(ieee.value)).indexOf(Buffer.from(rec.prefix)) == 0) {
335
+ // set ManufacturerCode
336
+ debug.log(`handleNodeJoined: change ManufacturerCode for ieee ${ieee} to ${rec.mfgId}`);
337
+ this.resetMfgId(rec.mfgId);
338
+ break;
339
+ }
340
+ }
341
+ this.eui64ToNodeId.set(ieee.toString(), nwk);
342
+ this.emit('deviceJoined', [nwk, ieee]);
343
+ }
344
+ setNode(nwk, ieee) {
345
+ if (ieee && !(ieee instanceof named_1.EmberEUI64)) {
346
+ ieee = new named_1.EmberEUI64(ieee);
347
+ }
348
+ this.eui64ToNodeId.set(ieee.toString(), nwk);
349
+ }
350
+ async request(nwk, apsFrame,
351
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
352
+ data, timeout = 30000) {
353
+ try {
354
+ const seq = (apsFrame.sequence + 1) & 0xFF;
355
+ let eui64;
356
+ if (typeof nwk !== 'number') {
357
+ eui64 = nwk;
358
+ const strEui64 = eui64.toString();
359
+ let nodeId = this.eui64ToNodeId.get(strEui64);
360
+ if (nodeId === undefined) {
361
+ nodeId = (await this.ezsp.execCommand('lookupNodeIdByEui64', { eui64: eui64 })).nodeId;
362
+ if (nodeId && nodeId !== 0xFFFF) {
363
+ this.eui64ToNodeId.set(strEui64, nodeId);
364
+ }
365
+ else {
366
+ throw new Error('Unknown EUI64:' + strEui64);
367
+ }
368
+ }
369
+ nwk = nodeId;
370
+ }
371
+ else {
372
+ eui64 = await this.networkIdToEUI64(nwk);
373
+ }
374
+ if (this.ezsp.ezspV < 8) {
375
+ // const route = this.eui64ToRelays.get(eui64.toString());
376
+ // if (route) {
377
+ // const = await this.ezsp.execCommand('setSourceRoute', {eui64});
378
+ // // }
379
+ }
380
+ await this.ezsp.execCommand('setExtendedTimeout', { remoteEui64: eui64, extendedTimeout: true });
381
+ const result = await this.ezsp.sendUnicast(this.direct, nwk, apsFrame, seq, data);
382
+ return result.status == types_1.EmberStatus.SUCCESS;
383
+ }
384
+ catch (e) {
385
+ debug.error(`Request error ${e}: ${e.stack}`);
386
+ return false;
387
+ }
388
+ }
389
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
390
+ async mrequest(apsFrame, data, timeout = 30000) {
391
+ try {
392
+ const seq = (apsFrame.sequence + 1) & 0xFF;
393
+ await this.ezsp.sendMulticast(apsFrame, seq, data);
394
+ return true;
395
+ }
396
+ catch (e) {
397
+ return false;
398
+ }
399
+ }
400
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
401
+ async rawrequest(rawFrame, data, timeout = 10000) {
402
+ try {
403
+ const msgData = Buffer.concat([struct_1.EmberRawFrame.serialize(struct_1.EmberRawFrame, rawFrame), data]);
404
+ await this.ezsp.execCommand('sendRawMessage', { message: msgData });
405
+ return true;
406
+ }
407
+ catch (e) {
408
+ debug.error(`Request error ${e}: ${e.stack}`);
409
+ return false;
410
+ }
411
+ }
412
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
413
+ async ieeerawrequest(rawFrame, data, timeout = 10000) {
414
+ try {
415
+ const msgData = Buffer.concat([struct_1.EmberIeeeRawFrame.serialize(struct_1.EmberIeeeRawFrame, rawFrame), data]);
416
+ await this.ezsp.execCommand('sendRawMessage', { message: msgData });
417
+ return true;
418
+ }
419
+ catch (e) {
420
+ debug.error(`Request error ${e}: ${e.stack}`);
421
+ return false;
422
+ }
423
+ }
424
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
425
+ async brequest(destination, apsFrame, data) {
426
+ try {
427
+ const seq = (apsFrame.sequence + 1) & 0xFF;
428
+ await this.ezsp.sendBroadcast(destination, apsFrame, seq, data);
429
+ return true;
430
+ }
431
+ catch (e) {
432
+ return false;
433
+ }
434
+ }
435
+ nextTransactionID() {
436
+ this.transactionID = (this.transactionID + 1) & 0xFF;
437
+ return this.transactionID;
438
+ }
439
+ makeApsFrame(clusterId, disableResponse) {
440
+ const frame = new struct_1.EmberApsFrame();
441
+ frame.clusterId = clusterId;
442
+ frame.profileId = 0;
443
+ frame.sequence = this.nextTransactionID();
444
+ frame.sourceEndpoint = 0;
445
+ frame.destinationEndpoint = 0;
446
+ frame.groupId = 0;
447
+ frame.options = (types_1.EmberApsOption.APS_OPTION_ENABLE_ROUTE_DISCOVERY ||
448
+ types_1.EmberApsOption.APS_OPTION_ENABLE_ADDRESS_DISCOVERY);
449
+ if (!disableResponse) {
450
+ frame.options || (frame.options = types_1.EmberApsOption.APS_OPTION_RETRY);
451
+ }
452
+ return frame;
453
+ }
454
+ makeEmberRawFrame() {
455
+ const frame = new struct_1.EmberRawFrame();
456
+ frame.sequence = this.nextTransactionID();
457
+ return frame;
458
+ }
459
+ makeEmberIeeeRawFrame() {
460
+ const frame = new struct_1.EmberIeeeRawFrame();
461
+ frame.sequence = this.nextTransactionID();
462
+ return frame;
463
+ }
464
+ async zdoRequest(networkAddress, requestCmd, responseCmd, params) {
465
+ const requestName = types_1.EmberZDOCmd.valueName(types_1.EmberZDOCmd, requestCmd);
466
+ const responseName = types_1.EmberZDOCmd.valueName(types_1.EmberZDOCmd, responseCmd);
467
+ debug.log(`ZDO ${requestName} params: ${JSON.stringify(params)}`);
468
+ const frame = this.makeApsFrame(requestCmd, false);
469
+ const payload = this.makeZDOframe(requestCmd, { transId: frame.sequence, ...params });
470
+ const waiter = this.waitFor(networkAddress, responseCmd, frame.sequence).start();
471
+ const res = await this.request(networkAddress, frame, payload);
472
+ if (!res) {
473
+ debug.error(`zdoRequest error`);
474
+ this.waitress.remove(waiter.ID);
475
+ throw Error('ZdoRequest error');
476
+ }
477
+ const message = await waiter.promise;
478
+ debug.log(`${responseName} frame: ${JSON.stringify(message.payload)}`);
479
+ const result = this.parse_frame_payload(responseCmd, message.payload);
480
+ debug.log(`${responseName} parsed: ${JSON.stringify(result)}`);
481
+ return result;
482
+ }
483
+ onClose() {
484
+ debug.log('Close driver');
485
+ }
486
+ async stop() {
487
+ if (this.ezsp) {
488
+ debug.log('Stop driver');
489
+ return this.ezsp.close(true);
490
+ }
491
+ }
492
+ async networkIdToEUI64(nwk) {
493
+ for (const [eUI64, value] of this.eui64ToNodeId) {
494
+ if (value === nwk)
495
+ return new named_1.EmberEUI64(eUI64);
496
+ }
497
+ const value = await this.ezsp.execCommand('lookupEui64ByNodeId', { nodeId: nwk });
498
+ if (value.status === types_1.EmberStatus.SUCCESS) {
499
+ const eUI64 = new named_1.EmberEUI64(value.eui64);
500
+ this.eui64ToNodeId.set(eUI64.toString(), nwk);
501
+ return eUI64;
502
+ }
503
+ else {
504
+ throw new Error('Unrecognized nodeId:' + nwk);
505
+ }
506
+ }
507
+ async preJoining() {
508
+ const ieee = new named_1.EmberEUI64('0xFFFFFFFFFFFFFFFF');
509
+ const linkKey = new types_1.EmberKeyData();
510
+ linkKey.contents = Buffer.from("ZigBeeAlliance09");
511
+ const result = await this.addTransientLinkKey(ieee, linkKey);
512
+ if (result.status !== types_1.EmberStatus.SUCCESS) {
513
+ throw new Error(`Add Transient Link Key for '${ieee}' failed`);
514
+ }
515
+ if (this.ezsp.ezspV >= 8) {
516
+ await this.ezsp.setPolicy(named_1.EzspPolicyId.TRUST_CENTER_POLICY, named_1.EzspDecisionBitmask.ALLOW_UNSECURED_REJOINS | named_1.EzspDecisionBitmask.ALLOW_JOINS);
517
+ //| EzspDecisionBitmask.JOINS_USE_INSTALL_CODE_KEY
518
+ }
519
+ }
520
+ async permitJoining(seconds) {
521
+ return this.ezsp.execCommand('permitJoining', { duration: seconds });
522
+ }
523
+ makeZDOframe(name, params) {
524
+ return this.ezsp.makeZDOframe(name, params);
525
+ }
526
+ parse_frame_payload(name, obj) {
527
+ return this.ezsp.parse_frame_payload(name, obj);
528
+ }
529
+ async addEndpoint({ endpoint = 1, profileId = 260, deviceId = 0xBEEF, appFlags = 0, inputClusters = [], outputClusters = [] }) {
530
+ const res = await this.ezsp.execCommand('addEndpoint', {
531
+ endpoint: endpoint,
532
+ profileId: profileId,
533
+ deviceId: deviceId,
534
+ appFlags: appFlags,
535
+ inputClusterCount: inputClusters.length,
536
+ outputClusterCount: outputClusters.length,
537
+ inputClusterList: inputClusters,
538
+ outputClusterList: outputClusters,
539
+ });
540
+ debug.log(`Ezsp adding endpoint: ${JSON.stringify(res)}`);
541
+ }
542
+ waitFor(address, clusterId, sequence, timeout = 10000) {
543
+ return this.waitress.waitFor({ address, clusterId, sequence }, timeout);
544
+ }
545
+ waitressTimeoutFormatter(matcher, timeout) {
546
+ return `${JSON.stringify(matcher)} after ${timeout}ms`;
547
+ }
548
+ waitressValidator(payload, matcher) {
549
+ return (!matcher.address || payload.address === matcher.address) &&
550
+ (!payload.frame || payload.frame.clusterId === matcher.clusterId) &&
551
+ (!payload.frame || payload.payload[0] === matcher.sequence);
552
+ }
553
+ setRadioPower(value) {
554
+ return this.ezsp.execCommand('setRadioPower', { power: value });
555
+ }
556
+ setChannel(channel) {
557
+ return this.ezsp.execCommand('setLogicalAndRadioChannel', { radioChannel: channel });
558
+ }
559
+ addTransientLinkKey(partner, transientKey) {
560
+ return this.ezsp.execCommand('addTransientLinkKey', { partner, transientKey });
561
+ }
562
+ async addInstallCode(ieeeAddress, key) {
563
+ // Key need to be converted to aes hash string
564
+ const hc = new struct_1.EmberAesMmoHashContext();
565
+ hc.result = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
566
+ hc.length = 0;
567
+ const hash = await this.ezsp.execCommand('aesMmoHash', { context: hc, finalize: true, data: key });
568
+ if (hash.status == types_1.EmberStatus.SUCCESS) {
569
+ const ieee = new named_1.EmberEUI64(ieeeAddress);
570
+ const linkKey = new types_1.EmberKeyData();
571
+ linkKey.contents = hash.returnContext.result;
572
+ const result = await this.addTransientLinkKey(ieee, linkKey);
573
+ if (result.status !== types_1.EmberStatus.SUCCESS) {
574
+ throw new Error(`Add install code for '${ieeeAddress}' failed`);
575
+ }
576
+ }
577
+ else {
578
+ throw new Error(`Add install code for '${ieeeAddress}' failed`);
579
+ }
580
+ }
581
+ async handleGPMessage(frame) {
582
+ // Commissioning
583
+ if (frame.gpdCommandId == 0xE0) {
584
+ let data = frame.payload.subarray(5);
585
+ /* eslint-disable */
586
+ let st, deviceId, options, extOptions, key, mic, counter;
587
+ [st, data] = types_1.uint8_t.deserialize(types_1.uint8_t, data);
588
+ [deviceId, data] = types_1.uint8_t.deserialize(types_1.uint8_t, data);
589
+ [options, data] = types_1.uint8_t.deserialize(types_1.uint8_t, data);
590
+ [extOptions, data] = types_1.uint8_t.deserialize(types_1.uint8_t, data);
591
+ [key, data] = types_1.EmberKeyData.deserialize(types_1.EmberKeyData, data);
592
+ [mic, data] = types_1.uint32_t.deserialize(types_1.uint32_t, data);
593
+ [counter, data] = types_1.uint32_t.deserialize(types_1.uint32_t, data);
594
+ /* eslint-enable */
595
+ const gpdMessage = {
596
+ messageType: frame.gpdCommandId,
597
+ apsFrame: {
598
+ profileId: 0xA1E0,
599
+ sourceEndpoint: 242,
600
+ clusterId: 0x0021,
601
+ sequence: frame.sequenceNumber,
602
+ },
603
+ lqi: frame.gpdLink,
604
+ message: {
605
+ commandID: frame.gpdCommandId,
606
+ commandFrame: {
607
+ options: options,
608
+ securityKey: Buffer.from(key.contents),
609
+ deviceID: deviceId,
610
+ outgoingCounter: counter,
611
+ },
612
+ srcID: frame.srcId,
613
+ },
614
+ sender: frame.addr,
615
+ };
616
+ this.emit('incomingMessage', gpdMessage);
617
+ }
618
+ else {
619
+ const gpdMessage = {
620
+ messageType: frame.gpdCommandId,
621
+ apsFrame: {
622
+ profileId: 0xA1E0,
623
+ sourceEndpoint: 242,
624
+ clusterId: 0x0021,
625
+ sequence: frame.sequenceNumber,
626
+ },
627
+ lqi: frame.gpdLink,
628
+ message: {
629
+ commandID: frame.gpdCommandId,
630
+ frameCounter: frame.sequenceNumber,
631
+ srcID: frame.srcId,
632
+ },
633
+ sender: frame.addr,
634
+ };
635
+ this.emit('incomingMessage', gpdMessage);
636
+ }
637
+ }
638
+ }
639
+ exports.Driver = Driver;
640
+ //# sourceMappingURL=driver.js.map