@willieee802/zigbee-herdsman 0.19.2 → 0.34.3

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 (530) hide show
  1. package/.babelrc.js +0 -4
  2. package/.release-please-manifest.json +1 -2
  3. package/CHANGELOG.md +376 -0
  4. package/README.md +1 -1
  5. package/dist/adapter/adapter.d.ts +61 -61
  6. package/dist/adapter/adapter.d.ts.map +1 -1
  7. package/dist/adapter/adapter.js +158 -146
  8. package/dist/adapter/adapter.js.map +1 -1
  9. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +68 -68
  10. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  11. package/dist/adapter/deconz/adapter/deconzAdapter.js +1081 -1060
  12. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  13. package/dist/adapter/deconz/adapter/index.d.ts +2 -2
  14. package/dist/adapter/deconz/adapter/index.js +10 -10
  15. package/dist/adapter/deconz/driver/constants.d.ts +104 -104
  16. package/dist/adapter/deconz/driver/constants.js +55 -55
  17. package/dist/adapter/deconz/driver/driver.d.ts +81 -81
  18. package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
  19. package/dist/adapter/deconz/driver/driver.js +750 -732
  20. package/dist/adapter/deconz/driver/driver.js.map +1 -1
  21. package/dist/adapter/deconz/driver/frame.d.ts +6 -6
  22. package/dist/adapter/deconz/driver/frame.js +13 -13
  23. package/dist/adapter/deconz/driver/frameParser.d.ts +2 -2
  24. package/dist/adapter/deconz/driver/frameParser.js +443 -443
  25. package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
  26. package/dist/adapter/deconz/driver/parser.d.ts +12 -12
  27. package/dist/adapter/deconz/driver/parser.js +63 -61
  28. package/dist/adapter/deconz/driver/parser.js.map +1 -1
  29. package/dist/adapter/deconz/driver/writer.d.ts +8 -8
  30. package/dist/adapter/deconz/driver/writer.js +44 -44
  31. package/dist/adapter/ember/adapter/emberAdapter.d.ts +817 -0
  32. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -0
  33. package/dist/adapter/ember/adapter/emberAdapter.js +2981 -0
  34. package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -0
  35. package/dist/adapter/ember/adapter/endpoints.d.ts +25 -0
  36. package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -0
  37. package/dist/adapter/ember/adapter/endpoints.js +66 -0
  38. package/dist/adapter/ember/adapter/endpoints.js.map +1 -0
  39. package/dist/adapter/ember/adapter/index.d.ts +3 -0
  40. package/dist/adapter/ember/adapter/index.d.ts.map +1 -0
  41. package/dist/adapter/ember/adapter/index.js +6 -0
  42. package/dist/adapter/ember/adapter/index.js.map +1 -0
  43. package/dist/adapter/ember/adapter/oneWaitress.d.ts +97 -0
  44. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -0
  45. package/dist/adapter/ember/adapter/oneWaitress.js +226 -0
  46. package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -0
  47. package/dist/adapter/ember/adapter/requestQueue.d.ts +59 -0
  48. package/dist/adapter/ember/adapter/requestQueue.d.ts.map +1 -0
  49. package/dist/adapter/ember/adapter/requestQueue.js +144 -0
  50. package/dist/adapter/ember/adapter/requestQueue.js.map +1 -0
  51. package/dist/adapter/ember/adapter/tokensManager.d.ts +69 -0
  52. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -0
  53. package/dist/adapter/ember/adapter/tokensManager.js +685 -0
  54. package/dist/adapter/ember/adapter/tokensManager.js.map +1 -0
  55. package/dist/adapter/ember/consts.d.ts +198 -0
  56. package/dist/adapter/ember/consts.d.ts.map +1 -0
  57. package/dist/adapter/ember/consts.js +253 -0
  58. package/dist/adapter/ember/consts.js.map +1 -0
  59. package/dist/adapter/ember/enums.d.ts +2184 -0
  60. package/dist/adapter/ember/enums.d.ts.map +1 -0
  61. package/dist/adapter/ember/enums.js +2391 -0
  62. package/dist/adapter/ember/enums.js.map +1 -0
  63. package/dist/adapter/ember/ezsp/buffalo.d.ts +156 -0
  64. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -0
  65. package/dist/adapter/ember/ezsp/buffalo.js +1033 -0
  66. package/dist/adapter/ember/ezsp/buffalo.js.map +1 -0
  67. package/dist/adapter/ember/ezsp/consts.d.ts +116 -0
  68. package/dist/adapter/ember/ezsp/consts.d.ts.map +1 -0
  69. package/dist/adapter/ember/ezsp/consts.js +128 -0
  70. package/dist/adapter/ember/ezsp/consts.js.map +1 -0
  71. package/dist/adapter/ember/ezsp/enums.d.ts +879 -0
  72. package/dist/adapter/ember/ezsp/enums.d.ts.map +1 -0
  73. package/dist/adapter/ember/ezsp/enums.js +948 -0
  74. package/dist/adapter/ember/ezsp/enums.js.map +1 -0
  75. package/dist/adapter/ember/ezsp/ezsp.d.ts +2664 -0
  76. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -0
  77. package/dist/adapter/ember/ezsp/ezsp.js +6438 -0
  78. package/dist/adapter/ember/ezsp/ezsp.js.map +1 -0
  79. package/dist/adapter/ember/types.d.ts +733 -0
  80. package/dist/adapter/ember/types.d.ts.map +1 -0
  81. package/dist/adapter/ember/types.js +3 -0
  82. package/dist/adapter/ember/types.js.map +1 -0
  83. package/dist/adapter/ember/uart/ash.d.ts +451 -0
  84. package/dist/adapter/ember/uart/ash.d.ts.map +1 -0
  85. package/dist/adapter/ember/uart/ash.js +1584 -0
  86. package/dist/adapter/ember/uart/ash.js.map +1 -0
  87. package/dist/adapter/ember/uart/consts.d.ts +91 -0
  88. package/dist/adapter/ember/uart/consts.d.ts.map +1 -0
  89. package/dist/adapter/ember/uart/consts.js +100 -0
  90. package/dist/adapter/ember/uart/consts.js.map +1 -0
  91. package/dist/adapter/ember/uart/enums.d.ts +191 -0
  92. package/dist/adapter/ember/uart/enums.d.ts.map +1 -0
  93. package/dist/adapter/ember/uart/enums.js +197 -0
  94. package/dist/adapter/ember/uart/enums.js.map +1 -0
  95. package/dist/adapter/ember/uart/parser.d.ts +10 -0
  96. package/dist/adapter/ember/uart/parser.d.ts.map +1 -0
  97. package/dist/adapter/ember/uart/parser.js +41 -0
  98. package/dist/adapter/ember/uart/parser.js.map +1 -0
  99. package/dist/adapter/ember/uart/queues.d.ts +85 -0
  100. package/dist/adapter/ember/uart/queues.d.ts.map +1 -0
  101. package/dist/adapter/ember/uart/queues.js +212 -0
  102. package/dist/adapter/ember/uart/queues.js.map +1 -0
  103. package/dist/adapter/ember/uart/writer.d.ts +15 -0
  104. package/dist/adapter/ember/uart/writer.d.ts.map +1 -0
  105. package/dist/adapter/ember/uart/writer.js +48 -0
  106. package/dist/adapter/ember/uart/writer.js.map +1 -0
  107. package/dist/adapter/ember/utils/initters.d.ts +20 -0
  108. package/dist/adapter/ember/utils/initters.d.ts.map +1 -0
  109. package/dist/adapter/ember/utils/initters.js +58 -0
  110. package/dist/adapter/ember/utils/initters.js.map +1 -0
  111. package/dist/adapter/ember/utils/math.d.ts +51 -0
  112. package/dist/adapter/ember/utils/math.d.ts.map +1 -0
  113. package/dist/adapter/ember/utils/math.js +102 -0
  114. package/dist/adapter/ember/utils/math.js.map +1 -0
  115. package/dist/adapter/ember/zdo.d.ts +921 -0
  116. package/dist/adapter/ember/zdo.d.ts.map +1 -0
  117. package/dist/adapter/ember/zdo.js +723 -0
  118. package/dist/adapter/ember/zdo.js.map +1 -0
  119. package/dist/adapter/events.d.ts +47 -47
  120. package/dist/adapter/events.js +13 -14
  121. package/dist/adapter/events.js.map +1 -1
  122. package/dist/adapter/ezsp/adapter/backup.d.ts +9 -9
  123. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
  124. package/dist/adapter/ezsp/adapter/backup.js +72 -53
  125. package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
  126. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +61 -59
  127. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  128. package/dist/adapter/ezsp/adapter/ezspAdapter.js +629 -603
  129. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  130. package/dist/adapter/ezsp/adapter/index.d.ts +2 -2
  131. package/dist/adapter/ezsp/adapter/index.js +10 -10
  132. package/dist/adapter/ezsp/driver/commands.d.ts +36 -36
  133. package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
  134. package/dist/adapter/ezsp/driver/commands.js +2388 -2359
  135. package/dist/adapter/ezsp/driver/commands.js.map +1 -1
  136. package/dist/adapter/ezsp/driver/consts.d.ts +10 -10
  137. package/dist/adapter/ezsp/driver/consts.js +13 -13
  138. package/dist/adapter/ezsp/driver/driver.d.ts +106 -103
  139. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
  140. package/dist/adapter/ezsp/driver/driver.js +731 -639
  141. package/dist/adapter/ezsp/driver/driver.js.map +1 -1
  142. package/dist/adapter/ezsp/driver/ezsp.d.ts +105 -96
  143. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
  144. package/dist/adapter/ezsp/driver/ezsp.js +651 -586
  145. package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
  146. package/dist/adapter/ezsp/driver/frame.d.ts +40 -0
  147. package/dist/adapter/ezsp/driver/frame.d.ts.map +1 -0
  148. package/dist/adapter/ezsp/driver/frame.js +101 -0
  149. package/dist/adapter/ezsp/driver/frame.js.map +1 -0
  150. package/dist/adapter/ezsp/driver/index.d.ts +3 -3
  151. package/dist/adapter/ezsp/driver/index.js +8 -8
  152. package/dist/adapter/ezsp/driver/multicast.d.ts +12 -12
  153. package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
  154. package/dist/adapter/ezsp/driver/multicast.js +77 -74
  155. package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
  156. package/dist/adapter/ezsp/driver/parser.d.ts +11 -12
  157. package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -1
  158. package/dist/adapter/ezsp/driver/parser.js +104 -111
  159. package/dist/adapter/ezsp/driver/parser.js.map +1 -1
  160. package/dist/adapter/ezsp/driver/types/basic.d.ts +62 -62
  161. package/dist/adapter/ezsp/driver/types/basic.js +208 -208
  162. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
  163. package/dist/adapter/ezsp/driver/types/index.d.ts +9 -9
  164. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
  165. package/dist/adapter/ezsp/driver/types/index.js +138 -133
  166. package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
  167. package/dist/adapter/ezsp/driver/types/named.d.ts +1287 -697
  168. package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -1
  169. package/dist/adapter/ezsp/driver/types/named.js +2329 -1726
  170. package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
  171. package/dist/adapter/ezsp/driver/types/struct.d.ts +270 -251
  172. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
  173. package/dist/adapter/ezsp/driver/types/struct.js +803 -708
  174. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
  175. package/dist/adapter/ezsp/driver/uart.d.ts +48 -44
  176. package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
  177. package/dist/adapter/ezsp/driver/uart.js +382 -368
  178. package/dist/adapter/ezsp/driver/uart.js.map +1 -1
  179. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +2 -2
  180. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +55 -55
  181. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
  182. package/dist/adapter/ezsp/driver/utils/index.d.ts +18 -18
  183. package/dist/adapter/ezsp/driver/utils/index.js +72 -67
  184. package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
  185. package/dist/adapter/ezsp/driver/writer.d.ts +13 -13
  186. package/dist/adapter/ezsp/driver/writer.d.ts.map +1 -1
  187. package/dist/adapter/ezsp/driver/writer.js +85 -88
  188. package/dist/adapter/ezsp/driver/writer.js.map +1 -1
  189. package/dist/adapter/index.d.ts +4 -4
  190. package/dist/adapter/index.js +35 -35
  191. package/dist/adapter/serialPort.d.ts +10 -8
  192. package/dist/adapter/serialPort.d.ts.map +1 -1
  193. package/dist/adapter/serialPort.js +53 -22
  194. package/dist/adapter/serialPort.js.map +1 -1
  195. package/dist/adapter/serialPortUtils.d.ts +12 -12
  196. package/dist/adapter/serialPortUtils.js +18 -18
  197. package/dist/adapter/serialPortUtils.js.map +1 -1
  198. package/dist/adapter/socketPortUtils.d.ts +10 -10
  199. package/dist/adapter/socketPortUtils.js +16 -16
  200. package/dist/adapter/tstype.d.ts +85 -85
  201. package/dist/adapter/tstype.d.ts.map +1 -1
  202. package/dist/adapter/tstype.js +2 -2
  203. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +62 -62
  204. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
  205. package/dist/adapter/z-stack/adapter/adapter-backup.js +462 -460
  206. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  207. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +150 -150
  208. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +258 -258
  209. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
  210. package/dist/adapter/z-stack/adapter/endpoints.d.ts +11 -11
  211. package/dist/adapter/z-stack/adapter/endpoints.js +73 -73
  212. package/dist/adapter/z-stack/adapter/index.d.ts +2 -2
  213. package/dist/adapter/z-stack/adapter/index.js +8 -8
  214. package/dist/adapter/z-stack/adapter/manager.d.ts +86 -86
  215. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  216. package/dist/adapter/z-stack/adapter/manager.js +482 -476
  217. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  218. package/dist/adapter/z-stack/adapter/tstype.d.ts +6 -6
  219. package/dist/adapter/z-stack/adapter/tstype.js +9 -10
  220. package/dist/adapter/z-stack/adapter/tstype.js.map +1 -1
  221. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +81 -81
  222. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  223. package/dist/adapter/z-stack/adapter/zStackAdapter.js +891 -868
  224. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  225. package/dist/adapter/z-stack/constants/af.d.ts +23 -23
  226. package/dist/adapter/z-stack/constants/af.js +27 -27
  227. package/dist/adapter/z-stack/constants/common.d.ts +278 -278
  228. package/dist/adapter/z-stack/constants/common.d.ts.map +1 -1
  229. package/dist/adapter/z-stack/constants/common.js +292 -289
  230. package/dist/adapter/z-stack/constants/common.js.map +1 -1
  231. package/dist/adapter/z-stack/constants/dbg.d.ts +22 -22
  232. package/dist/adapter/z-stack/constants/dbg.js +24 -24
  233. package/dist/adapter/z-stack/constants/index.d.ts +10 -10
  234. package/dist/adapter/z-stack/constants/index.js +47 -47
  235. package/dist/adapter/z-stack/constants/mac.d.ts +127 -127
  236. package/dist/adapter/z-stack/constants/mac.js +129 -129
  237. package/dist/adapter/z-stack/constants/sapi.d.ts +24 -24
  238. package/dist/adapter/z-stack/constants/sapi.js +26 -26
  239. package/dist/adapter/z-stack/constants/sys.d.ts +71 -71
  240. package/dist/adapter/z-stack/constants/sys.js +73 -73
  241. package/dist/adapter/z-stack/constants/util.d.ts +81 -81
  242. package/dist/adapter/z-stack/constants/util.js +83 -83
  243. package/dist/adapter/z-stack/constants/utils.d.ts +4 -4
  244. package/dist/adapter/z-stack/constants/utils.js +14 -14
  245. package/dist/adapter/z-stack/constants/zdo.d.ts +102 -102
  246. package/dist/adapter/z-stack/constants/zdo.js +104 -104
  247. package/dist/adapter/z-stack/models/index.d.ts +1 -1
  248. package/dist/adapter/z-stack/models/index.js +17 -17
  249. package/dist/adapter/z-stack/models/startup-options.d.ts +12 -12
  250. package/dist/adapter/z-stack/models/startup-options.js +2 -2
  251. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +23 -23
  252. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +45 -45
  253. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -1
  254. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +10 -10
  255. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +22 -22
  256. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +10 -10
  257. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +21 -21
  258. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +10 -10
  259. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +23 -23
  260. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +10 -10
  261. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +24 -24
  262. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +10 -10
  263. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +23 -23
  264. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +8 -8
  265. package/dist/adapter/z-stack/structs/entries/channel-list.js +15 -15
  266. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +8 -8
  267. package/dist/adapter/z-stack/structs/entries/has-configured.js +16 -16
  268. package/dist/adapter/z-stack/structs/entries/index.d.ts +16 -16
  269. package/dist/adapter/z-stack/structs/entries/index.js +32 -32
  270. package/dist/adapter/z-stack/structs/entries/nib.d.ts +10 -10
  271. package/dist/adapter/z-stack/structs/entries/nib.js +68 -68
  272. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +10 -10
  273. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +18 -18
  274. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +8 -8
  275. package/dist/adapter/z-stack/structs/entries/nwk-key.js +15 -15
  276. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +8 -8
  277. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +15 -15
  278. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +13 -13
  279. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +23 -23
  280. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +10 -10
  281. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +22 -22
  282. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +20 -20
  283. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +36 -36
  284. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -1
  285. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +10 -10
  286. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +24 -24
  287. package/dist/adapter/z-stack/structs/index.d.ts +4 -4
  288. package/dist/adapter/z-stack/structs/index.js +20 -20
  289. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +13 -13
  290. package/dist/adapter/z-stack/structs/serializable-memory-object.js +2 -2
  291. package/dist/adapter/z-stack/structs/struct.d.ts +99 -99
  292. package/dist/adapter/z-stack/structs/struct.js +296 -295
  293. package/dist/adapter/z-stack/structs/struct.js.map +1 -1
  294. package/dist/adapter/z-stack/structs/table.d.ts +94 -94
  295. package/dist/adapter/z-stack/structs/table.js +163 -161
  296. package/dist/adapter/z-stack/structs/table.js.map +1 -1
  297. package/dist/adapter/z-stack/unpi/constants.d.ts +28 -28
  298. package/dist/adapter/z-stack/unpi/constants.js +39 -41
  299. package/dist/adapter/z-stack/unpi/constants.js.map +1 -1
  300. package/dist/adapter/z-stack/unpi/frame.d.ts +16 -16
  301. package/dist/adapter/z-stack/unpi/frame.js +54 -48
  302. package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
  303. package/dist/adapter/z-stack/unpi/index.d.ts +5 -5
  304. package/dist/adapter/z-stack/unpi/index.js +37 -37
  305. package/dist/adapter/z-stack/unpi/parser.d.ts +10 -10
  306. package/dist/adapter/z-stack/unpi/parser.js +75 -74
  307. package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
  308. package/dist/adapter/z-stack/unpi/writer.d.ts +10 -10
  309. package/dist/adapter/z-stack/unpi/writer.js +44 -44
  310. package/dist/adapter/z-stack/utils/channel-list.d.ts +20 -20
  311. package/dist/adapter/z-stack/utils/channel-list.js +40 -40
  312. package/dist/adapter/z-stack/utils/channel-list.js.map +1 -1
  313. package/dist/adapter/z-stack/utils/index.d.ts +2 -2
  314. package/dist/adapter/z-stack/utils/index.js +18 -18
  315. package/dist/adapter/z-stack/utils/network-options.d.ts +8 -8
  316. package/dist/adapter/z-stack/utils/network-options.js +22 -22
  317. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +11 -11
  318. package/dist/adapter/z-stack/znp/buffaloZnp.js +113 -113
  319. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -1
  320. package/dist/adapter/z-stack/znp/definition.d.ts +5 -5
  321. package/dist/adapter/z-stack/znp/definition.js +3050 -3050
  322. package/dist/adapter/z-stack/znp/index.d.ts +3 -3
  323. package/dist/adapter/z-stack/znp/index.js +10 -10
  324. package/dist/adapter/z-stack/znp/parameterType.d.ts +22 -22
  325. package/dist/adapter/z-stack/znp/parameterType.js +25 -25
  326. package/dist/adapter/z-stack/znp/tstype.d.ts +21 -21
  327. package/dist/adapter/z-stack/znp/tstype.js +2 -2
  328. package/dist/adapter/z-stack/znp/znp.d.ts +44 -43
  329. package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
  330. package/dist/adapter/z-stack/znp/znp.js +326 -325
  331. package/dist/adapter/z-stack/znp/znp.js.map +1 -1
  332. package/dist/adapter/z-stack/znp/zpiObject.d.ts +19 -19
  333. package/dist/adapter/z-stack/znp/zpiObject.js +102 -96
  334. package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
  335. package/dist/adapter/zigate/adapter/index.d.ts +2 -2
  336. package/dist/adapter/zigate/adapter/index.js +10 -10
  337. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +70 -69
  338. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  339. package/dist/adapter/zigate/adapter/zigateAdapter.js +689 -678
  340. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  341. package/dist/adapter/zigate/debug.d.ts +7 -7
  342. package/dist/adapter/zigate/debug.d.ts.map +1 -1
  343. package/dist/adapter/zigate/debug.js +19 -22
  344. package/dist/adapter/zigate/debug.js.map +1 -1
  345. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +18 -18
  346. package/dist/adapter/zigate/driver/buffaloZiGate.js +139 -139
  347. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
  348. package/dist/adapter/zigate/driver/commandType.d.ts +41 -41
  349. package/dist/adapter/zigate/driver/commandType.js +385 -385
  350. package/dist/adapter/zigate/driver/commandType.js.map +1 -1
  351. package/dist/adapter/zigate/driver/constants.d.ts +276 -276
  352. package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
  353. package/dist/adapter/zigate/driver/constants.js +371 -371
  354. package/dist/adapter/zigate/driver/constants.js.map +1 -1
  355. package/dist/adapter/zigate/driver/frame.d.ts +26 -26
  356. package/dist/adapter/zigate/driver/frame.js +172 -172
  357. package/dist/adapter/zigate/driver/frame.js.map +1 -1
  358. package/dist/adapter/zigate/driver/messageType.d.ts +11 -11
  359. package/dist/adapter/zigate/driver/messageType.js +278 -278
  360. package/dist/adapter/zigate/driver/messageType.js.map +1 -1
  361. package/dist/adapter/zigate/driver/parameterType.d.ts +20 -20
  362. package/dist/adapter/zigate/driver/parameterType.js +23 -23
  363. package/dist/adapter/zigate/driver/ziGateObject.d.ts +23 -23
  364. package/dist/adapter/zigate/driver/ziGateObject.js +110 -106
  365. package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
  366. package/dist/adapter/zigate/driver/zigate.d.ts +49 -49
  367. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
  368. package/dist/adapter/zigate/driver/zigate.js +296 -303
  369. package/dist/adapter/zigate/driver/zigate.js.map +1 -1
  370. package/dist/buffalo/buffalo.d.ts +50 -50
  371. package/dist/buffalo/buffalo.js +324 -322
  372. package/dist/buffalo/buffalo.js.map +1 -1
  373. package/dist/buffalo/index.d.ts +3 -3
  374. package/dist/buffalo/index.js +33 -33
  375. package/dist/buffalo/tstype.d.ts +8 -8
  376. package/dist/buffalo/tstype.js +2 -2
  377. package/dist/controller/controller.d.ts +113 -113
  378. package/dist/controller/controller.d.ts.map +1 -1
  379. package/dist/controller/controller.js +641 -619
  380. package/dist/controller/controller.js.map +1 -1
  381. package/dist/controller/database.d.ts +18 -18
  382. package/dist/controller/database.js +96 -93
  383. package/dist/controller/database.js.map +1 -1
  384. package/dist/controller/events.d.ts +58 -58
  385. package/dist/controller/events.d.ts.map +1 -1
  386. package/dist/controller/events.js +108 -101
  387. package/dist/controller/events.js.map +1 -1
  388. package/dist/controller/greenPower.d.ts +12 -12
  389. package/dist/controller/greenPower.js +221 -220
  390. package/dist/controller/greenPower.js.map +1 -1
  391. package/dist/controller/helpers/index.d.ts +2 -2
  392. package/dist/controller/helpers/index.js +28 -28
  393. package/dist/controller/helpers/request.d.ts +21 -22
  394. package/dist/controller/helpers/request.d.ts.map +1 -1
  395. package/dist/controller/helpers/request.js +77 -71
  396. package/dist/controller/helpers/request.js.map +1 -1
  397. package/dist/controller/helpers/requestQueue.d.ts +13 -0
  398. package/dist/controller/helpers/requestQueue.d.ts.map +1 -0
  399. package/dist/controller/helpers/requestQueue.js +116 -0
  400. package/dist/controller/helpers/requestQueue.js.map +1 -0
  401. package/dist/controller/helpers/zclFrameConverter.d.ts +7 -7
  402. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  403. package/dist/controller/helpers/zclFrameConverter.js +50 -31
  404. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  405. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +5 -5
  406. package/dist/controller/helpers/zclTransactionSequenceNumber.js +13 -13
  407. package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +1 -1
  408. package/dist/controller/index.d.ts +5 -5
  409. package/dist/controller/index.js +8 -8
  410. package/dist/controller/logger-stub.d.ts +6 -6
  411. package/dist/controller/logger-stub.js +2 -2
  412. package/dist/controller/model/device.d.ts +132 -133
  413. package/dist/controller/model/device.d.ts.map +1 -1
  414. package/dist/controller/model/device.js +724 -717
  415. package/dist/controller/model/device.js.map +1 -1
  416. package/dist/controller/model/endpoint.d.ts +128 -131
  417. package/dist/controller/model/endpoint.d.ts.map +1 -1
  418. package/dist/controller/model/endpoint.js +755 -816
  419. package/dist/controller/model/endpoint.js.map +1 -1
  420. package/dist/controller/model/entity.d.ts +14 -14
  421. package/dist/controller/model/entity.js +26 -26
  422. package/dist/controller/model/entity.js.map +1 -1
  423. package/dist/controller/model/group.d.ts +38 -38
  424. package/dist/controller/model/group.d.ts.map +1 -1
  425. package/dist/controller/model/group.js +225 -221
  426. package/dist/controller/model/group.js.map +1 -1
  427. package/dist/controller/model/index.d.ts +5 -5
  428. package/dist/controller/model/index.js +14 -14
  429. package/dist/controller/touchlink.d.ts +19 -19
  430. package/dist/controller/touchlink.js +159 -157
  431. package/dist/controller/touchlink.js.map +1 -1
  432. package/dist/controller/tstype.d.ts +20 -21
  433. package/dist/controller/tstype.d.ts.map +1 -1
  434. package/dist/controller/tstype.js +8 -9
  435. package/dist/controller/tstype.js.map +1 -1
  436. package/dist/index.d.ts +3 -3
  437. package/dist/index.js +33 -33
  438. package/dist/models/backup-storage-legacy.d.ts +26 -26
  439. package/dist/models/backup-storage-legacy.js +2 -2
  440. package/dist/models/backup-storage-unified.d.ts +49 -49
  441. package/dist/models/backup-storage-unified.js +2 -2
  442. package/dist/models/backup.d.ts +37 -37
  443. package/dist/models/backup.js +2 -2
  444. package/dist/models/index.d.ts +4 -4
  445. package/dist/models/index.js +20 -20
  446. package/dist/models/network-options.d.ts +12 -12
  447. package/dist/models/network-options.js +2 -2
  448. package/dist/utils/assertString.d.ts +2 -2
  449. package/dist/utils/assertString.js +8 -8
  450. package/dist/utils/assertString.js.map +1 -1
  451. package/dist/utils/backup.d.ts +20 -20
  452. package/dist/utils/backup.d.ts.map +1 -1
  453. package/dist/utils/backup.js +189 -187
  454. package/dist/utils/backup.js.map +1 -1
  455. package/dist/utils/equalsPartial.d.ts +2 -2
  456. package/dist/utils/equalsPartial.js +11 -11
  457. package/dist/utils/index.d.ts +9 -9
  458. package/dist/utils/index.js +45 -45
  459. package/dist/utils/isNumberArray.d.ts +2 -2
  460. package/dist/utils/isNumberArray.js +6 -6
  461. package/dist/utils/queue.d.ts +11 -11
  462. package/dist/utils/queue.d.ts.map +1 -1
  463. package/dist/utils/queue.js +61 -50
  464. package/dist/utils/queue.js.map +1 -1
  465. package/dist/utils/realpathSync.d.ts +2 -2
  466. package/dist/utils/realpathSync.js +12 -12
  467. package/dist/utils/wait.d.ts +2 -2
  468. package/dist/utils/wait.js +8 -8
  469. package/dist/utils/waitress.d.ts +21 -21
  470. package/dist/utils/waitress.d.ts.map +1 -1
  471. package/dist/utils/waitress.js +68 -61
  472. package/dist/utils/waitress.js.map +1 -1
  473. package/dist/zcl/buffaloZcl.d.ts +41 -41
  474. package/dist/zcl/buffaloZcl.d.ts.map +1 -1
  475. package/dist/zcl/buffaloZcl.js +594 -591
  476. package/dist/zcl/buffaloZcl.js.map +1 -1
  477. package/dist/zcl/definition/buffaloZclDataType.d.ts +17 -17
  478. package/dist/zcl/definition/buffaloZclDataType.js +20 -20
  479. package/dist/zcl/definition/cluster.d.ts +29 -29
  480. package/dist/zcl/definition/cluster.d.ts.map +1 -1
  481. package/dist/zcl/definition/cluster.js +5520 -5335
  482. package/dist/zcl/definition/cluster.js.map +1 -1
  483. package/dist/zcl/definition/dataType.d.ts +59 -59
  484. package/dist/zcl/definition/dataType.js +64 -64
  485. package/dist/zcl/definition/direction.d.ts +5 -5
  486. package/dist/zcl/definition/direction.js +8 -8
  487. package/dist/zcl/definition/endpointDeviceType.d.ts +4 -4
  488. package/dist/zcl/definition/endpointDeviceType.js +15 -15
  489. package/dist/zcl/definition/foundation.d.ts +11 -11
  490. package/dist/zcl/definition/foundation.js +167 -167
  491. package/dist/zcl/definition/frameControl.d.ts +10 -10
  492. package/dist/zcl/definition/frameControl.js +2 -2
  493. package/dist/zcl/definition/frameType.d.ts +5 -5
  494. package/dist/zcl/definition/frameType.js +8 -8
  495. package/dist/zcl/definition/index.d.ts +13 -13
  496. package/dist/zcl/definition/index.js +51 -51
  497. package/dist/zcl/definition/manufacturerCode.d.ts +1077 -1074
  498. package/dist/zcl/definition/manufacturerCode.d.ts.map +1 -1
  499. package/dist/zcl/definition/manufacturerCode.js +1082 -1079
  500. package/dist/zcl/definition/manufacturerCode.js.map +1 -1
  501. package/dist/zcl/definition/powerSource.d.ts +4 -4
  502. package/dist/zcl/definition/powerSource.js +12 -12
  503. package/dist/zcl/definition/status.d.ts +38 -38
  504. package/dist/zcl/definition/status.js +41 -41
  505. package/dist/zcl/definition/tstype.d.ts +16 -16
  506. package/dist/zcl/definition/tstype.js +2 -2
  507. package/dist/zcl/index.d.ts +16 -15
  508. package/dist/zcl/index.d.ts.map +1 -1
  509. package/dist/zcl/index.js +55 -55
  510. package/dist/zcl/index.js.map +1 -1
  511. package/dist/zcl/tstype.d.ts +56 -56
  512. package/dist/zcl/tstype.js +9 -10
  513. package/dist/zcl/tstype.js.map +1 -1
  514. package/dist/zcl/utils.d.ts +6 -6
  515. package/dist/zcl/utils.js +164 -165
  516. package/dist/zcl/utils.js.map +1 -1
  517. package/dist/zcl/zclFrame.d.ts +40 -45
  518. package/dist/zcl/zclFrame.d.ts.map +1 -1
  519. package/dist/zcl/zclFrame.js +351 -347
  520. package/dist/zcl/zclFrame.js.map +1 -1
  521. package/dist/zcl/zclHeader.d.ts +9 -0
  522. package/dist/zcl/zclHeader.d.ts.map +1 -0
  523. package/dist/zcl/zclHeader.js +3 -0
  524. package/dist/zcl/zclHeader.js.map +1 -0
  525. package/dist/zcl/zclStatusError.d.ts +5 -5
  526. package/dist/zcl/zclStatusError.js +14 -13
  527. package/dist/zcl/zclStatusError.js.map +1 -1
  528. package/package.json +11 -11
  529. package/release-please-config.json +1 -5
  530. package/tsconfig.json +4 -2
