zigbee-herdsman 0.55.5 → 0.56.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/.github/workflows/typedoc.yaml +38 -0
  2. package/.github/workflows/update_deps.yml +1 -1
  3. package/.prettierrc +18 -1
  4. package/.release-please-manifest.json +1 -1
  5. package/CHANGELOG.md +31 -0
  6. package/README.md +1 -1
  7. package/dist/adapter/adapter.d.ts +16 -8
  8. package/dist/adapter/adapter.d.ts.map +1 -1
  9. package/dist/adapter/adapter.js +5 -3
  10. package/dist/adapter/adapter.js.map +1 -1
  11. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +11 -11
  12. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  13. package/dist/adapter/deconz/adapter/deconzAdapter.js +103 -106
  14. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  15. package/dist/adapter/deconz/adapter/index.d.ts.map +1 -1
  16. package/dist/adapter/deconz/adapter/index.js +0 -2
  17. package/dist/adapter/deconz/adapter/index.js.map +1 -1
  18. package/dist/adapter/deconz/driver/driver.d.ts +13 -13
  19. package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
  20. package/dist/adapter/deconz/driver/driver.js +126 -128
  21. package/dist/adapter/deconz/driver/driver.js.map +1 -1
  22. package/dist/adapter/deconz/driver/frame.d.ts.map +1 -1
  23. package/dist/adapter/deconz/driver/frame.js +1 -1
  24. package/dist/adapter/deconz/driver/frame.js.map +1 -1
  25. package/dist/adapter/deconz/driver/frameParser.d.ts +3 -1
  26. package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -1
  27. package/dist/adapter/deconz/driver/frameParser.js +52 -40
  28. package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
  29. package/dist/adapter/deconz/driver/parser.d.ts +3 -4
  30. package/dist/adapter/deconz/driver/parser.d.ts.map +1 -1
  31. package/dist/adapter/deconz/driver/parser.js +4 -29
  32. package/dist/adapter/deconz/driver/parser.js.map +1 -1
  33. package/dist/adapter/deconz/driver/writer.d.ts.map +1 -1
  34. package/dist/adapter/deconz/driver/writer.js +2 -2
  35. package/dist/adapter/deconz/driver/writer.js.map +1 -1
  36. package/dist/adapter/ember/adapter/emberAdapter.d.ts +11 -21
  37. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
  38. package/dist/adapter/ember/adapter/emberAdapter.js +77 -123
  39. package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
  40. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
  41. package/dist/adapter/ember/adapter/oneWaitress.js +6 -3
  42. package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
  43. package/dist/adapter/ember/adapter/tokensManager.d.ts +1 -1
  44. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
  45. package/dist/adapter/ember/adapter/tokensManager.js +3 -3
  46. package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
  47. package/dist/adapter/ember/enums.d.ts +22 -0
  48. package/dist/adapter/ember/enums.d.ts.map +1 -1
  49. package/dist/adapter/ember/enums.js +24 -1
  50. package/dist/adapter/ember/enums.js.map +1 -1
  51. package/dist/adapter/ember/ezsp/buffalo.d.ts +1 -3
  52. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -1
  53. package/dist/adapter/ember/ezsp/buffalo.js +16 -37
  54. package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
  55. package/dist/adapter/ember/ezsp/ezsp.d.ts +25 -41
  56. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
  57. package/dist/adapter/ember/ezsp/ezsp.js +67 -72
  58. package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
  59. package/dist/adapter/ember/types.d.ts +16 -23
  60. package/dist/adapter/ember/types.d.ts.map +1 -1
  61. package/dist/adapter/ember/uart/ash.d.ts +6 -22
  62. package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
  63. package/dist/adapter/ember/uart/ash.js +100 -117
  64. package/dist/adapter/ember/uart/ash.js.map +1 -1
  65. package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
  66. package/dist/adapter/ember/uart/parser.js +1 -1
  67. package/dist/adapter/ember/uart/parser.js.map +1 -1
  68. package/dist/adapter/ember/uart/queues.d.ts +9 -9
  69. package/dist/adapter/ember/uart/queues.d.ts.map +1 -1
  70. package/dist/adapter/ember/uart/queues.js +27 -26
  71. package/dist/adapter/ember/uart/queues.js.map +1 -1
  72. package/dist/adapter/ember/uart/writer.d.ts.map +1 -1
  73. package/dist/adapter/ember/uart/writer.js +1 -1
  74. package/dist/adapter/ember/uart/writer.js.map +1 -1
  75. package/dist/adapter/ember/utils/initters.d.ts.map +1 -1
  76. package/dist/adapter/ember/utils/initters.js +1 -1
  77. package/dist/adapter/ember/utils/initters.js.map +1 -1
  78. package/dist/adapter/events.d.ts +1 -9
  79. package/dist/adapter/events.d.ts.map +1 -1
  80. package/dist/adapter/events.js +0 -10
  81. package/dist/adapter/events.js.map +1 -1
  82. package/dist/adapter/ezsp/adapter/backup.d.ts +1 -1
  83. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
  84. package/dist/adapter/ezsp/adapter/backup.js +33 -10
  85. package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
  86. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +7 -7
  87. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  88. package/dist/adapter/ezsp/adapter/ezspAdapter.js +35 -45
  89. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  90. package/dist/adapter/ezsp/adapter/index.d.ts.map +1 -1
  91. package/dist/adapter/ezsp/adapter/index.js +0 -2
  92. package/dist/adapter/ezsp/adapter/index.js.map +1 -1
  93. package/dist/adapter/ezsp/driver/commands.d.ts +2 -2
  94. package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
  95. package/dist/adapter/ezsp/driver/commands.js +112 -112
  96. package/dist/adapter/ezsp/driver/commands.js.map +1 -1
  97. package/dist/adapter/ezsp/driver/driver.d.ts +2 -3
  98. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
  99. package/dist/adapter/ezsp/driver/driver.js +21 -13
  100. package/dist/adapter/ezsp/driver/driver.js.map +1 -1
  101. package/dist/adapter/ezsp/driver/ezsp.d.ts +3 -3
  102. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
  103. package/dist/adapter/ezsp/driver/ezsp.js +8 -10
  104. package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
  105. package/dist/adapter/ezsp/driver/frame.d.ts.map +1 -1
  106. package/dist/adapter/ezsp/driver/frame.js +1 -1
  107. package/dist/adapter/ezsp/driver/frame.js.map +1 -1
  108. package/dist/adapter/ezsp/driver/index.d.ts.map +1 -1
  109. package/dist/adapter/ezsp/driver/index.js +0 -1
  110. package/dist/adapter/ezsp/driver/index.js.map +1 -1
  111. package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
  112. package/dist/adapter/ezsp/driver/multicast.js +3 -3
  113. package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
  114. package/dist/adapter/ezsp/driver/parser.d.ts +1 -2
  115. package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -1
  116. package/dist/adapter/ezsp/driver/parser.js +3 -9
  117. package/dist/adapter/ezsp/driver/parser.js.map +1 -1
  118. package/dist/adapter/ezsp/driver/types/basic.d.ts.map +1 -1
  119. package/dist/adapter/ezsp/driver/types/basic.js +0 -1
  120. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
  121. package/dist/adapter/ezsp/driver/types/index.d.ts +4 -4
  122. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
  123. package/dist/adapter/ezsp/driver/types/index.js +85 -86
  124. package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
  125. package/dist/adapter/ezsp/driver/types/named.js +1 -3
  126. package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
  127. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
  128. package/dist/adapter/ezsp/driver/types/struct.js +63 -3
  129. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
  130. package/dist/adapter/ezsp/driver/uart.d.ts +2 -3
  131. package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
  132. package/dist/adapter/ezsp/driver/uart.js +9 -13
  133. package/dist/adapter/ezsp/driver/uart.js.map +1 -1
  134. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +3 -1
  135. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +1 -1
  136. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +1 -2
  137. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
  138. package/dist/adapter/ezsp/driver/utils/index.d.ts +1 -15
  139. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
  140. package/dist/adapter/ezsp/driver/utils/index.js +2 -41
  141. package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
  142. package/dist/adapter/ezsp/driver/writer.d.ts.map +1 -1
  143. package/dist/adapter/ezsp/driver/writer.js +1 -1
  144. package/dist/adapter/ezsp/driver/writer.js.map +1 -1
  145. package/dist/adapter/serialPort.d.ts +7 -2
  146. package/dist/adapter/serialPort.d.ts.map +1 -1
  147. package/dist/adapter/serialPort.js +6 -2
  148. package/dist/adapter/serialPort.js.map +1 -1
  149. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +1 -1
  150. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
  151. package/dist/adapter/z-stack/adapter/adapter-backup.js +28 -21
  152. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  153. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +1 -1
  154. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +1 -1
  155. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +27 -14
  156. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
  157. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  158. package/dist/adapter/z-stack/adapter/manager.js +10 -10
  159. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  160. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +7 -7
  161. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  162. package/dist/adapter/z-stack/adapter/zStackAdapter.js +40 -31
  163. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  164. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +1 -1
  165. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +1 -3
  166. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -1
  167. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +1 -1
  168. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +5 -0
  169. package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +1 -1
  170. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +1 -2
  171. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +1 -1
  172. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +1 -1
  173. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +5 -0
  174. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +1 -1
  175. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +1 -2
  176. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +1 -1
  177. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +1 -1
  178. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +5 -0
  179. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +1 -1
  180. package/dist/adapter/z-stack/structs/entries/channel-list.js +1 -2
  181. package/dist/adapter/z-stack/structs/entries/channel-list.js.map +1 -1
  182. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +1 -1
  183. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +1 -1
  184. package/dist/adapter/z-stack/structs/entries/has-configured.js +12 -6
  185. package/dist/adapter/z-stack/structs/entries/has-configured.js.map +1 -1
  186. package/dist/adapter/z-stack/structs/entries/nib.d.ts +1 -1
  187. package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +1 -1
  188. package/dist/adapter/z-stack/structs/entries/nib.js +6 -2
  189. package/dist/adapter/z-stack/structs/entries/nib.js.map +1 -1
  190. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +1 -1
  191. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +1 -1
  192. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +9 -3
  193. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +1 -1
  194. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +1 -1
  195. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +1 -1
  196. package/dist/adapter/z-stack/structs/entries/nwk-key.js +9 -3
  197. package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +1 -1
  198. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +1 -2
  199. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +1 -1
  200. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +1 -2
  201. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +1 -1
  202. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +1 -1
  203. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +5 -0
  204. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +1 -1
  205. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +1 -2
  206. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -1
  207. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +1 -1
  208. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +5 -0
  209. package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +1 -1
  210. package/dist/adapter/z-stack/structs/struct.d.ts.map +1 -1
  211. package/dist/adapter/z-stack/structs/struct.js +16 -4
  212. package/dist/adapter/z-stack/structs/struct.js.map +1 -1
  213. package/dist/adapter/z-stack/structs/table.d.ts +1 -1
  214. package/dist/adapter/z-stack/structs/table.d.ts.map +1 -1
  215. package/dist/adapter/z-stack/structs/table.js +17 -13
  216. package/dist/adapter/z-stack/structs/table.js.map +1 -1
  217. package/dist/adapter/z-stack/unpi/frame.d.ts +3 -3
  218. package/dist/adapter/z-stack/unpi/frame.d.ts.map +1 -1
  219. package/dist/adapter/z-stack/unpi/frame.js +1 -1
  220. package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
  221. package/dist/adapter/z-stack/unpi/parser.js +1 -1
  222. package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
  223. package/dist/adapter/z-stack/utils/network-options.d.ts.map +1 -1
  224. package/dist/adapter/z-stack/utils/network-options.js +1 -2
  225. package/dist/adapter/z-stack/utils/network-options.js.map +1 -1
  226. package/dist/adapter/z-stack/znp/znp.d.ts +5 -6
  227. package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
  228. package/dist/adapter/z-stack/znp/znp.js +21 -28
  229. package/dist/adapter/z-stack/znp/znp.js.map +1 -1
  230. package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +1 -1
  231. package/dist/adapter/z-stack/znp/zpiObject.js +2 -2
  232. package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
  233. package/dist/adapter/zigate/adapter/index.js +1 -2
  234. package/dist/adapter/zigate/adapter/index.js.map +1 -1
  235. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +9 -9
  236. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  237. package/dist/adapter/zigate/adapter/zigateAdapter.js +92 -118
  238. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  239. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +1 -1
  240. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
  241. package/dist/adapter/zigate/driver/buffaloZiGate.js +4 -4
  242. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
  243. package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -1
  244. package/dist/adapter/zigate/driver/commandType.js +3 -2
  245. package/dist/adapter/zigate/driver/commandType.js.map +1 -1
  246. package/dist/adapter/zigate/driver/constants.d.ts +7 -1
  247. package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
  248. package/dist/adapter/zigate/driver/constants.js +1 -2
  249. package/dist/adapter/zigate/driver/constants.js.map +1 -1
  250. package/dist/adapter/zigate/driver/frame.d.ts.map +1 -1
  251. package/dist/adapter/zigate/driver/frame.js +2 -3
  252. package/dist/adapter/zigate/driver/frame.js.map +1 -1
  253. package/dist/adapter/zigate/driver/messageType.d.ts.map +1 -1
  254. package/dist/adapter/zigate/driver/messageType.js +1 -2
  255. package/dist/adapter/zigate/driver/messageType.js.map +1 -1
  256. package/dist/adapter/zigate/driver/ziGateObject.d.ts +5 -5
  257. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
  258. package/dist/adapter/zigate/driver/ziGateObject.js +9 -10
  259. package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
  260. package/dist/adapter/zigate/driver/zigate.d.ts +7 -10
  261. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
  262. package/dist/adapter/zigate/driver/zigate.js +35 -40
  263. package/dist/adapter/zigate/driver/zigate.js.map +1 -1
  264. package/dist/controller/controller.d.ts +18 -6
  265. package/dist/controller/controller.d.ts.map +1 -1
  266. package/dist/controller/controller.js +95 -103
  267. package/dist/controller/controller.js.map +1 -1
  268. package/dist/controller/events.d.ts +2 -13
  269. package/dist/controller/events.d.ts.map +1 -1
  270. package/dist/controller/events.js +0 -13
  271. package/dist/controller/events.js.map +1 -1
  272. package/dist/controller/greenPower.d.ts +6 -2
  273. package/dist/controller/greenPower.d.ts.map +1 -1
  274. package/dist/controller/greenPower.js +26 -16
  275. package/dist/controller/greenPower.js.map +1 -1
  276. package/dist/controller/helpers/request.d.ts +1 -1
  277. package/dist/controller/helpers/request.d.ts.map +1 -1
  278. package/dist/controller/helpers/request.js.map +1 -1
  279. package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
  280. package/dist/controller/helpers/requestQueue.js +1 -1
  281. package/dist/controller/helpers/requestQueue.js.map +1 -1
  282. package/dist/controller/helpers/zclFrameConverter.d.ts +2 -2
  283. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  284. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  285. package/dist/controller/index.d.ts.map +1 -1
  286. package/dist/controller/index.js.map +1 -1
  287. package/dist/controller/model/device.d.ts +31 -29
  288. package/dist/controller/model/device.d.ts.map +1 -1
  289. package/dist/controller/model/device.js +42 -30
  290. package/dist/controller/model/device.js.map +1 -1
  291. package/dist/controller/model/endpoint.d.ts +5 -2
  292. package/dist/controller/model/endpoint.d.ts.map +1 -1
  293. package/dist/controller/model/endpoint.js +96 -97
  294. package/dist/controller/model/endpoint.js.map +1 -1
  295. package/dist/controller/model/entity.d.ts +5 -3
  296. package/dist/controller/model/entity.d.ts.map +1 -1
  297. package/dist/controller/model/entity.js +2 -2
  298. package/dist/controller/model/entity.js.map +1 -1
  299. package/dist/controller/model/group.d.ts +1 -0
  300. package/dist/controller/model/group.d.ts.map +1 -1
  301. package/dist/controller/model/group.js +36 -28
  302. package/dist/controller/model/group.js.map +1 -1
  303. package/dist/controller/touchlink.d.ts.map +1 -1
  304. package/dist/controller/touchlink.js +6 -5
  305. package/dist/controller/touchlink.js.map +1 -1
  306. package/dist/controller/tstype.d.ts +1 -4
  307. package/dist/controller/tstype.d.ts.map +1 -1
  308. package/dist/controller/tstype.js +0 -5
  309. package/dist/controller/tstype.js.map +1 -1
  310. package/dist/models/backup-storage-unified.d.ts +2 -2
  311. package/dist/models/backup-storage-unified.d.ts.map +1 -1
  312. package/dist/models/backup.d.ts +1 -1
  313. package/dist/models/backup.d.ts.map +1 -1
  314. package/dist/utils/backup.d.ts.map +1 -1
  315. package/dist/utils/backup.js +22 -55
  316. package/dist/utils/backup.js.map +1 -1
  317. package/dist/utils/index.d.ts +2 -3
  318. package/dist/utils/index.d.ts.map +1 -1
  319. package/dist/utils/index.js +3 -5
  320. package/dist/utils/index.js.map +1 -1
  321. package/dist/utils/logger.d.ts +1 -1
  322. package/dist/utils/logger.d.ts.map +1 -1
  323. package/dist/utils/queue.d.ts.map +1 -1
  324. package/dist/utils/queue.js +8 -8
  325. package/dist/utils/queue.js.map +1 -1
  326. package/dist/utils/realpathSync.d.ts.map +1 -1
  327. package/dist/utils/realpathSync.js +1 -1
  328. package/dist/utils/realpathSync.js.map +1 -1
  329. package/dist/utils/utils.d.ts +5 -0
  330. package/dist/utils/utils.d.ts.map +1 -0
  331. package/dist/utils/utils.js +24 -0
  332. package/dist/utils/utils.js.map +1 -0
  333. package/dist/zspec/consts.d.ts +1 -0
  334. package/dist/zspec/consts.d.ts.map +1 -1
  335. package/dist/zspec/consts.js +2 -1
  336. package/dist/zspec/consts.js.map +1 -1
  337. package/dist/zspec/index.js +0 -10
  338. package/dist/zspec/index.js.map +1 -1
  339. package/dist/zspec/utils.d.ts.map +1 -1
  340. package/dist/zspec/utils.js +7 -1
  341. package/dist/zspec/utils.js.map +1 -1
  342. package/dist/zspec/zcl/buffaloZcl.js +13 -13
  343. package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
  344. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
  345. package/dist/zspec/zcl/definition/cluster.js +1 -1
  346. package/dist/zspec/zcl/definition/cluster.js.map +1 -1
  347. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
  348. package/dist/zspec/zcl/definition/foundation.js +1 -1
  349. package/dist/zspec/zcl/definition/foundation.js.map +1 -1
  350. package/dist/zspec/zcl/definition/tstype.d.ts +1 -1
  351. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
  352. package/dist/zspec/zcl/utils.d.ts +1 -1
  353. package/dist/zspec/zcl/utils.d.ts.map +1 -1
  354. package/dist/zspec/zcl/utils.js +21 -20
  355. package/dist/zspec/zcl/utils.js.map +1 -1
  356. package/dist/zspec/zcl/zclFrame.d.ts +4 -4
  357. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
  358. package/dist/zspec/zcl/zclFrame.js +10 -17
  359. package/dist/zspec/zcl/zclFrame.js.map +1 -1
  360. package/dist/zspec/zcl/zclHeader.d.ts +2 -2
  361. package/dist/zspec/zcl/zclHeader.d.ts.map +1 -1
  362. package/dist/zspec/zcl/zclHeader.js +3 -3
  363. package/dist/zspec/zcl/zclHeader.js.map +1 -1
  364. package/dist/zspec/zdo/buffaloZdo.d.ts +2 -2
  365. package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -1
  366. package/dist/zspec/zdo/buffaloZdo.js +12 -8
  367. package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
  368. package/dist/zspec/zdo/definition/tstypes.d.ts +1 -1
  369. package/dist/zspec/zdo/definition/tstypes.d.ts.map +1 -1
  370. package/eslint.config.mjs +32 -0
  371. package/package.json +12 -10
  372. package/tsconfig.json +1 -0
  373. package/.eslintignore +0 -3
  374. package/dist/utils/assertString.d.ts +0 -3
  375. package/dist/utils/assertString.d.ts.map +0 -1
  376. package/dist/utils/assertString.js +0 -9
  377. package/dist/utils/assertString.js.map +0 -1
  378. package/dist/utils/isNumberArray.d.ts +0 -3
  379. package/dist/utils/isNumberArray.d.ts.map +0 -1
  380. package/dist/utils/isNumberArray.js +0 -7
  381. package/dist/utils/isNumberArray.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
