@willieee802/zigbee-herdsman 0.19.21 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) hide show
  1. package/.babelrc.js +0 -4
  2. package/.release-please-manifest.json +1 -2
  3. package/CHANGELOG.md +462 -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 -153
  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 +810 -0
  32. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -0
  33. package/dist/adapter/ember/adapter/emberAdapter.js +2970 -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 +100 -0
  44. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -0
  45. package/dist/adapter/ember/adapter/oneWaitress.js +227 -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 +2174 -0
  60. package/dist/adapter/ember/enums.d.ts.map +1 -0
  61. package/dist/adapter/ember/enums.js +2377 -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 +2663 -0
  76. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -0
  77. package/dist/adapter/ember/ezsp/ezsp.js +6435 -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 +458 -0
  84. package/dist/adapter/ember/uart/ash.d.ts.map +1 -0
  85. package/dist/adapter/ember/uart/ash.js +1601 -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 +13 -9
  123. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
  124. package/dist/adapter/ezsp/adapter/backup.js +104 -53
  125. package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
  126. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +61 -60
  127. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  128. package/dist/adapter/ezsp/adapter/ezspAdapter.js +626 -608
  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 +111 -101
  139. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
  140. package/dist/adapter/ezsp/driver/driver.js +816 -638
  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 +652 -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.js +77 -72
  154. package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
  155. package/dist/adapter/ezsp/driver/parser.d.ts +11 -12
  156. package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -1
  157. package/dist/adapter/ezsp/driver/parser.js +104 -111
  158. package/dist/adapter/ezsp/driver/parser.js.map +1 -1
  159. package/dist/adapter/ezsp/driver/types/basic.d.ts +62 -62
  160. package/dist/adapter/ezsp/driver/types/basic.js +208 -208
  161. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
  162. package/dist/adapter/ezsp/driver/types/index.d.ts +9 -9
  163. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
  164. package/dist/adapter/ezsp/driver/types/index.js +138 -133
  165. package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
  166. package/dist/adapter/ezsp/driver/types/named.d.ts +1287 -697
  167. package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -1
  168. package/dist/adapter/ezsp/driver/types/named.js +2329 -1726
  169. package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
  170. package/dist/adapter/ezsp/driver/types/struct.d.ts +270 -251
  171. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
  172. package/dist/adapter/ezsp/driver/types/struct.js +803 -708
  173. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
  174. package/dist/adapter/ezsp/driver/uart.d.ts +48 -44
  175. package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
  176. package/dist/adapter/ezsp/driver/uart.js +382 -368
  177. package/dist/adapter/ezsp/driver/uart.js.map +1 -1
  178. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +2 -2
  179. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +55 -55
  180. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
  181. package/dist/adapter/ezsp/driver/utils/index.d.ts +19 -18
  182. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
  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 +13 -8
  192. package/dist/adapter/serialPort.d.ts.map +1 -1
  193. package/dist/adapter/serialPort.js +46 -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.js +462 -461
  205. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  206. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +150 -150
  207. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +258 -258
  208. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
  209. package/dist/adapter/z-stack/adapter/endpoints.d.ts +11 -11
  210. package/dist/adapter/z-stack/adapter/endpoints.js +73 -73
  211. package/dist/adapter/z-stack/adapter/index.d.ts +2 -2
  212. package/dist/adapter/z-stack/adapter/index.js +8 -8
  213. package/dist/adapter/z-stack/adapter/manager.d.ts +86 -86
  214. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  215. package/dist/adapter/z-stack/adapter/manager.js +482 -476
  216. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  217. package/dist/adapter/z-stack/adapter/tstype.d.ts +6 -6
  218. package/dist/adapter/z-stack/adapter/tstype.js +9 -10
  219. package/dist/adapter/z-stack/adapter/tstype.js.map +1 -1
  220. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +81 -81
  221. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  222. package/dist/adapter/z-stack/adapter/zStackAdapter.js +885 -868
  223. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  224. package/dist/adapter/z-stack/constants/af.d.ts +23 -23
  225. package/dist/adapter/z-stack/constants/af.js +27 -27
  226. package/dist/adapter/z-stack/constants/common.d.ts +278 -278
  227. package/dist/adapter/z-stack/constants/common.d.ts.map +1 -1
  228. package/dist/adapter/z-stack/constants/common.js +292 -289
  229. package/dist/adapter/z-stack/constants/common.js.map +1 -1
  230. package/dist/adapter/z-stack/constants/dbg.d.ts +22 -22
  231. package/dist/adapter/z-stack/constants/dbg.js +24 -24
  232. package/dist/adapter/z-stack/constants/index.d.ts +10 -10
  233. package/dist/adapter/z-stack/constants/index.js +47 -47
  234. package/dist/adapter/z-stack/constants/mac.d.ts +127 -127
  235. package/dist/adapter/z-stack/constants/mac.js +129 -129
  236. package/dist/adapter/z-stack/constants/sapi.d.ts +24 -24
  237. package/dist/adapter/z-stack/constants/sapi.js +26 -26
  238. package/dist/adapter/z-stack/constants/sys.d.ts +71 -71
  239. package/dist/adapter/z-stack/constants/sys.js +73 -73
  240. package/dist/adapter/z-stack/constants/util.d.ts +81 -81
  241. package/dist/adapter/z-stack/constants/util.js +83 -83
  242. package/dist/adapter/z-stack/constants/utils.d.ts +4 -4
  243. package/dist/adapter/z-stack/constants/utils.js +14 -14
  244. package/dist/adapter/z-stack/constants/zdo.d.ts +102 -102
  245. package/dist/adapter/z-stack/constants/zdo.js +104 -104
  246. package/dist/adapter/z-stack/models/index.d.ts +1 -1
  247. package/dist/adapter/z-stack/models/index.js +17 -17
  248. package/dist/adapter/z-stack/models/startup-options.d.ts +12 -12
  249. package/dist/adapter/z-stack/models/startup-options.js +2 -2
  250. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +23 -23
  251. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +45 -45
  252. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -1
  253. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +10 -10
  254. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +22 -22
  255. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +10 -10
  256. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +21 -21
  257. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +10 -10
  258. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +23 -23
  259. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +10 -10
  260. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +24 -24
  261. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +10 -10
  262. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +23 -23
  263. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +8 -8
  264. package/dist/adapter/z-stack/structs/entries/channel-list.js +15 -15
  265. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +8 -8
  266. package/dist/adapter/z-stack/structs/entries/has-configured.js +16 -16
  267. package/dist/adapter/z-stack/structs/entries/index.d.ts +16 -16
  268. package/dist/adapter/z-stack/structs/entries/index.js +32 -32
  269. package/dist/adapter/z-stack/structs/entries/nib.d.ts +10 -10
  270. package/dist/adapter/z-stack/structs/entries/nib.js +68 -68
  271. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +10 -10
  272. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +18 -18
  273. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +8 -8
  274. package/dist/adapter/z-stack/structs/entries/nwk-key.js +15 -15
  275. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +8 -8
  276. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +15 -15
  277. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +13 -13
  278. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +23 -23
  279. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +10 -10
  280. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +22 -22
  281. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +20 -20
  282. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +36 -36
  283. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -1
  284. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +10 -10
  285. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +24 -24
  286. package/dist/adapter/z-stack/structs/index.d.ts +4 -4
  287. package/dist/adapter/z-stack/structs/index.js +20 -20
  288. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +13 -13
  289. package/dist/adapter/z-stack/structs/serializable-memory-object.js +2 -2
  290. package/dist/adapter/z-stack/structs/struct.d.ts +99 -99
  291. package/dist/adapter/z-stack/structs/struct.js +296 -295
  292. package/dist/adapter/z-stack/structs/struct.js.map +1 -1
  293. package/dist/adapter/z-stack/structs/table.d.ts +94 -94
  294. package/dist/adapter/z-stack/structs/table.js +163 -161
  295. package/dist/adapter/z-stack/structs/table.js.map +1 -1
  296. package/dist/adapter/z-stack/unpi/constants.d.ts +28 -28
  297. package/dist/adapter/z-stack/unpi/constants.js +39 -41
  298. package/dist/adapter/z-stack/unpi/constants.js.map +1 -1
  299. package/dist/adapter/z-stack/unpi/frame.d.ts +16 -16
  300. package/dist/adapter/z-stack/unpi/frame.js +54 -48
  301. package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
  302. package/dist/adapter/z-stack/unpi/index.d.ts +5 -5
  303. package/dist/adapter/z-stack/unpi/index.js +37 -37
  304. package/dist/adapter/z-stack/unpi/parser.d.ts +10 -10
  305. package/dist/adapter/z-stack/unpi/parser.js +75 -74
  306. package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
  307. package/dist/adapter/z-stack/unpi/writer.d.ts +10 -10
  308. package/dist/adapter/z-stack/unpi/writer.js +44 -44
  309. package/dist/adapter/z-stack/utils/channel-list.d.ts +20 -20
  310. package/dist/adapter/z-stack/utils/channel-list.js +40 -40
  311. package/dist/adapter/z-stack/utils/channel-list.js.map +1 -1
  312. package/dist/adapter/z-stack/utils/index.d.ts +2 -2
  313. package/dist/adapter/z-stack/utils/index.js +18 -18
  314. package/dist/adapter/z-stack/utils/network-options.d.ts +8 -8
  315. package/dist/adapter/z-stack/utils/network-options.js +22 -22
  316. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +11 -11
  317. package/dist/adapter/z-stack/znp/buffaloZnp.js +113 -113
  318. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -1
  319. package/dist/adapter/z-stack/znp/definition.d.ts +5 -5
  320. package/dist/adapter/z-stack/znp/definition.js +3050 -3050
  321. package/dist/adapter/z-stack/znp/index.d.ts +3 -3
  322. package/dist/adapter/z-stack/znp/index.js +10 -10
  323. package/dist/adapter/z-stack/znp/parameterType.d.ts +22 -22
  324. package/dist/adapter/z-stack/znp/parameterType.js +25 -25
  325. package/dist/adapter/z-stack/znp/tstype.d.ts +21 -21
  326. package/dist/adapter/z-stack/znp/tstype.js +2 -2
  327. package/dist/adapter/z-stack/znp/znp.d.ts +44 -43
  328. package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
  329. package/dist/adapter/z-stack/znp/znp.js +326 -325
  330. package/dist/adapter/z-stack/znp/znp.js.map +1 -1
  331. package/dist/adapter/z-stack/znp/zpiObject.d.ts +19 -19
  332. package/dist/adapter/z-stack/znp/zpiObject.js +102 -96
  333. package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
  334. package/dist/adapter/zigate/adapter/index.d.ts +2 -2
  335. package/dist/adapter/zigate/adapter/index.js +10 -10
  336. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +70 -70
  337. package/dist/adapter/zigate/adapter/zigateAdapter.js +689 -684
  338. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  339. package/dist/adapter/zigate/debug.d.ts +7 -7
  340. package/dist/adapter/zigate/debug.d.ts.map +1 -1
  341. package/dist/adapter/zigate/debug.js +19 -22
  342. package/dist/adapter/zigate/debug.js.map +1 -1
  343. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +18 -18
  344. package/dist/adapter/zigate/driver/buffaloZiGate.js +139 -139
  345. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
  346. package/dist/adapter/zigate/driver/commandType.d.ts +41 -41
  347. package/dist/adapter/zigate/driver/commandType.js +385 -385
  348. package/dist/adapter/zigate/driver/commandType.js.map +1 -1
  349. package/dist/adapter/zigate/driver/constants.d.ts +276 -276
  350. package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
  351. package/dist/adapter/zigate/driver/constants.js +371 -371
  352. package/dist/adapter/zigate/driver/constants.js.map +1 -1
  353. package/dist/adapter/zigate/driver/frame.d.ts +26 -26
  354. package/dist/adapter/zigate/driver/frame.js +172 -172
  355. package/dist/adapter/zigate/driver/frame.js.map +1 -1
  356. package/dist/adapter/zigate/driver/messageType.d.ts +11 -11
  357. package/dist/adapter/zigate/driver/messageType.js +278 -278
  358. package/dist/adapter/zigate/driver/messageType.js.map +1 -1
  359. package/dist/adapter/zigate/driver/parameterType.d.ts +20 -20
  360. package/dist/adapter/zigate/driver/parameterType.js +23 -23
  361. package/dist/adapter/zigate/driver/ziGateObject.d.ts +23 -23
  362. package/dist/adapter/zigate/driver/ziGateObject.js +110 -106
  363. package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
  364. package/dist/adapter/zigate/driver/zigate.d.ts +49 -49
  365. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
  366. package/dist/adapter/zigate/driver/zigate.js +296 -303
  367. package/dist/adapter/zigate/driver/zigate.js.map +1 -1
  368. package/dist/buffalo/buffalo.d.ts +50 -50
  369. package/dist/buffalo/buffalo.js +324 -322
  370. package/dist/buffalo/buffalo.js.map +1 -1
  371. package/dist/buffalo/index.d.ts +3 -3
  372. package/dist/buffalo/index.js +33 -33
  373. package/dist/buffalo/tstype.d.ts +8 -8
  374. package/dist/buffalo/tstype.js +2 -2
  375. package/dist/controller/controller.d.ts +113 -113
  376. package/dist/controller/controller.d.ts.map +1 -1
  377. package/dist/controller/controller.js +641 -619
  378. package/dist/controller/controller.js.map +1 -1
  379. package/dist/controller/database.d.ts +18 -18
  380. package/dist/controller/database.js +96 -93
  381. package/dist/controller/database.js.map +1 -1
  382. package/dist/controller/events.d.ts +58 -58
  383. package/dist/controller/events.d.ts.map +1 -1
  384. package/dist/controller/events.js +108 -102
  385. package/dist/controller/events.js.map +1 -1
  386. package/dist/controller/greenPower.d.ts +12 -12
  387. package/dist/controller/greenPower.js +221 -220
  388. package/dist/controller/greenPower.js.map +1 -1
  389. package/dist/controller/helpers/index.d.ts +2 -2
  390. package/dist/controller/helpers/index.js +28 -28
  391. package/dist/controller/helpers/request.d.ts +21 -22
  392. package/dist/controller/helpers/request.d.ts.map +1 -1
  393. package/dist/controller/helpers/request.js +77 -71
  394. package/dist/controller/helpers/request.js.map +1 -1
  395. package/dist/controller/helpers/requestQueue.d.ts +13 -0
  396. package/dist/controller/helpers/requestQueue.d.ts.map +1 -0
  397. package/dist/controller/helpers/requestQueue.js +116 -0
  398. package/dist/controller/helpers/requestQueue.js.map +1 -0
  399. package/dist/controller/helpers/zclFrameConverter.d.ts +7 -7
  400. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  401. package/dist/controller/helpers/zclFrameConverter.js +50 -31
  402. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  403. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +5 -5
  404. package/dist/controller/helpers/zclTransactionSequenceNumber.js +13 -13
  405. package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +1 -1
  406. package/dist/controller/index.d.ts +5 -5
  407. package/dist/controller/index.js +8 -8
  408. package/dist/controller/logger-stub.d.ts +6 -6
  409. package/dist/controller/logger-stub.js +2 -2
  410. package/dist/controller/model/device.d.ts +132 -133
  411. package/dist/controller/model/device.d.ts.map +1 -1
  412. package/dist/controller/model/device.js +726 -717
  413. package/dist/controller/model/device.js.map +1 -1
  414. package/dist/controller/model/endpoint.d.ts +128 -131
  415. package/dist/controller/model/endpoint.d.ts.map +1 -1
  416. package/dist/controller/model/endpoint.js +755 -821
  417. package/dist/controller/model/endpoint.js.map +1 -1
  418. package/dist/controller/model/entity.d.ts +14 -14
  419. package/dist/controller/model/entity.js +26 -26
  420. package/dist/controller/model/entity.js.map +1 -1
  421. package/dist/controller/model/group.d.ts +38 -38
  422. package/dist/controller/model/group.d.ts.map +1 -1
  423. package/dist/controller/model/group.js +225 -221
  424. package/dist/controller/model/group.js.map +1 -1
  425. package/dist/controller/model/index.d.ts +5 -5
  426. package/dist/controller/model/index.js +14 -14
  427. package/dist/controller/touchlink.d.ts +19 -19
  428. package/dist/controller/touchlink.js +159 -157
  429. package/dist/controller/touchlink.js.map +1 -1
  430. package/dist/controller/tstype.d.ts +20 -21
  431. package/dist/controller/tstype.d.ts.map +1 -1
  432. package/dist/controller/tstype.js +8 -9
  433. package/dist/controller/tstype.js.map +1 -1
  434. package/dist/index.d.ts +3 -3
  435. package/dist/index.js +33 -33
  436. package/dist/models/backup-storage-legacy.d.ts +26 -26
  437. package/dist/models/backup-storage-legacy.js +2 -2
  438. package/dist/models/backup-storage-unified.d.ts +49 -49
  439. package/dist/models/backup-storage-unified.js +2 -2
  440. package/dist/models/backup.d.ts +37 -37
  441. package/dist/models/backup.js +2 -2
  442. package/dist/models/index.d.ts +4 -4
  443. package/dist/models/index.js +20 -20
  444. package/dist/models/network-options.d.ts +12 -12
  445. package/dist/models/network-options.js +2 -2
  446. package/dist/utils/assertString.d.ts +2 -2
  447. package/dist/utils/assertString.js +8 -8
  448. package/dist/utils/assertString.js.map +1 -1
  449. package/dist/utils/backup.d.ts +20 -20
  450. package/dist/utils/backup.d.ts.map +1 -1
  451. package/dist/utils/backup.js +189 -187
  452. package/dist/utils/backup.js.map +1 -1
  453. package/dist/utils/equalsPartial.d.ts +2 -2
  454. package/dist/utils/equalsPartial.js +11 -11
  455. package/dist/utils/index.d.ts +9 -9
  456. package/dist/utils/index.js +45 -45
  457. package/dist/utils/isNumberArray.d.ts +2 -2
  458. package/dist/utils/isNumberArray.js +6 -6
  459. package/dist/utils/queue.d.ts +11 -11
  460. package/dist/utils/queue.d.ts.map +1 -1
  461. package/dist/utils/queue.js +61 -50
  462. package/dist/utils/queue.js.map +1 -1
  463. package/dist/utils/realpathSync.d.ts +2 -2
  464. package/dist/utils/realpathSync.js +12 -12
  465. package/dist/utils/wait.d.ts +2 -2
  466. package/dist/utils/wait.js +8 -8
  467. package/dist/utils/waitress.d.ts +21 -21
  468. package/dist/utils/waitress.d.ts.map +1 -1
  469. package/dist/utils/waitress.js +68 -61
  470. package/dist/utils/waitress.js.map +1 -1
  471. package/dist/zcl/buffaloZcl.d.ts +41 -41
  472. package/dist/zcl/buffaloZcl.d.ts.map +1 -1
  473. package/dist/zcl/buffaloZcl.js +594 -591
  474. package/dist/zcl/buffaloZcl.js.map +1 -1
  475. package/dist/zcl/definition/buffaloZclDataType.d.ts +17 -17
  476. package/dist/zcl/definition/buffaloZclDataType.js +20 -20
  477. package/dist/zcl/definition/cluster.d.ts +29 -29
  478. package/dist/zcl/definition/cluster.d.ts.map +1 -1
  479. package/dist/zcl/definition/cluster.js +5530 -5335
  480. package/dist/zcl/definition/cluster.js.map +1 -1
  481. package/dist/zcl/definition/dataType.d.ts +59 -59
  482. package/dist/zcl/definition/dataType.js +64 -64
  483. package/dist/zcl/definition/direction.d.ts +5 -5
  484. package/dist/zcl/definition/direction.js +8 -8
  485. package/dist/zcl/definition/endpointDeviceType.d.ts +4 -4
  486. package/dist/zcl/definition/endpointDeviceType.js +15 -15
  487. package/dist/zcl/definition/foundation.d.ts +11 -11
  488. package/dist/zcl/definition/foundation.js +167 -167
  489. package/dist/zcl/definition/frameControl.d.ts +10 -10
  490. package/dist/zcl/definition/frameControl.js +2 -2
  491. package/dist/zcl/definition/frameType.d.ts +5 -5
  492. package/dist/zcl/definition/frameType.js +8 -8
  493. package/dist/zcl/definition/index.d.ts +13 -13
  494. package/dist/zcl/definition/index.js +51 -51
  495. package/dist/zcl/definition/manufacturerCode.d.ts +1077 -1074
  496. package/dist/zcl/definition/manufacturerCode.d.ts.map +1 -1
  497. package/dist/zcl/definition/manufacturerCode.js +1082 -1079
  498. package/dist/zcl/definition/manufacturerCode.js.map +1 -1
  499. package/dist/zcl/definition/powerSource.d.ts +4 -4
  500. package/dist/zcl/definition/powerSource.js +12 -12
  501. package/dist/zcl/definition/status.d.ts +38 -38
  502. package/dist/zcl/definition/status.js +41 -41
  503. package/dist/zcl/definition/tstype.d.ts +16 -16
  504. package/dist/zcl/definition/tstype.js +2 -2
  505. package/dist/zcl/index.d.ts +16 -16
  506. package/dist/zcl/index.js +55 -55
  507. package/dist/zcl/tstype.d.ts +56 -56
  508. package/dist/zcl/tstype.js +9 -10
  509. package/dist/zcl/tstype.js.map +1 -1
  510. package/dist/zcl/utils.d.ts +6 -6
  511. package/dist/zcl/utils.js +164 -165
  512. package/dist/zcl/utils.js.map +1 -1
  513. package/dist/zcl/zclFrame.d.ts +40 -40
  514. package/dist/zcl/zclFrame.js +351 -347
  515. package/dist/zcl/zclFrame.js.map +1 -1
  516. package/dist/zcl/zclHeader.d.ts +8 -8
  517. package/dist/zcl/zclHeader.js +2 -2
  518. package/dist/zcl/zclStatusError.d.ts +5 -5
  519. package/dist/zcl/zclStatusError.js +14 -13
  520. package/dist/zcl/zclStatusError.js.map +1 -1
  521. package/package.json +11 -11
  522. package/release-please-config.json +1 -5
  523. package/tsconfig.json +4 -2