@@ -1,326 +1,327 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const unpi_1 = require("../unpi");
30
- const utils_1 = require("../../../utils");
31
- const serialPort_1 = require("../../serialPort");
32
- const serialPortUtils_1 = __importDefault(require("../../serialPortUtils"));
33
- const socketPortUtils_1 = __importDefault(require("../../socketPortUtils"));
34
- const Constants = __importStar(require("../constants"));
35
- const zpiObject_1 = __importDefault(require("./zpiObject"));
36
- const constants_1 = require("../unpi/constants");
37
- const net_1 = __importDefault(require("net"));
38
- const events_1 = __importDefault(require("events"));
39
- const es6_1 = __importDefault(require("fast-deep-equal/es6"));
40
- const debug_1 = __importDefault(require("debug"));
41
- const { COMMON: { ZnpCommandStatus }, Utils: { statusDescription } } = Constants;
42
- const timeouts = {
43
- SREQ: 6000,
44
- reset: 30000,
45
- default: 10000,
46
- };
47
- const debug = {
48
- error: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:error'),
49
- timeout: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:timeout'),
50
- log: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:log'),
51
- SREQ: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:SREQ'),
52
- AREQ: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:AREQ'),
53
- SRSP: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:SRSP'),
54
- };
55
- const autoDetectDefinitions = [
56
- { manufacturer: 'Texas Instruments', vendorId: '0451', productId: '16c8' },
57
- { manufacturer: 'Texas Instruments', vendorId: '0451', productId: '16a8' },
58
- { manufacturer: 'Texas Instruments', vendorId: '0451', productId: 'bef3' },
59
- { manufacturer: 'Electrolama', vendorId: '0403', productId: '6015' }, // ZZH
60
- ];
61
- class Znp extends events_1.default.EventEmitter {
62
- constructor(path, baudRate, rtscts) {
63
- super();
64
- this.path = path;
65
- this.baudRate = typeof baudRate === 'number' ? baudRate : 115200;
66
- this.rtscts = typeof rtscts === 'boolean' ? rtscts : false;
67
- this.portType = socketPortUtils_1.default.isTcpPath(path) ? 'socket' : 'serial';
68
- this.initialized = false;
69
- this.queue = new utils_1.Queue();
70
- this.waitress = new utils_1.Waitress(this.waitressValidator, this.waitressTimeoutFormatter);
71
- this.onUnpiParsed = this.onUnpiParsed.bind(this);
72
- this.onPortClose = this.onPortClose.bind(this);
73
- }
74
- log(type, message) {
75
- if (type === constants_1.Type.SRSP) {
76
- debug.SRSP(message);
77
- }
78
- else if (type === constants_1.Type.AREQ) {
79
- debug.AREQ(message);
80
- }
81
- else {
82
- /* istanbul ignore else */
83
- if (type === constants_1.Type.SREQ) {
84
- debug.SREQ(message);
85
- }
86
- else {
87
- throw new Error(`Unknown type '${type}'`);
88
- }
89
- }
90
- }
91
- onUnpiParsed(frame) {
92
- try {
93
- const object = zpiObject_1.default.fromUnpiFrame(frame);
94
- const message = `<-- ${constants_1.Subsystem[object.subsystem]} - ${object.command} - ${JSON.stringify(object.payload)}`;
95
- this.log(object.type, message);
96
- this.waitress.resolve(object);
97
- this.emit('received', object);
98
- }
99
- catch (error) {
100
- debug.error(`Error while parsing to ZpiObject '${error.stack}'`);
101
- }
102
- }
103
- isInitialized() {
104
- return this.initialized;
105
- }
106
- onPortClose() {
107
- debug.log('Port closed');
108
- this.initialized = false;
109
- this.emit('close');
110
- }
111
- async open() {
112
- return this.portType === 'serial' ? this.openSerialPort() : this.openSocketPort();
113
- }
114
- async openSerialPort() {
115
- const options = { path: this.path, baudRate: this.baudRate, rtscts: this.rtscts, autoOpen: false };
116
- debug.log(`Opening SerialPort with ${JSON.stringify(options)}`);
117
- this.serialPort = new serialPort_1.SerialPort(options);
118
- this.unpiWriter = new unpi_1.Writer();
119
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
120
- // @ts-ignore
121
- this.unpiWriter.pipe(this.serialPort);
122
- this.unpiParser = new unpi_1.Parser();
123
- this.serialPort.pipe(this.unpiParser);
124
- this.unpiParser.on('parsed', this.onUnpiParsed);
125
- return new Promise((resolve, reject) => {
126
- this.serialPort.open(async (error) => {
127
- if (error) {
128
- reject(new Error(`Error while opening serialport '${error}'`));
129
- this.initialized = false;
130
- if (this.serialPort.isOpen) {
131
- this.serialPort.close();
132
- }
133
- }
134
- else {
135
- debug.log('Serialport opened');
136
- this.initialized = true;
137
- await this.skipBootloader();
138
- this.serialPort.once('close', this.onPortClose);
139
- this.serialPort.once('error', (error) => {
140
- debug.error(`Serialport error: ${error}`);
141
- });
142
- resolve();
143
- }
144
- });
145
- });
146
- }
147
- async openSocketPort() {
148
- const info = socketPortUtils_1.default.parseTcpPath(this.path);
149
- debug.log(`Opening TCP socket with ${info.host}:${info.port}`);
150
- this.socketPort = new net_1.default.Socket();
151
- this.socketPort.setNoDelay(true);
152
- this.socketPort.setKeepAlive(true, 15000);
153
- this.unpiWriter = new unpi_1.Writer();
154
- this.unpiWriter.pipe(this.socketPort);
155
- this.unpiParser = new unpi_1.Parser();
156
- this.socketPort.pipe(this.unpiParser);
157
- this.unpiParser.on('parsed', this.onUnpiParsed);
158
- return new Promise((resolve, reject) => {
159
- this.socketPort.on('connect', function () {
160
- debug.log('Socket connected');
161
- });
162
- // eslint-disable-next-line
163
- const self = this;
164
- this.socketPort.on('ready', async function () {
165
- debug.log('Socket ready');
166
- await self.skipBootloader();
167
- self.initialized = true;
168
- resolve();
169
- });
170
- this.socketPort.once('close', this.onPortClose);
171
- this.socketPort.on('error', function () {
172
- debug.log('Socket error');
173
- reject(new Error(`Error while opening socket`));
174
- self.initialized = false;
175
- });
176
- this.socketPort.connect(info.port, info.host);
177
- });
178
- }
179
- async skipBootloader() {
180
- try {
181
- await this.request(constants_1.Subsystem.SYS, 'ping', { capabilities: 1 }, null, 250);
182
- }
183
- catch (error) {
184
- // Skip bootloader on CC2530/CC2531
185
- // Send magic byte: https://github.com/Koenkk/zigbee2mqtt/issues/1343 to bootloader
186
- // and give ZNP 1 second to start.
187
- try {
188
- debug.log('Writing CC2530/CC2531 skip bootloader payload');
189
- this.unpiWriter.writeBuffer(Buffer.from([0xef]));
190
- await (0, utils_1.Wait)(1000);
191
- await this.request(constants_1.Subsystem.SYS, 'ping', { capabilities: 1 }, null, 250);
192
- }
193
- catch (error) {
194
- // Skip bootloader on some CC2652 devices (e.g. zzh-p)
195
- debug.log('Skip bootloader for CC2652/CC1352');
196
- if (this.serialPort) {
197
- await this.setSerialPortOptions({ dtr: false, rts: false });
198
- await (0, utils_1.Wait)(150);
199
- await this.setSerialPortOptions({ dtr: false, rts: true });
200
- await (0, utils_1.Wait)(150);
201
- await this.setSerialPortOptions({ dtr: false, rts: false });
202
- await (0, utils_1.Wait)(150);
203
- }
204
- }
205
- }
206
- }
207
- async setSerialPortOptions(options) {
208
- return new Promise((resolve) => {
209
- this.serialPort.set(options, () => {
210
- resolve();
211
- });
212
- });
213
- }
214
- static async isValidPath(path) {
215
- // For TCP paths we cannot get device information, therefore we cannot validate it.
216
- if (socketPortUtils_1.default.isTcpPath(path)) {
217
- return false;
218
- }
219
- try {
220
- return serialPortUtils_1.default.is((0, utils_1.RealpathSync)(path), autoDetectDefinitions);
221
- }
222
- catch (error) {
223
- debug.error(`Failed to determine if path is valid: '${error}'`);
224
- return false;
225
- }
226
- }
227
- static async autoDetectPath() {
228
- const paths = await serialPortUtils_1.default.find(autoDetectDefinitions);
229
- // CC1352P_2 and CC26X2R1 lists as 2 USB devices with same manufacturer, productId and vendorId
230
- // one is the actual chip interface, other is the XDS110.
231
- // The chip is always exposed on the first one after alphabetical sorting.
232
- paths.sort((a, b) => (a < b) ? -1 : 1);
233
- return paths.length > 0 ? paths[0] : null;
234
- }
235
- close() {
236
- return new Promise((resolve, reject) => {
237
- if (this.initialized) {
238
- if (this.portType === 'serial') {
239
- this.serialPort.flush(() => {
240
- this.serialPort.close((error) => {
241
- this.initialized = false;
242
- error == null ?
243
- resolve() :
244
- reject(new Error(`Error while closing serialport '${error}'`));
245
- this.emit('close');
246
- });
247
- });
248
- }
249
- else {
250
- this.socketPort.destroy();
251
- resolve();
252
- }
253
- }
254
- else {
255
- resolve();
256
- this.emit('close');
257
- }
258
- });
259
- }
260
- request(subsystem, command, payload, waiterID = null, timeout = null, expectedStatuses = [ZnpCommandStatus.SUCCESS]) {
261
- if (!this.initialized) {
262
- throw new Error('Cannot request when znp has not been initialized yet');
263
- }
264
- const object = zpiObject_1.default.createRequest(subsystem, command, payload);
265
- const message = `--> ${constants_1.Subsystem[object.subsystem]} - ${object.command} - ${JSON.stringify(payload)}`;
266
- return this.queue.execute(async () => {
267
- this.log(object.type, message);
268
- const frame = object.toUnpiFrame();
269
- if (object.type === constants_1.Type.SREQ) {
270
- const t = object.command === 'bdbStartCommissioning' || object.command === 'startupFromApp' ?
271
- 40000 : timeouts.SREQ;
272
- const waiter = this.waitress.waitFor({ type: constants_1.Type.SRSP, subsystem: object.subsystem, command: object.command }, timeout || t);
273
- this.unpiWriter.writeFrame(frame);
274
- const result = await waiter.start().promise;
275
- if (result && result.payload.hasOwnProperty('status') &&
276
- !expectedStatuses.includes(result.payload.status)) {
277
- if (typeof waiterID === 'number') {
278
- this.waitress.remove(waiterID);
279
- }
280
- throw new Error(`SREQ '${message}' failed with status '${statusDescription(result.payload.status)}' (expected '${expectedStatuses.map(statusDescription)}')`);
281
- }
282
- else {
283
- return result;
284
- }
285
- }
286
- else if (object.type === constants_1.Type.AREQ && object.isResetCommand()) {
287
- const waiter = this.waitress.waitFor({ type: constants_1.Type.AREQ, subsystem: constants_1.Subsystem.SYS, command: 'resetInd' }, timeout || timeouts.reset);
288
- this.queue.clear();
289
- this.unpiWriter.writeFrame(frame);
290
- return waiter.start().promise;
291
- }
292
- else {
293
- /* istanbul ignore else */
294
- if (object.type === constants_1.Type.AREQ) {
295
- this.unpiWriter.writeFrame(frame);
296
- return undefined;
297
- }
298
- else {
299
- throw new Error(`Unknown type '${object.type}'`);
300
- }
301
- }
302
- });
303
- }
304
- waitressTimeoutFormatter(matcher, timeout) {
305
- return `${constants_1.Type[matcher.type]} - ${constants_1.Subsystem[matcher.subsystem]} - ${matcher.command} after ${timeout}ms`;
306
- }
307
- waitFor(type, subsystem, command, payload = {}, timeout = timeouts.default) {
308
- return this.waitress.waitFor({ type, subsystem, command, payload }, timeout);
309
- }
310
- waitressValidator(zpiObject, matcher) {
311
- const requiredMatch = matcher.type === zpiObject.type && matcher.subsystem == zpiObject.subsystem &&
312
- matcher.command === zpiObject.command;
313
- let payloadMatch = true;
314
- if (matcher.payload) {
315
- for (const [key, value] of Object.entries(matcher.payload)) {
316
- if (!(0, es6_1.default)(zpiObject.payload[key], value)) {
317
- payloadMatch = false;
318
- break;
319
- }
320
- }
321
- }
322
- return requiredMatch && payloadMatch;
323
- }
324
- }
325
- exports.default = Znp;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const unpi_1 = require("../unpi");
30
+ const utils_1 = require("../../../utils");
31
+ const serialPort_1 = require("../../serialPort");
32
+ const serialPortUtils_1 = __importDefault(require("../../serialPortUtils"));
33
+ const socketPortUtils_1 = __importDefault(require("../../socketPortUtils"));
34
+ const Constants = __importStar(require("../constants"));
35
+ const zpiObject_1 = __importDefault(require("./zpiObject"));
36
+ const constants_1 = require("../unpi/constants");
37
+ const net_1 = __importDefault(require("net"));
38
+ const events_1 = __importDefault(require("events"));
39
+ const es6_1 = __importDefault(require("fast-deep-equal/es6"));
40
+ const debug_1 = __importDefault(require("debug"));
41
+ const { COMMON: { ZnpCommandStatus }, Utils: { statusDescription } } = Constants;
42
+ const timeouts = {
43
+ SREQ: 6000,
44
+ reset: 30000,
45
+ default: 10000,
46
+ };
47
+ const debug = {
48
+ error: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:error'),
49
+ timeout: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:timeout'),
50
+ log: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:log'),
51
+ SREQ: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:SREQ'),
52
+ AREQ: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:AREQ'),
53
+ SRSP: (0, debug_1.default)('zigbee-herdsman:adapter:zStack:znp:SRSP'),
54
+ };
55
+ const autoDetectDefinitions = [
56
+ { manufacturer: 'Texas Instruments', vendorId: '0451', productId: '16c8' }, // CC2538
57
+ { manufacturer: 'Texas Instruments', vendorId: '0451', productId: '16a8' }, // CC2531
58
+ { manufacturer: 'Texas Instruments', vendorId: '0451', productId: 'bef3' }, // CC1352P_2 and CC26X2R1
59
+ { manufacturer: 'Electrolama', vendorId: '0403', productId: '6015' }, // ZZH
60
+ ];
61
+ class Znp extends events_1.default.EventEmitter {
62
+ path;
63
+ baudRate;
64
+ rtscts;
65
+ portType;
66
+ serialPort;
67
+ socketPort;
68
+ unpiWriter;
69
+ unpiParser;
70
+ initialized;
71
+ queue;
72
+ waitress;
73
+ constructor(path, baudRate, rtscts) {
74
+ super();
75
+ this.path = path;
76
+ this.baudRate = typeof baudRate === 'number' ? baudRate : 115200;
77
+ this.rtscts = typeof rtscts === 'boolean' ? rtscts : false;
78
+ this.portType = socketPortUtils_1.default.isTcpPath(path) ? 'socket' : 'serial';
79
+ this.initialized = false;
80
+ this.queue = new utils_1.Queue();
81
+ this.waitress = new utils_1.Waitress(this.waitressValidator, this.waitressTimeoutFormatter);
82
+ }
83
+ log(type, message) {
84
+ if (type === constants_1.Type.SRSP) {
85
+ debug.SRSP(message);
86
+ }
87
+ else if (type === constants_1.Type.AREQ) {
88
+ debug.AREQ(message);
89
+ }
90
+ else {
91
+ /* istanbul ignore else */
92
+ if (type === constants_1.Type.SREQ) {
93
+ debug.SREQ(message);
94
+ }
95
+ else {
96
+ throw new Error(`Unknown type '${type}'`);
97
+ }
98
+ }
99
+ }
100
+ onUnpiParsed(frame) {
101
+ try {
102
+ const object = zpiObject_1.default.fromUnpiFrame(frame);
103
+ const message = `<-- ${constants_1.Subsystem[object.subsystem]} - ${object.command} - ${JSON.stringify(object.payload)}`;
104
+ this.log(object.type, message);
105
+ this.waitress.resolve(object);
106
+ this.emit('received', object);
107
+ }
108
+ catch (error) {
109
+ debug.error(`Error while parsing to ZpiObject '${error.stack}'`);
110
+ }
111
+ }
112
+ isInitialized() {
113
+ return this.initialized;
114
+ }
115
+ onPortError(error) {
116
+ debug.error(`Port error: ${error}`);
117
+ }
118
+ onPortClose() {
119
+ debug.log('Port closed');
120
+ this.initialized = false;
121
+ this.emit('close');
122
+ }
123
+ async open() {
124
+ return this.portType === 'serial' ? this.openSerialPort() : this.openSocketPort();
125
+ }
126
+ async openSerialPort() {
127
+ const options = { path: this.path, baudRate: this.baudRate, rtscts: this.rtscts, autoOpen: false };
128
+ debug.log(`Opening SerialPort with ${JSON.stringify(options)}`);
129
+ this.serialPort = new serialPort_1.SerialPort(options);
130
+ this.unpiWriter = new unpi_1.Writer();
131
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
132
+ // @ts-ignore
133
+ this.unpiWriter.pipe(this.serialPort);
134
+ this.unpiParser = new unpi_1.Parser();
135
+ this.serialPort.pipe(this.unpiParser);
136
+ this.unpiParser.on('parsed', this.onUnpiParsed.bind(this));
137
+ try {
138
+ await this.serialPort.asyncOpen();
139
+ debug.log('Serialport opened');
140
+ this.serialPort.once('close', this.onPortClose.bind(this));
141
+ this.serialPort.once('error', this.onPortError.bind(this));
142
+ this.initialized = true;
143
+ await this.skipBootloader();
144
+ }
145
+ catch (error) {
146
+ this.initialized = false;
147
+ if (this.serialPort.isOpen) {
148
+ this.serialPort.close();
149
+ }
150
+ throw error;
151
+ }
152
+ }
153
+ async openSocketPort() {
154
+ const info = socketPortUtils_1.default.parseTcpPath(this.path);
155
+ debug.log(`Opening TCP socket with ${info.host}:${info.port}`);
156
+ this.socketPort = new net_1.default.Socket();
157
+ this.socketPort.setNoDelay(true);
158
+ this.socketPort.setKeepAlive(true, 15000);
159
+ this.unpiWriter = new unpi_1.Writer();
160
+ this.unpiWriter.pipe(this.socketPort);
161
+ this.unpiParser = new unpi_1.Parser();
162
+ this.socketPort.pipe(this.unpiParser);
163
+ this.unpiParser.on('parsed', this.onUnpiParsed.bind(this));
164
+ return new Promise((resolve, reject) => {
165
+ this.socketPort.on('connect', function () {
166
+ debug.log('Socket connected');
167
+ });
168
+ // eslint-disable-next-line
169
+ const self = this;
170
+ this.socketPort.on('ready', async function () {
171
+ debug.log('Socket ready');
172
+ await self.skipBootloader();
173
+ self.initialized = true;
174
+ resolve();
175
+ });
176
+ this.socketPort.once('close', this.onPortClose.bind(this));
177
+ this.socketPort.on('error', function () {
178
+ debug.log('Socket error');
179
+ reject(new Error(`Error while opening socket`));
180
+ self.initialized = false;
181
+ });
182
+ this.socketPort.connect(info.port, info.host);
183
+ });
184
+ }
185
+ async skipBootloader() {
186
+ try {
187
+ await this.request(constants_1.Subsystem.SYS, 'ping', { capabilities: 1 }, null, 250);
188
+ }
189
+ catch (error) {
190
+ // Skip bootloader on CC2530/CC2531
191
+ // Send magic byte: https://github.com/Koenkk/zigbee2mqtt/issues/1343 to bootloader
192
+ // and give ZNP 1 second to start.
193
+ try {
194
+ debug.log('Writing CC2530/CC2531 skip bootloader payload');
195
+ this.unpiWriter.writeBuffer(Buffer.from([0xef]));
196
+ await (0, utils_1.Wait)(1000);
197
+ await this.request(constants_1.Subsystem.SYS, 'ping', { capabilities: 1 }, null, 250);
198
+ }
199
+ catch (error) {
200
+ // Skip bootloader on some CC2652 devices (e.g. zzh-p)
201
+ debug.log('Skip bootloader for CC2652/CC1352');
202
+ if (this.serialPort) {
203
+ await this.setSerialPortOptions({ dtr: false, rts: false });
204
+ await (0, utils_1.Wait)(150);
205
+ await this.setSerialPortOptions({ dtr: false, rts: true });
206
+ await (0, utils_1.Wait)(150);
207
+ await this.setSerialPortOptions({ dtr: false, rts: false });
208
+ await (0, utils_1.Wait)(150);
209
+ }
210
+ }
211
+ }
212
+ }
213
+ async setSerialPortOptions(options) {
214
+ return new Promise((resolve) => {
215
+ this.serialPort.set(options, () => {
216
+ resolve();
217
+ });
218
+ });
219
+ }
220
+ static async isValidPath(path) {
221
+ // For TCP paths we cannot get device information, therefore we cannot validate it.
222
+ if (socketPortUtils_1.default.isTcpPath(path)) {
223
+ return false;
224
+ }
225
+ try {
226
+ return serialPortUtils_1.default.is((0, utils_1.RealpathSync)(path), autoDetectDefinitions);
227
+ }
228
+ catch (error) {
229
+ debug.error(`Failed to determine if path is valid: '${error}'`);
230
+ return false;
231
+ }
232
+ }
233
+ static async autoDetectPath() {
234
+ const paths = await serialPortUtils_1.default.find(autoDetectDefinitions);
235
+ // CC1352P_2 and CC26X2R1 lists as 2 USB devices with same manufacturer, productId and vendorId
236
+ // one is the actual chip interface, other is the XDS110.
237
+ // The chip is always exposed on the first one after alphabetical sorting.
238
+ paths.sort((a, b) => (a < b) ? -1 : 1);
239
+ return paths.length > 0 ? paths[0] : null;
240
+ }
241
+ async close() {
242
+ debug.log('closing');
243
+ this.queue.clear();
244
+ if (this.initialized) {
245
+ this.initialized = false;
246
+ if (this.portType === 'serial') {
247
+ try {
248
+ await this.serialPort.asyncFlushAndClose();
249
+ }
250
+ catch (error) {
251
+ this.emit('close');
252
+ throw error;
253
+ }
254
+ }
255
+ else {
256
+ this.socketPort.destroy();
257
+ }
258
+ }
259
+ this.emit('close');
260
+ }
261
+ request(subsystem, command, payload, waiterID = null, timeout = null, expectedStatuses = [ZnpCommandStatus.SUCCESS]) {
262
+ if (!this.initialized) {
263
+ throw new Error('Cannot request when znp has not been initialized yet');
264
+ }
265
+ const object = zpiObject_1.default.createRequest(subsystem, command, payload);
266
+ const message = `--> ${constants_1.Subsystem[object.subsystem]} - ${object.command} - ${JSON.stringify(payload)}`;
267
+ return this.queue.execute(async () => {
268
+ this.log(object.type, message);
269
+ const frame = object.toUnpiFrame();
270
+ if (object.type === constants_1.Type.SREQ) {
271
+ const t = object.command === 'bdbStartCommissioning' || object.command === 'startupFromApp' ?
272
+ 40000 : timeouts.SREQ;
273
+ const waiter = this.waitress.waitFor({ type: constants_1.Type.SRSP, subsystem: object.subsystem, command: object.command }, timeout || t);
274
+ this.unpiWriter.writeFrame(frame);
275
+ const result = await waiter.start().promise;
276
+ if (result && result.payload.hasOwnProperty('status') &&
277
+ !expectedStatuses.includes(result.payload.status)) {
278
+ if (typeof waiterID === 'number') {
279
+ this.waitress.remove(waiterID);
280
+ }
281
+ throw new Error(`SREQ '${message}' failed with status '${statusDescription(result.payload.status)}' (expected '${expectedStatuses.map(statusDescription)}')`);
282
+ }
283
+ else {
284
+ return result;
285
+ }
286
+ }
287
+ else if (object.type === constants_1.Type.AREQ && object.isResetCommand()) {
288
+ const waiter = this.waitress.waitFor({ type: constants_1.Type.AREQ, subsystem: constants_1.Subsystem.SYS, command: 'resetInd' }, timeout || timeouts.reset);
289
+ this.queue.clear();
290
+ this.unpiWriter.writeFrame(frame);
291
+ return waiter.start().promise;
292
+ }
293
+ else {
294
+ /* istanbul ignore else */
295
+ if (object.type === constants_1.Type.AREQ) {
296
+ this.unpiWriter.writeFrame(frame);
297
+ return undefined;
298
+ }
299
+ else {
300
+ throw new Error(`Unknown type '${object.type}'`);
301
+ }
302
+ }
303
+ });
304
+ }
305
+ waitressTimeoutFormatter(matcher, timeout) {
306
+ return `${constants_1.Type[matcher.type]} - ${constants_1.Subsystem[matcher.subsystem]} - ${matcher.command} after ${timeout}ms`;
307
+ }
308
+ waitFor(type, subsystem, command, payload = {}, timeout = timeouts.default) {
309
+ return this.waitress.waitFor({ type, subsystem, command, payload }, timeout);
310
+ }
311
+ waitressValidator(zpiObject, matcher) {
312
+ const requiredMatch = matcher.type === zpiObject.type && matcher.subsystem == zpiObject.subsystem &&
313
+ matcher.command === zpiObject.command;
314
+ let payloadMatch = true;
315
+ if (matcher.payload) {
316
+ for (const [key, value] of Object.entries(matcher.payload)) {
317
+ if (!(0, es6_1.default)(zpiObject.payload[key], value)) {
318
+ payloadMatch = false;
319
+ break;
320
+ }
321
+ }
322
+ }
323
+ return requiredMatch && payloadMatch;
324
+ }
325
+ }
326
+ exports.default = Znp;
326
327
  //# sourceMappingURL=znp.js.map