+ /* istanbul ignore file */
2
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
5
  };
5
6
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.UartAsh = exports.AshEvents = exports.CONFIG_TX_K = void 0;
7
- /* istanbul ignore file */
7
+ exports.UartAsh = exports.CONFIG_TX_K = void 0;
8
8
  const net_1 = require("net");
9
9
  const stream_1 = require("stream");
10
10
  const utils_1 = require("../../../utils");
@@ -78,13 +78,6 @@ const CONFIG_NR_HIGH_LIMIT = 12; // RX_FREE_HW
78
78
  const CONFIG_NR_TIME = 480;
79
79
  /** Read/write max bytes count at stream level */
80
80
  const CONFIG_HIGHWATER_MARK = 256;
81
- var AshEvents;
82
- (function (AshEvents) {
83
- /** When the ASH protocol detects a fatal error (bubbles up to restart adapter). */
84
- AshEvents["FATAL_ERROR"] = "fatalError";
85
- /** When a frame has been parsed and queued in the rxQueue. */
86
- AshEvents["FRAME"] = "frame";
87
- })(AshEvents || (exports.AshEvents = AshEvents = {}));
88
81
  /**
89
82
  * ASH Protocol handler.
90
83
  */
@@ -184,10 +177,10 @@ class UartAsh extends stream_1.EventEmitter {
184
177
  constructor(options) {
185
178
  super();
186
179
  this.portOptions = options;
187
- this.serialPort = null;
188
- this.socketPort = null;
189
- this.writer = null;
190
- this.parser = null;
180
+ this.serialPort = undefined;
181
+ this.socketPort = undefined;
182
+ this.writer = new writer_1.AshWriter({ highWaterMark: CONFIG_HIGHWATER_MARK });
183
+ this.parser = new parser_1.AshParser({ readableHighWaterMark: CONFIG_HIGHWATER_MARK });
191
184
  this.txPool = new Array(consts_1.TX_POOL_BUFFERS);
192
185
  this.txQueue = new queues_1.EzspQueue();
193
186
  this.reTxQueue = new queues_1.EzspQueue();
@@ -195,59 +188,6 @@ class UartAsh extends stream_1.EventEmitter {
195
188
  this.rxPool = new Array(consts_1.EZSP_HOST_RX_POOL_SIZE);
196
189
  this.rxQueue = new queues_1.EzspQueue();
197
190
  this.rxFree = new queues_1.EzspFreeList();
198
- }
199
- /**
200
- * Check if port is valid, open, and not closing.
201
- */
202
- get portOpen() {
203
- if (this.closing) {
204
- return false;
205
- }
206
- if (socketPortUtils_1.default.isTcpPath(this.portOptions.path)) {
207
- return this.socketPort && !this.socketPort.closed;
208
- }
209
- else {
210
- return this.serialPort && this.serialPort.isOpen;
211
- }
212
- }
213
- /**
214
- * Get max wait time before response is considered timed out.
215
- */
216
- get responseTimeout() {
217
- return consts_1.ASH_MAX_TIMEOUTS * CONFIG_ACK_TIME_MAX;
218
- }
219
- /**
220
- * Indicates if the host is in the Connected state.
221
- * If not, the host and NCP cannot exchange DATA frames.
222
- * Note that this function does not actively confirm that communication with NCP is healthy, but simply returns its last known status.
223
- *
224
- * @returns
225
- * - true - host and NCP can exchange DATA frames
226
- * - false - host and NCP cannot now exchange DATA frames
227
- */
228
- get connected() {
229
- return (this.flags & Flag.CONNECTED) !== 0;
230
- }
231
- /**
232
- * Has nothing to do...
233
- */
234
- get idle() {
235
- return (!this.decodeInProgress && // don't have a partial frame
236
- // && (this.serial.readAvailable() === EzspStatus.NO_RX_DATA) // no rx data
237
- this.rxQueue.empty && // no rx frames to process
238
- !this.ncpHasCallbacks && // no pending callbacks
239
- this.flags === Flag.CONNECTED && // no pending ACKs, NAKs, etc.
240
- this.ackTx === this.frmRx && // do not need to send an ACK
241
- this.ackRx === this.frmTx && // not waiting to receive an ACK
242
- this.sendState === SendState.IDLE && // nothing being transmitted now
243
- this.txQueue.empty // nothing waiting to transmit
244
- // && this.serial.outputIsIdle() // nothing in OS buffers or UART FIFO
245
- );
246
- }
247
- /**
248
- * Initialize ASH variables, timers and queues, but not the serial port
249
- */
250
- initVariables() {
251
191
  this.closing = false;
252
192
  this.txSHBuffer = Buffer.alloc(consts_1.SH_TX_BUFFER_LEN);
253
193
  this.rxSHBuffer = Buffer.alloc(consts_1.SH_RX_BUFFER_LEN);
@@ -263,12 +203,13 @@ class UartAsh extends stream_1.EventEmitter {
263
203
  this.frmRx = 0;
264
204
  this.frmReTxHead = 0;
265
205
  this.timeouts = 0;
266
- this.rxDataBuffer = null;
206
+ this.rxDataBuffer = undefined;
267
207
  this.rxLen = 0;
268
208
  // init to "start of frame" default
269
209
  this.encodeCount = 0;
270
210
  this.encodeState = 0;
271
211
  this.encodeEscFlag = false;
212
+ this.encodeFlip = 0;
272
213
  this.encodeCrc = 0xffff;
273
214
  this.txOffset = 0;
274
215
  // init to "start of frame" default
@@ -284,7 +225,6 @@ class UartAsh extends stream_1.EventEmitter {
284
225
  this.ncpHasCallbacks = false;
285
226
  this.stopAckTimer();
286
227
  this.stopNrTimer();
287
- this.initQueues();
288
228
  this.counters = {
289
229
  txData: 0,
290
230
  txAllFrames: 0,
@@ -316,25 +256,68 @@ class UartAsh extends stream_1.EventEmitter {
316
256
  rxOutOfSequence: 0,
317
257
  rxAckTimeouts: 0,
318
258
  };
319
- }
320
- /**
321
- * Initializes all queues and free lists.
322
- * All receive buffers are put into rxFree, and rxQueue is empty.
323
- * All transmit buffers are put into txFree, and txQueue and reTxQueue are empty.
324
- */
325
- initQueues() {
326
- this.txQueue.tail = null;
327
- this.reTxQueue.tail = null;
328
- this.txFree.link = null;
259
+ // All transmit buffers are put into txFree, and txQueue and reTxQueue are empty.
260
+ this.txQueue.tail = undefined;
261
+ this.reTxQueue.tail = undefined;
262
+ this.txFree.link = undefined;
329
263
  for (let i = 0; i < consts_1.TX_POOL_BUFFERS; i++) {
330
264
  this.txFree.freeBuffer((this.txPool[i] = new queues_1.EzspBuffer()));
331
265
  }
332
- this.rxQueue.tail = null;
333
- this.rxFree.link = null;
266
+ // All receive buffers are put into rxFree, and rxQueue is empty.
267
+ this.rxQueue.tail = undefined;
268
+ this.rxFree.link = undefined;
334
269
  for (let i = 0; i < consts_1.EZSP_HOST_RX_POOL_SIZE; i++) {
335
270
  this.rxFree.freeBuffer((this.rxPool[i] = new queues_1.EzspBuffer()));
336
271
  }
337
272
  }
273
+ /**
274
+ * Check if port is valid, open, and not closing.
275
+ */
276
+ get portOpen() {
277
+ if (this.closing) {
278
+ return false;
279
+ }
280
+ if (socketPortUtils_1.default.isTcpPath(this.portOptions.path)) {
281
+ return this.socketPort ? !this.socketPort.closed : false;
282
+ }
283
+ else {
284
+ return this.serialPort ? this.serialPort.isOpen : false;
285
+ }
286
+ }
287
+ /**
288
+ * Get max wait time before response is considered timed out.
289
+ */
290
+ get responseTimeout() {
291
+ return consts_1.ASH_MAX_TIMEOUTS * CONFIG_ACK_TIME_MAX;
292
+ }
293
+ /**
294
+ * Indicates if the host is in the Connected state.
295
+ * If not, the host and NCP cannot exchange DATA frames.
296
+ * Note that this function does not actively confirm that communication with NCP is healthy, but simply returns its last known status.
297
+ *
298
+ * @returns
299
+ * - true - host and NCP can exchange DATA frames
300
+ * - false - host and NCP cannot now exchange DATA frames
301
+ */
302
+ get connected() {
303
+ return (this.flags & Flag.CONNECTED) !== 0;
304
+ }
305
+ /**
306
+ * Has nothing to do...
307
+ */
308
+ get idle() {
309
+ return (!this.decodeInProgress && // don't have a partial frame
310
+ // && (this.serial.readAvailable() === EzspStatus.NO_RX_DATA) // no rx data
311
+ this.rxQueue.empty && // no rx frames to process
312
+ !this.ncpHasCallbacks && // no pending callbacks
313
+ this.flags === Flag.CONNECTED && // no pending ACKs, NAKs, etc.
314
+ this.ackTx === this.frmRx && // do not need to send an ACK
315
+ this.ackRx === this.frmTx && // not waiting to receive an ACK
316
+ this.sendState === SendState.IDLE && // nothing being transmitted now
317
+ this.txQueue.empty // nothing waiting to transmit
318
+ // && this.serial.outputIsIdle() // nothing in OS buffers or UART FIFO
319
+ );
320
+ }
338
321
  /**
339
322
  * Init the serial or socket port and hook parser/writer.
340
323
  * NOTE: This is the only function that throws/rejects in the ASH layer (caught by resetNcp and turned into an EzspStatus).
@@ -358,16 +341,14 @@ class UartAsh extends stream_1.EventEmitter {
358
341
  serialOpts.xon = true;
359
342
  serialOpts.xoff = true;
360
343
  }
361
- //@ts-expect-error Jest testing
362
- if (this.portOptions.binding != null) {
363
- //@ts-expect-error Jest testing
344
+ // @ts-expect-error Jest testing
345
+ if (this.portOptions.binding != undefined) {
346
+ // @ts-expect-error Jest testing
364
347
  serialOpts.binding = this.portOptions.binding;
365
348
  }
366
349
  logger_1.logger.debug(`Opening serial port with ${JSON.stringify(serialOpts)}`, NS);
367
350
  this.serialPort = new serialPort_1.SerialPort(serialOpts);
368
- this.writer = new writer_1.AshWriter({ highWaterMark: CONFIG_HIGHWATER_MARK });
369
351
  this.writer.pipe(this.serialPort);
370
- this.parser = new parser_1.AshParser({ readableHighWaterMark: CONFIG_HIGHWATER_MARK });
371
352
  this.serialPort.pipe(this.parser);
372
353
  this.parser.on('data', this.onFrame.bind(this));
373
354
  try {
@@ -387,9 +368,7 @@ class UartAsh extends stream_1.EventEmitter {
387
368
  this.socketPort = new net_1.Socket();
388
369
  this.socketPort.setNoDelay(true);
389
370
  this.socketPort.setKeepAlive(true, 15000);
390
- this.writer = new writer_1.AshWriter({ highWaterMark: CONFIG_HIGHWATER_MARK });
391
371
  this.writer.pipe(this.socketPort);
392
- this.parser = new parser_1.AshParser({ readableHighWaterMark: CONFIG_HIGHWATER_MARK });
393
372
  this.socketPort.pipe(this.parser);
394
373
  this.parser.on('data', this.onFrame.bind(this));
395
374
  return new Promise((resolve, reject) => {
@@ -421,7 +400,7 @@ class UartAsh extends stream_1.EventEmitter {
421
400
  if (error && this.flags !== 0) {
422
401
  logger_1.logger.info(`Port close ${error}`, NS);
423
402
  this.flags = 0;
424
- this.emit(AshEvents.FATAL_ERROR, enums_1.EzspStatus.ERROR_SERIAL_INIT);
403
+ this.emit('fatalError', enums_1.EzspStatus.ERROR_SERIAL_INIT);
425
404
  }
426
405
  }
427
406
  /**
@@ -431,7 +410,7 @@ class UartAsh extends stream_1.EventEmitter {
431
410
  async onPortError(error) {
432
411
  logger_1.logger.info(`Port ${error}`, NS);
433
412
  this.flags = 0;
434
- this.emit(AshEvents.FATAL_ERROR, enums_1.EzspStatus.ERROR_SERIAL_INIT);
413
+ this.emit('fatalError', enums_1.EzspStatus.ERROR_SERIAL_INIT);
435
414
  }
436
415
  /**
437
416
  * Handle received frame from AshParser.
@@ -458,7 +437,7 @@ class UartAsh extends stream_1.EventEmitter {
458
437
  setImmediate(this.sendExec.bind(this)); // always trigger to cover all cases (also triggered in Ezsp layer when a DATA frame is emitted)
459
438
  if (status !== enums_1.EzspStatus.SUCCESS && status !== enums_1.EzspStatus.ASH_IN_PROGRESS && status !== enums_1.EzspStatus.NO_RX_DATA) {
460
439
  logger_1.logger.error(`Error while parsing received frame, status=${enums_1.EzspStatus[status]}.`, NS);
461
- this.emit(AshEvents.FATAL_ERROR, enums_1.EzspStatus.HOST_FATAL_ERROR);
440
+ this.emit('fatalError', enums_1.EzspStatus.HOST_FATAL_ERROR);
462
441
  return;
463
442
  }
464
443
  }
@@ -476,7 +455,7 @@ class UartAsh extends stream_1.EventEmitter {
476
455
  }
477
456
  logger_1.logger.info(`======== ASH starting ========`, NS);
478
457
  try {
479
- if (this.serialPort != null) {
458
+ if (this.serialPort) {
480
459
  await this.serialPort.asyncFlush(); // clear read/write buffers
481
460
  }
482
461
  else {
@@ -510,7 +489,6 @@ class UartAsh extends stream_1.EventEmitter {
510
489
  this.closing = true;
511
490
  this.logCounters();
512
491
  await this.closePort();
513
- this.initVariables();
514
492
  logger_1.logger.info(`======== ASH stopped ========`, NS);
515
493
  }
516
494
  /**
@@ -547,8 +525,6 @@ class UartAsh extends stream_1.EventEmitter {
547
525
  return enums_1.EzspStatus.ERROR_INVALID_CALL;
548
526
  }
549
527
  logger_1.logger.info(`======== ASH Adapter reset ========`, NS);
550
- this.initVariables();
551
- let status;
552
528
  // ask ncp to reset itself using RST frame
553
529
  try {
554
530
  if (!this.portOpen) {
@@ -559,8 +535,8 @@ class UartAsh extends stream_1.EventEmitter {
559
535
  }
560
536
  catch (err) {
561
537
  logger_1.logger.error(`Failed to init port with error ${err}`, NS);
562
- this.hostError = status;
563
- return enums_1.EzspStatus.HOST_FATAL_ERROR;
538
+ this.hostError = enums_1.EzspStatus.HOST_FATAL_ERROR;
539
+ return this.hostError;
564
540
  }
565
541
  }
566
542
  /**
@@ -599,7 +575,7 @@ class UartAsh extends stream_1.EventEmitter {
599
575
  return enums_1.EzspStatus.NOT_CONNECTED;
600
576
  }
601
577
  const buffer = this.txFree.allocBuffer();
602
- if (buffer == null) {
578
+ if (buffer === undefined) {
603
579
  return enums_1.EzspStatus.NO_TX_SPACE;
604
580
  }
605
581
  inBuf.copy(buffer.data, 0, 0, len);
@@ -617,7 +593,7 @@ class UartAsh extends stream_1.EventEmitter {
617
593
  let outByte = 0x00;
618
594
  let inByte = 0x00;
619
595
  let len = 0;
620
- let buffer = null;
596
+ let buffer;
621
597
  // Check for received acknowledgement timer expiry
622
598
  if (this.ackTimerHasExpired()) {
623
599
  if (this.flags & Flag.CONNECTED) {
@@ -636,10 +612,10 @@ class UartAsh extends stream_1.EventEmitter {
636
612
  else {
637
613
  this.stopAckTimer();
638
614
  }
639
- }
640
- else {
641
- this.hostDisconnect(enums_1.EzspStatus.ASH_ERROR_RESET_FAIL);
642
- }
615
+ } /* else {
616
+ this.hostDisconnect(EzspStatus.ASH_ERROR_RESET_FAIL);
617
+ }*/
618
+ // let Ezsp layer retry logic handle timeout
643
619
  }
644
620
  while (this.writer.writeAvailable()) {
645
621
  // Send ASH_CAN character immediately, ahead of any other transmit data
@@ -659,7 +635,7 @@ class UartAsh extends stream_1.EventEmitter {
659
635
  continue;
660
636
  }
661
637
  switch (this.sendState) {
662
- case SendState.IDLE:
638
+ case SendState.IDLE: {
663
639
  // In between frames - do some housekeeping and decide what to send next
664
640
  // If retransmitting, set the next frame to send to the last ackNum
665
641
  // received, then check to see if retransmission is now complete.
@@ -707,6 +683,7 @@ class UartAsh extends stream_1.EventEmitter {
707
683
  }
708
684
  else if (this.flags & Flag.RETX) {
709
685
  // Retransmitting DATA frames for error recovery
686
+ // buffer assumed valid from loop logic
710
687
  buffer = this.reTxQueue.getNthEntry((0, math_1.mod8)(this.frmTx - this.frmReTx));
711
688
  len = buffer.len + 1;
712
689
  this.txSHBuffer[0] = enums_2.AshFrameType.DATA | (this.frmReTx << consts_1.ASH_FRMNUM_BIT) | (this.frmRx << consts_1.ASH_ACKNUM_BIT) | consts_1.ASH_RFLAG_MASK;
@@ -737,7 +714,8 @@ class UartAsh extends stream_1.EventEmitter {
737
714
  outByte = this.encodeByte(len, this.txSHBuffer[0]);
738
715
  this.writer.writeByte(outByte);
739
716
  break;
740
- case SendState.SHFRAME:
717
+ }
718
+ case SendState.SHFRAME: {
741
719
  // sending short frame
742
720
  if (this.txOffset !== 0xff) {
743
721
  inByte = this.txSHBuffer[this.txOffset];
@@ -748,10 +726,12 @@ class UartAsh extends stream_1.EventEmitter {
748
726
  this.sendState = SendState.IDLE;
749
727
  }
750
728
  break;
729
+ }
751
730
  case SendState.TX_DATA:
752
- case SendState.RETX_DATA:
731
+ case SendState.RETX_DATA: {
753
732
  // sending OR resending data frame
754
733
  if (this.txOffset !== 0xff) {
734
+ // buffer assumed valid from loop logic
755
735
  inByte = this.txOffset ? buffer.data[this.txOffset - 1] : this.txSHBuffer[0];
756
736
  outByte = this.encodeByte(0, inByte);
757
737
  this.writer.writeByte(outByte);
@@ -772,6 +752,7 @@ class UartAsh extends stream_1.EventEmitter {
772
752
  this.sendState = SendState.IDLE;
773
753
  }
774
754
  break;
755
+ }
775
756
  }
776
757
  }
777
758
  this.writer.writeFlush();
@@ -844,11 +825,11 @@ class UartAsh extends stream_1.EventEmitter {
844
825
  // not a DATA frame
845
826
  if (frameType === enums_2.AshFrameType.DATA) {
846
827
  if (!(this.flags & Flag.CONNECTED) || ashGetFrmNum(this.rxSHBuffer[0]) !== this.frmRx) {
847
- this.freeNonNullRxBuffer();
828
+ this.freeAllocatedRxBuffer();
848
829
  }
849
830
  }
850
831
  else {
851
- this.freeNonNullRxBuffer();
832
+ this.freeAllocatedRxBuffer();
852
833
  }
853
834
  const frameTypeStr = enums_2.AshFrameType[frameType];
854
835
  logger_1.logger.debug(`<--- [FRAME type=${frameTypeStr}]`, NS);
@@ -876,7 +857,8 @@ class UartAsh extends stream_1.EventEmitter {
876
857
  }
877
858
  else if (frameType === enums_2.AshFrameType.ERROR) {
878
859
  logger_1.logger.error(`Received ERROR from adapter while connecting, with code=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`, NS);
879
- return this.ncpDisconnect(enums_1.EzspStatus.ASH_NCP_FATAL_ERROR);
860
+ // let Ezsp retry logic handle error
861
+ // return this.ncpDisconnect(EzspStatus.ASH_NCP_FATAL_ERROR);
880
862
  }
881
863
  return enums_1.EzspStatus.ASH_IN_PROGRESS;
882
864
  }
@@ -912,7 +894,7 @@ class UartAsh extends stream_1.EventEmitter {
912
894
  }
913
895
  // Process frames received while connected
914
896
  switch (frameType) {
915
- case enums_2.AshFrameType.DATA:
897
+ case enums_2.AshFrameType.DATA: {
916
898
  frmNum = ashGetFrmNum(this.rxSHBuffer[0]);
917
899
  const frameStr = `[FRAME type=${frameTypeStr} ackNum=${ackNum} frmNum=${frmNum}](frmRx=${this.frmRx})`;
918
900
  if (frmNum === this.frmRx) {
@@ -934,7 +916,7 @@ class UartAsh extends stream_1.EventEmitter {
934
916
  this.rxQueue.addTail(this.rxDataBuffer); // add frame to receive queue
935
917
  logger_1.logger.debug(`<--- ${frameStr} Added to rxQueue`, NS);
936
918
  this.counters.rxData += this.rxDataBuffer.len;
937
- setImmediate(() => this.emit(AshEvents.FRAME));
919
+ setImmediate(() => this.emit('frame'));
938
920
  return enums_1.EzspStatus.SUCCESS;
939
921
  }
940
922
  else {
@@ -954,6 +936,7 @@ class UartAsh extends stream_1.EventEmitter {
954
936
  }
955
937
  }
956
938
  break;
939
+ }
957
940
  case enums_2.AshFrameType.ACK:
958
941
  // already fully processed
959
942
  break;
@@ -998,7 +981,7 @@ class UartAsh extends stream_1.EventEmitter {
998
981
  let outByte = 0x00;
999
982
  if (!this.decodeInProgress) {
1000
983
  this.rxLen = 0;
1001
- this.rxDataBuffer = null;
984
+ this.rxDataBuffer = undefined;
1002
985
  }
1003
986
  for (const inByte of buffer) {
1004
987
  // 0xFF byte signals a callback is pending when between frames in synchronous (polled) callback mode.
@@ -1015,7 +998,7 @@ class UartAsh extends stream_1.EventEmitter {
1015
998
  [status, outByte, this.rxLen] = this.decodeByte(inByte, outByte, this.rxLen);
1016
999
  // discard an invalid frame
1017
1000
  if (status !== enums_1.EzspStatus.ASH_IN_PROGRESS && status !== enums_1.EzspStatus.SUCCESS) {
1018
- this.freeNonNullRxBuffer();
1001
+ this.freeAllocatedRxBuffer();
1019
1002
  break;
1020
1003
  }
1021
1004
  // if input byte produced an output byte
@@ -1031,14 +1014,14 @@ class UartAsh extends stream_1.EventEmitter {
1031
1014
  if (this.rxLen === consts_1.SH_RX_BUFFER_LEN + 1) {
1032
1015
  // alloc buffer, copy prior data
1033
1016
  this.rxDataBuffer = this.rxFree.allocBuffer();
1034
- if (this.rxDataBuffer !== null) {
1017
+ if (this.rxDataBuffer !== undefined) {
1035
1018
  // const len = SH_RX_BUFFER_LEN - 1;
1036
1019
  // (void) memcpy(this.rxDataBuffer.data, this.shRxBuffer + 1, SH_RX_BUFFER_LEN - 1);
1037
1020
  this.rxSHBuffer.copy(this.rxDataBuffer.data, 0, 1, consts_1.SH_RX_BUFFER_LEN);
1038
1021
  this.rxDataBuffer.len = consts_1.SH_RX_BUFFER_LEN - 1;
1039
1022
  }
1040
1023
  }
1041
- if (this.rxDataBuffer !== null) {
1024
+ if (this.rxDataBuffer !== undefined) {
1042
1025
  // copy next byte to buffer
1043
1026
  this.rxDataBuffer.data[index - 1] = outByte; // -1 since control is omitted
1044
1027
  this.rxDataBuffer.len = index;
@@ -1054,10 +1037,10 @@ class UartAsh extends stream_1.EventEmitter {
1054
1037
  /**
1055
1038
  *
1056
1039
  */
1057
- freeNonNullRxBuffer() {
1058
- if (this.rxDataBuffer !== null) {
1040
+ freeAllocatedRxBuffer() {
1041
+ if (this.rxDataBuffer !== undefined) {
1059
1042
  this.rxFree.freeBuffer(this.rxDataBuffer);
1060
- this.rxDataBuffer = null;
1043
+ this.rxDataBuffer = undefined;
1061
1044
  }
1062
1045
  }
1063
1046
  /**