@@ -1,369 +1,383 @@
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
- exports.SerialDriver = void 0;
30
- /* istanbul ignore file */
31
- const events_1 = require("events");
32
- const net_1 = __importDefault(require("net"));
33
- const serialPort_1 = require("../../serialPort");
34
- const socketPortUtils_1 = __importDefault(require("../../socketPortUtils"));
35
- const utils_1 = require("./utils");
36
- const utils_2 = require("../../../utils");
37
- const consts = __importStar(require("./consts"));
38
- const writer_1 = require("./writer");
39
- const parser_1 = require("./parser");
40
- const debug_1 = __importDefault(require("debug"));
41
- const debug = (0, debug_1.default)('zigbee-herdsman:adapter:ezsp:uart');
42
- var NcpResetCode;
43
- (function (NcpResetCode) {
44
- NcpResetCode[NcpResetCode["RESET_UNKNOWN_REASON"] = 0] = "RESET_UNKNOWN_REASON";
45
- NcpResetCode[NcpResetCode["RESET_EXTERNAL"] = 1] = "RESET_EXTERNAL";
46
- NcpResetCode[NcpResetCode["RESET_POWER_ON"] = 2] = "RESET_POWER_ON";
47
- NcpResetCode[NcpResetCode["RESET_WATCHDOG"] = 3] = "RESET_WATCHDOG";
48
- NcpResetCode[NcpResetCode["RESET_ASSERT"] = 6] = "RESET_ASSERT";
49
- NcpResetCode[NcpResetCode["RESET_BOOTLOADER"] = 9] = "RESET_BOOTLOADER";
50
- NcpResetCode[NcpResetCode["RESET_SOFTWARE"] = 11] = "RESET_SOFTWARE";
51
- NcpResetCode[NcpResetCode["ERROR_EXCEEDED_MAXIMUM_ACK_TIMEOUT_COUNT"] = 81] = "ERROR_EXCEEDED_MAXIMUM_ACK_TIMEOUT_COUNT";
52
- NcpResetCode[NcpResetCode["ERROR_UNKNOWN_EM3XX_ERROR"] = 128] = "ERROR_UNKNOWN_EM3XX_ERROR";
53
- })(NcpResetCode || (NcpResetCode = {}));
54
- class SerialDriver extends events_1.EventEmitter {
55
- constructor() {
56
- super();
57
- this.sendSeq = 0; // next frame number to send
58
- this.recvSeq = 0; // next frame number to receive
59
- this.ackSeq = 0; // next number after the last accepted frame
60
- this.initialized = false;
61
- this.queue = new utils_2.Queue(1);
62
- this.waitress = new utils_2.Waitress(this.waitressValidator, this.waitressTimeoutFormatter);
63
- }
64
- async connect(path, options) {
65
- this.portType = socketPortUtils_1.default.isTcpPath(path) ? 'socket' : 'serial';
66
- if (this.portType === 'serial') {
67
- await this.openSerialPort(path, options);
68
- }
69
- else {
70
- await this.openSocketPort(path);
71
- }
72
- }
73
- async openSerialPort(path, opt) {
74
- const options = {
75
- path,
76
- baudRate: typeof opt.baudRate === 'number' ? opt.baudRate : 115200,
77
- rtscts: typeof opt.rtscts === 'boolean' ? opt.rtscts : false,
78
- autoOpen: false
79
- };
80
- debug(`Opening SerialPort with ${JSON.stringify(options)}`);
81
- this.serialPort = new serialPort_1.SerialPort(options);
82
- this.writer = new writer_1.Writer();
83
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
84
- // @ts-ignore
85
- this.writer.pipe(this.serialPort);
86
- this.parser = new parser_1.Parser();
87
- this.serialPort.pipe(this.parser);
88
- this.parser.on('parsed', this.onParsed.bind(this));
89
- return new Promise((resolve, reject) => {
90
- this.serialPort.open(async (error) => {
91
- if (error) {
92
- this.initialized = false;
93
- if (this.serialPort.isOpen) {
94
- this.serialPort.close();
95
- }
96
- reject(new Error(`Error while opening serialport '${error}'`));
97
- }
98
- else {
99
- debug('Serialport opened');
100
- this.serialPort.once('close', this.onPortClose.bind(this));
101
- this.serialPort.once('error', (error) => {
102
- debug(`Serialport error: ${error}`);
103
- });
104
- // reset
105
- await this.reset();
106
- this.initialized = true;
107
- this.emit('connected');
108
- resolve();
109
- }
110
- });
111
- });
112
- }
113
- async openSocketPort(path) {
114
- const info = socketPortUtils_1.default.parseTcpPath(path);
115
- debug(`Opening TCP socket with ${info.host}:${info.port}`);
116
- this.socketPort = new net_1.default.Socket();
117
- this.socketPort.setNoDelay(true);
118
- this.socketPort.setKeepAlive(true, 15000);
119
- this.writer = new writer_1.Writer();
120
- this.writer.pipe(this.socketPort);
121
- this.parser = new parser_1.Parser();
122
- this.socketPort.pipe(this.parser);
123
- this.parser.on('parsed', this.onParsed.bind(this));
124
- return new Promise((resolve, reject) => {
125
- this.socketPort.on('connect', function () {
126
- debug('Socket connected');
127
- });
128
- // eslint-disable-next-line
129
- const self = this;
130
- this.socketPort.on('ready', async () => {
131
- debug('Socket ready');
132
- // reset
133
- await this.reset();
134
- self.initialized = true;
135
- this.emit('connected');
136
- resolve();
137
- });
138
- this.socketPort.once('close', this.onPortClose.bind(this));
139
- this.socketPort.on('error', function () {
140
- debug('Socket error');
141
- self.initialized = false;
142
- reject(new Error(`Error while opening socket`));
143
- });
144
- this.socketPort.connect(info.port, info.host);
145
- });
146
- }
147
- onParsed(data) {
148
- // check CRC
149
- const crc = (0, utils_1.crc16ccitt)(data.subarray(0, -3), 65535);
150
- const crcArr = Buffer.from([(crc >> 8), (crc % 256)]);
151
- if (!data.subarray(-3, -1).equals(crcArr)) {
152
- // CRC error
153
- debug(`<-- CRC error: ${data.toString('hex')}|` +
154
- `${data.subarray(-3, -1).toString('hex')}|` +
155
- `${crcArr.toString('hex')}`);
156
- // send NAK
157
- this.writer.sendNAK(this.recvSeq);
158
- // skip handler
159
- return;
160
- }
161
- try {
162
- /* Frame receive handler */
163
- switch (true) {
164
- case ((data[0] & 0x80) === 0):
165
- debug(`<-- DATA (${(data[0] & 0x70) >> 4},` +
166
- `${data[0] & 0x07},${(data[0] & 0x08) >> 3}): ${data.toString('hex')}`);
167
- this.handleDATA(data);
168
- break;
169
- case ((data[0] & 0xE0) === 0x80):
170
- debug(`<-- ACK (${data[0] & 0x07}): ${data.toString('hex')}`);
171
- this.handleACK(data[0]);
172
- break;
173
- case ((data[0] & 0xE0) === 0xA0):
174
- debug(`<-- NAK (${data[0] & 0x07}): ${data.toString('hex')}`);
175
- this.handleNAK(data[0]);
176
- break;
177
- case (data[0] === 0xC0):
178
- debug(`<-- RST: ${data.toString('hex')}`);
179
- break;
180
- case (data[0] === 0xC1):
181
- debug(`<-- RSTACK: ${data.toString('hex')}`);
182
- this.rstack_frame_received(data);
183
- break;
184
- case (data[0] === 0xC2):
185
- debug(`<-- Error: ${data.toString('hex')}`);
186
- // send reset
187
- this.reset();
188
- break;
189
- default:
190
- debug("UNKNOWN FRAME RECEIVED: %r", data);
191
- }
192
- }
193
- catch (error) {
194
- debug(`Error while parsing to ZpiObject '${error.stack}'`);
195
- }
196
- }
197
- handleDATA(data) {
198
- /* Data frame receive handler */
199
- const frmNum = (data[0] & 0x70) >> 4;
200
- const reTx = (data[0] & 0x08) >> 3;
201
- this.recvSeq = (frmNum + 1) & 7; // next
202
- debug(`--> ACK (${this.recvSeq})`);
203
- this.writer.sendACK(this.recvSeq);
204
- const handled = this.handleACK(data[0]);
205
- if (reTx && !handled) {
206
- // if the package is resent and did not expect it,
207
- // then will skip it - already processed it earlier
208
- debug(`Skipping the packet as repeated (${this.recvSeq})`);
209
- return;
210
- }
211
- data = data.subarray(1, -3);
212
- const frame = this.randomize(data);
213
- this.emit('received', frame);
214
- }
215
- handleACK(control) {
216
- /* Handle an acknowledgement frame */
217
- // next number after the last accepted frame
218
- this.ackSeq = control & 0x07;
219
- const handled = this.waitress.resolve({ sequence: this.ackSeq });
220
- if (!handled && this.sendSeq !== this.ackSeq) {
221
- debug(`Unexpected packet sequence ${this.ackSeq} | ${this.sendSeq}`);
222
- }
223
- return handled;
224
- }
225
- handleNAK(control) {
226
- /* Handle negative acknowledgment frame */
227
- const nakNum = control & 0x07;
228
- const handled = this.waitress.reject({ sequence: nakNum }, 'Recv NAK frame');
229
- if (!handled) {
230
- // send NAK
231
- debug(`NAK Unexpected packet sequence ${nakNum}`);
232
- }
233
- else {
234
- debug(`NAK Expected packet sequence ${nakNum}`);
235
- }
236
- }
237
- rstack_frame_received(data) {
238
- /* Reset acknowledgement frame receive handler */
239
- let code;
240
- this.sendSeq = 0;
241
- this.recvSeq = 0;
242
- try {
243
- code = NcpResetCode[data[2]];
244
- }
245
- catch (e) {
246
- code = NcpResetCode.ERROR_UNKNOWN_EM3XX_ERROR;
247
- }
248
- debug("RSTACK Version: %d Reason: %s frame: %s", data[1], code.toString(), data.toString('hex'));
249
- if (NcpResetCode[code].toString() !== NcpResetCode.RESET_SOFTWARE.toString()) {
250
- return;
251
- }
252
- this.waitress.resolve({ sequence: -1 });
253
- }
254
- randomize(s) {
255
- /*XOR s with a pseudo-random sequence for transmission
256
- Used only in data frames
257
- */
258
- let rand = consts.RANDOMIZE_START;
259
- const out = Buffer.alloc(s.length);
260
- let outIdx = 0;
261
- for (const c of s) {
262
- out.writeUInt8(c ^ rand, outIdx++);
263
- if ((rand % 2)) {
264
- rand = ((rand >> 1) ^ consts.RANDOMIZE_SEQ);
265
- }
266
- else {
267
- rand = (rand >> 1);
268
- }
269
- }
270
- return out;
271
- }
272
- async reset() {
273
- debug('Uart reseting');
274
- this.parser.reset();
275
- this.queue.clear();
276
- return this.queue.execute(async () => {
277
- debug(`--> Write reset`);
278
- const waiter = this.waitFor(-1, 10000).start();
279
- this.writer.sendReset();
280
- debug(`-?- waiting reset`);
281
- return waiter.promise.catch(async (e) => {
282
- debug(`--> Error: ${e}`);
283
- this.emit('reset');
284
- throw new Error(`Reset error: ${e}`);
285
- }).then(() => {
286
- debug(`-+- waiting reset success`);
287
- });
288
- });
289
- }
290
- close() {
291
- return new Promise((resolve, reject) => {
292
- this.queue.clear();
293
- if (this.initialized) {
294
- if (this.portType === 'serial') {
295
- this.serialPort.flush(() => {
296
- this.serialPort.close((error) => {
297
- this.initialized = false;
298
- this.emit('close');
299
- error == null ?
300
- resolve() :
301
- reject(new Error(`Error while closing serialport '${error}'`));
302
- });
303
- });
304
- }
305
- else {
306
- this.socketPort.destroy();
307
- resolve();
308
- }
309
- }
310
- else {
311
- this.emit('close');
312
- resolve();
313
- }
314
- });
315
- }
316
- onPortClose() {
317
- debug('Port closed');
318
- this.initialized = false;
319
- this.emit('close');
320
- }
321
- isInitialized() {
322
- return this.initialized;
323
- }
324
- async sendDATA(data) {
325
- const seq = this.sendSeq;
326
- this.sendSeq = ((seq + 1) % 8); // next
327
- const nextSeq = this.sendSeq;
328
- const ackSeq = this.recvSeq;
329
- return this.queue.execute(async () => {
330
- debug(`--> DATA (${seq},${ackSeq},0): ${data.toString('hex')}`);
331
- const randData = this.randomize(data);
332
- const waiter = this.waitFor(nextSeq).start();
333
- this.writer.sendData(randData, seq, 0, ackSeq);
334
- debug(`-?- waiting (${nextSeq})`);
335
- return waiter.promise.catch(async (e) => {
336
- debug(`--> Error: ${e}`);
337
- debug(`-!- break waiting (${nextSeq})`);
338
- debug(`Can't send DATA frame (${seq},${ackSeq},0): ${data.toString('hex')}`);
339
- await (0, utils_2.Wait)(500);
340
- debug(`->> DATA (${seq},${ackSeq},1): ${data.toString('hex')}`);
341
- const waiter = this.waitFor(nextSeq).start();
342
- this.writer.sendData(randData, seq, 1, ackSeq);
343
- debug(`-?- rewaiting (${nextSeq})`);
344
- return waiter.promise.catch(async (e) => {
345
- debug(`--> Error: ${e}`);
346
- debug(`-!- break rewaiting (${nextSeq})`);
347
- debug(`Can't resend DATA frame (${seq},${ackSeq},1): ${data.toString('hex')}`);
348
- this.emit('reset');
349
- throw new Error(`sendDATA error: ${e}`);
350
- }).then(() => {
351
- debug(`-+- rewaiting (${nextSeq}) success`);
352
- });
353
- }).then(() => {
354
- debug(`-+- waiting (${nextSeq}) success`);
355
- });
356
- });
357
- }
358
- waitFor(sequence, timeout = 2000) {
359
- return this.waitress.waitFor({ sequence }, timeout);
360
- }
361
- waitressTimeoutFormatter(matcher, timeout) {
362
- return `${JSON.stringify(matcher)} after ${timeout}ms`;
363
- }
364
- waitressValidator(payload, matcher) {
365
- return (payload.sequence === matcher.sequence);
366
- }
367
- }
368
- exports.SerialDriver = SerialDriver;
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.SerialDriver = void 0;
7
+ /* istanbul ignore file */
8
+ const events_1 = require("events");
9
+ const net_1 = __importDefault(require("net"));
10
+ const serialPort_1 = require("../../serialPort");
11
+ const socketPortUtils_1 = __importDefault(require("../../socketPortUtils"));
12
+ const utils_1 = require("../../../utils");
13
+ const writer_1 = require("./writer");
14
+ const parser_1 = require("./parser");
15
+ const frame_1 = require("./frame");
16
+ const debug_1 = __importDefault(require("debug"));
17
+ const wait_1 = __importDefault(require("../../../utils/wait"));
18
+ const debug = (0, debug_1.default)('zigbee-herdsman:adapter:ezsp:uart');
19
+ var NcpResetCode;
20
+ (function (NcpResetCode) {
21
+ NcpResetCode[NcpResetCode["RESET_UNKNOWN_REASON"] = 0] = "RESET_UNKNOWN_REASON";
22
+ NcpResetCode[NcpResetCode["RESET_EXTERNAL"] = 1] = "RESET_EXTERNAL";
23
+ NcpResetCode[NcpResetCode["RESET_POWER_ON"] = 2] = "RESET_POWER_ON";
24
+ NcpResetCode[NcpResetCode["RESET_WATCHDOG"] = 3] = "RESET_WATCHDOG";
25
+ NcpResetCode[NcpResetCode["RESET_ASSERT"] = 6] = "RESET_ASSERT";
26
+ NcpResetCode[NcpResetCode["RESET_BOOTLOADER"] = 9] = "RESET_BOOTLOADER";
27
+ NcpResetCode[NcpResetCode["RESET_SOFTWARE"] = 11] = "RESET_SOFTWARE";
28
+ NcpResetCode[NcpResetCode["ERROR_EXCEEDED_MAXIMUM_ACK_TIMEOUT_COUNT"] = 81] = "ERROR_EXCEEDED_MAXIMUM_ACK_TIMEOUT_COUNT";
29
+ NcpResetCode[NcpResetCode["ERROR_UNKNOWN_EM3XX_ERROR"] = 128] = "ERROR_UNKNOWN_EM3XX_ERROR";
30
+ })(NcpResetCode || (NcpResetCode = {}));
31
+ class SerialDriver extends events_1.EventEmitter {
32
+ serialPort;
33
+ socketPort;
34
+ writer;
35
+ parser;
36
+ initialized;
37
+ portType;
38
+ sendSeq = 0; // next frame number to send
39
+ recvSeq = 0; // next frame number to receive
40
+ ackSeq = 0; // next number after the last accepted frame
41
+ rejectCondition = false;
42
+ waitress;
43
+ queue;
44
+ constructor() {
45
+ super();
46
+ this.initialized = false;
47
+ this.queue = new utils_1.Queue(1);
48
+ this.waitress = new utils_1.Waitress(this.waitressValidator, this.waitressTimeoutFormatter);
49
+ }
50
+ async connect(options) {
51
+ this.portType = socketPortUtils_1.default.isTcpPath(options.path) ? 'socket' : 'serial';
52
+ if (this.portType === 'serial') {
53
+ await this.openSerialPort(options.path, options.baudRate, options.rtscts);
54
+ }
55
+ else {
56
+ await this.openSocketPort(options.path);
57
+ }
58
+ }
59
+ async openSerialPort(path, baudRate, rtscts) {
60
+ const options = {
61
+ path,
62
+ baudRate: typeof baudRate === 'number' ? baudRate : 115200,
63
+ rtscts: typeof rtscts === 'boolean' ? rtscts : false,
64
+ autoOpen: false,
65
+ parity: 'none',
66
+ stopBits: 1,
67
+ xon: false,
68
+ xoff: false,
69
+ };
70
+ // enable software flow control if RTS/CTS not enabled in config
71
+ if (!options.rtscts) {
72
+ debug(`RTS/CTS config is off, enabling software flow control.`);
73
+ options.xon = true;
74
+ options.xoff = true;
75
+ }
76
+ debug(`Opening SerialPort with ${JSON.stringify(options)}`);
77
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
78
+ // @ts-ignore
79
+ this.serialPort = new serialPort_1.SerialPort(options);
80
+ this.writer = new writer_1.Writer();
81
+ this.writer.pipe(this.serialPort);
82
+ this.parser = new parser_1.Parser(!options.rtscts); // flag unhandled XON/XOFF in logs if software flow control enabled
83
+ this.serialPort.pipe(this.parser);
84
+ this.parser.on('parsed', this.onParsed.bind(this));
85
+ try {
86
+ await this.serialPort.asyncOpen();
87
+ debug('Serialport opened');
88
+ this.serialPort.once('close', this.onPortClose.bind(this));
89
+ this.serialPort.on('error', this.onPortError.bind(this));
90
+ // reset
91
+ await this.reset();
92
+ this.initialized = true;
93
+ }
94
+ catch (error) {
95
+ this.initialized = false;
96
+ if (this.serialPort.isOpen) {
97
+ this.serialPort.close();
98
+ }
99
+ throw error;
100
+ }
101
+ }
102
+ async openSocketPort(path) {
103
+ const info = socketPortUtils_1.default.parseTcpPath(path);
104
+ debug(`Opening TCP socket with ${info.host}:${info.port}`);
105
+ this.socketPort = new net_1.default.Socket();
106
+ this.socketPort.setNoDelay(true);
107
+ this.socketPort.setKeepAlive(true, 15000);
108
+ this.writer = new writer_1.Writer();
109
+ this.writer.pipe(this.socketPort);
110
+ this.parser = new parser_1.Parser();
111
+ this.socketPort.pipe(this.parser);
112
+ this.parser.on('parsed', this.onParsed.bind(this));
113
+ return new Promise((resolve, reject) => {
114
+ const openError = (err) => {
115
+ this.initialized = false;
116
+ reject(err);
117
+ };
118
+ this.socketPort.on('connect', () => {
119
+ debug('Socket connected');
120
+ });
121
+ this.socketPort.on('ready', async () => {
122
+ debug('Socket ready');
123
+ this.socketPort.removeListener('error', openError);
124
+ this.socketPort.once('close', this.onPortClose.bind(this));
125
+ this.socketPort.on('error', this.onPortError.bind(this));
126
+ // reset
127
+ await this.reset();
128
+ this.initialized = true;
129
+ resolve();
130
+ });
131
+ this.socketPort.once('error', openError);
132
+ this.socketPort.connect(info.port, info.host);
133
+ });
134
+ }
135
+ async onParsed(frame) {
136
+ const rejectCondition = this.rejectCondition;
137
+ try {
138
+ frame.checkCRC();
139
+ /* Frame receive handler */
140
+ switch (frame.type) {
141
+ case frame_1.FrameType.DATA:
142
+ this.handleDATA(frame);
143
+ break;
144
+ case frame_1.FrameType.ACK:
145
+ this.handleACK(frame);
146
+ break;
147
+ case frame_1.FrameType.NAK:
148
+ this.handleNAK(frame);
149
+ break;
150
+ case frame_1.FrameType.RST:
151
+ this.handleRST(frame);
152
+ break;
153
+ case frame_1.FrameType.RSTACK:
154
+ this.handleRSTACK(frame);
155
+ break;
156
+ case frame_1.FrameType.ERROR:
157
+ await this.handleError(frame);
158
+ break;
159
+ default:
160
+ this.rejectCondition = true;
161
+ debug(`UNKNOWN FRAME RECEIVED: ${frame}`);
162
+ }
163
+ }
164
+ catch (error) {
165
+ this.rejectCondition = true;
166
+ debug(error);
167
+ debug(`Error while parsing to NpiFrame '${error.stack}'`);
168
+ }
169
+ // We send NAK only if the rejectCondition was set in the current processing
170
+ if (!rejectCondition && this.rejectCondition) {
171
+ // send NAK
172
+ this.writer.sendNAK(this.recvSeq);
173
+ }
174
+ }
175
+ handleDATA(frame) {
176
+ /* Data frame receive handler */
177
+ const frmNum = (frame.control & 0x70) >> 4;
178
+ const reTx = (frame.control & 0x08) >> 3;
179
+ debug(`<-- DATA (${frmNum},${frame.control & 0x07},${reTx}): ${frame}`);
180
+ // Expected package {recvSeq}, but received {frmNum}
181
+ // This happens when the chip sends us a reTx packet, but we are waiting for the next one
182
+ if (this.recvSeq != frmNum) {
183
+ if (reTx) {
184
+ // if the reTx flag is set, then this is a packet replay
185
+ debug(`Unexpected DATA packet sequence ${frmNum} | ${this.recvSeq}: packet replay`);
186
+ }
187
+ else {
188
+ // otherwise, the sequence of packets is out of order - skip or send NAK is needed
189
+ debug(`Unexpected DATA packet sequence ${frmNum} | ${this.recvSeq}: reject condition`);
190
+ this.rejectCondition = true;
191
+ return;
192
+ }
193
+ }
194
+ this.rejectCondition = false;
195
+ this.recvSeq = (frmNum + 1) & 7; // next
196
+ debug(`--> ACK (${this.recvSeq})`);
197
+ this.writer.sendACK(this.recvSeq);
198
+ const handled = this.handleACK(frame);
199
+ if (reTx && !handled) {
200
+ // if the package is resent and did not expect it,
201
+ // then will skip it - already processed it earlier
202
+ debug(`Skipping the packet as repeated (${this.recvSeq})`);
203
+ return;
204
+ }
205
+ const data = frame.buffer.subarray(1, -3);
206
+ this.emit('received', frame_1.Frame.makeRandomizedBuffer(data));
207
+ }
208
+ handleACK(frame) {
209
+ /* Handle an acknowledgement frame */
210
+ // next number after the last accepted frame
211
+ this.ackSeq = frame.control & 0x07;
212
+ debug(`<-- ACK (${this.ackSeq}): ${frame}`);
213
+ const handled = this.waitress.resolve({ sequence: this.ackSeq });
214
+ if (!handled && this.sendSeq !== this.ackSeq) {
215
+ // Packet confirmation received for {ackSeq}, but was expected {sendSeq}
216
+ // This happens when the chip has not yet received of the packet {sendSeq} from us,
217
+ // but has already sent us the next one.
218
+ debug(`Unexpected packet sequence ${this.ackSeq} | ${this.sendSeq}`);
219
+ }
220
+ return handled;
221
+ }
222
+ handleNAK(frame) {
223
+ /* Handle negative acknowledgment frame */
224
+ const nakNum = frame.control & 0x07;
225
+ debug(`<-- NAK (${nakNum}): ${frame}`);
226
+ const handled = this.waitress.reject({ sequence: nakNum }, 'Recv NAK frame');
227
+ if (!handled) {
228
+ // send NAK
229
+ debug(`NAK Unexpected packet sequence ${nakNum}`);
230
+ }
231
+ else {
232
+ debug(`NAK Expected packet sequence ${nakNum}`);
233
+ }
234
+ }
235
+ handleRST(frame) {
236
+ debug(`<-- RST: ${frame}`);
237
+ }
238
+ handleRSTACK(frame) {
239
+ /* Reset acknowledgement frame receive handler */
240
+ let code;
241
+ this.rejectCondition = false;
242
+ debug(`<-- RSTACK ${frame}`);
243
+ try {
244
+ code = NcpResetCode[frame.buffer[2]];
245
+ }
246
+ catch (e) {
247
+ code = NcpResetCode.ERROR_UNKNOWN_EM3XX_ERROR;
248
+ }
249
+ debug(`RSTACK Version: ${frame.buffer[1]} Reason: ${code.toString()} frame: ${frame}`);
250
+ if (NcpResetCode[code].toString() !== NcpResetCode.RESET_SOFTWARE.toString()) {
251
+ return;
252
+ }
253
+ this.waitress.resolve({ sequence: -1 });
254
+ }
255
+ async handleError(frame) {
256
+ debug(`<-- Error ${frame}`);
257
+ try {
258
+ // send reset
259
+ await this.reset();
260
+ }
261
+ catch (error) {
262
+ debug(`Failed to reset on Error Frame: ${error}`);
263
+ }
264
+ }
265
+ async reset() {
266
+ debug('Uart reseting');
267
+ this.parser.reset();
268
+ this.queue.clear();
269
+ this.sendSeq = 0;
270
+ this.recvSeq = 0;
271
+ return this.queue.execute(async () => {
272
+ try {
273
+ debug(`--> Write reset`);
274
+ const waiter = this.waitFor(-1, 10000);
275
+ this.rejectCondition = false;
276
+ this.writer.sendReset();
277
+ debug(`-?- waiting reset`);
278
+ await waiter.start().promise;
279
+ debug(`-+- waiting reset success`);
280
+ await (0, wait_1.default)(2000);
281
+ }
282
+ catch (e) {
283
+ debug(`--> Error: ${e}`);
284
+ this.emit('reset');
285
+ throw new Error(`Reset error: ${e}`);
286
+ }
287
+ });
288
+ }
289
+ async close(emitClose) {
290
+ debug('Closing UART');
291
+ this.queue.clear();
292
+ if (this.initialized) {
293
+ this.initialized = false;
294
+ if (this.portType === 'serial') {
295
+ try {
296
+ await this.serialPort.asyncFlushAndClose();
297
+ }
298
+ catch (error) {
299
+ if (emitClose) {
300
+ this.emit('close');
301
+ }
302
+ throw error;
303
+ }
304
+ }
305
+ else {
306
+ this.socketPort.destroy();
307
+ }
308
+ }
309
+ if (emitClose) {
310
+ this.emit('close');
311
+ }
312
+ }
313
+ onPortError(error) {
314
+ debug(`Port error: ${error}`);
315
+ }
316
+ onPortClose(err) {
317
+ debug(`Port closed. Error? ${err}`);
318
+ // on error: serialport passes an Error object (in case of disconnect)
319
+ // net.Socket passes a boolean (in case of a transmission error)
320
+ // try to reset instead of failing immediately
321
+ if (err != null && err !== false) {
322
+ this.emit('reset');
323
+ }
324
+ else {
325
+ this.initialized = false;
326
+ this.emit('close');
327
+ }
328
+ }
329
+ isInitialized() {
330
+ return this.initialized;
331
+ }
332
+ async sendDATA(data) {
333
+ const seq = this.sendSeq;
334
+ this.sendSeq = ((seq + 1) % 8); // next
335
+ const nextSeq = this.sendSeq;
336
+ const ackSeq = this.recvSeq;
337
+ return this.queue.execute(async () => {
338
+ const randData = frame_1.Frame.makeRandomizedBuffer(data);
339
+ try {
340
+ const waiter = this.waitFor(nextSeq);
341
+ debug(`--> DATA (${seq},${ackSeq},0): ${data.toString('hex')}`);
342
+ this.writer.sendData(randData, seq, 0, ackSeq);
343
+ debug(`-?- waiting (${nextSeq})`);
344
+ await waiter.start().promise;
345
+ debug(`-+- waiting (${nextSeq}) success`);
346
+ }
347
+ catch (e1) {
348
+ debug(`--> Error: ${e1}`);
349
+ debug(`-!- break waiting (${nextSeq})`);
350
+ debug(`Can't send DATA frame (${seq},${ackSeq},0): ${data.toString('hex')}`);
351
+ try {
352
+ await (0, utils_1.Wait)(500);
353
+ const waiter = this.waitFor(nextSeq);
354
+ debug(`->> DATA (${seq},${ackSeq},1): ${data.toString('hex')}`);
355
+ this.writer.sendData(randData, seq, 1, ackSeq);
356
+ debug(`-?- rewaiting (${nextSeq})`);
357
+ await waiter.start().promise;
358
+ debug(`-+- rewaiting (${nextSeq}) success`);
359
+ }
360
+ catch (e2) {
361
+ debug(`--> Error: ${e2}`);
362
+ debug(`-!- break rewaiting (${nextSeq})`);
363
+ debug(`Can't resend DATA frame (${seq},${ackSeq},1): ${data.toString('hex')}`);
364
+ if (this.initialized) {
365
+ this.emit('reset');
366
+ }
367
+ throw new Error(`sendDATA error: try 1: ${e1}, try 2: ${e2}`);
368
+ }
369
+ }
370
+ });
371
+ }
372
+ waitFor(sequence, timeout = 4000) {
373
+ return this.waitress.waitFor({ sequence }, timeout);
374
+ }
375
+ waitressTimeoutFormatter(matcher, timeout) {
376
+ return `${JSON.stringify(matcher)} after ${timeout}ms`;
377
+ }
378
+ waitressValidator(payload, matcher) {
379
+ return (payload.sequence === matcher.sequence);
380
+ }
381
+ }
382
+ exports.SerialDriver = SerialDriver;
369
383
  //# sourceMappingURL=uart.js.map