@willieee802/zigbee-herdsman 0.34.3 → 0.48.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +403 -0
  3. package/dist/adapter/adapter.d.ts +14 -13
  4. package/dist/adapter/adapter.d.ts.map +1 -1
  5. package/dist/adapter/adapter.js +15 -17
  6. package/dist/adapter/adapter.js.map +1 -1
  7. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +14 -12
  8. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  9. package/dist/adapter/deconz/adapter/deconzAdapter.js +118 -128
  10. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  11. package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
  12. package/dist/adapter/deconz/driver/driver.js +44 -44
  13. package/dist/adapter/deconz/driver/driver.js.map +1 -1
  14. package/dist/adapter/deconz/driver/frameParser.js +43 -43
  15. package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
  16. package/dist/adapter/deconz/driver/parser.js +6 -6
  17. package/dist/adapter/deconz/driver/parser.js.map +1 -1
  18. package/dist/adapter/deconz/driver/writer.js +3 -3
  19. package/dist/adapter/deconz/driver/writer.js.map +1 -1
  20. package/dist/adapter/ember/adapter/emberAdapter.d.ts +60 -71
  21. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
  22. package/dist/adapter/ember/adapter/emberAdapter.js +453 -492
  23. package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
  24. package/dist/adapter/ember/adapter/endpoints.d.ts +5 -3
  25. package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -1
  26. package/dist/adapter/ember/adapter/endpoints.js +33 -31
  27. package/dist/adapter/ember/adapter/endpoints.js.map +1 -1
  28. package/dist/adapter/ember/adapter/oneWaitress.d.ts +16 -5
  29. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
  30. package/dist/adapter/ember/adapter/oneWaitress.js +19 -4
  31. package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
  32. package/dist/adapter/ember/adapter/requestQueue.d.ts +2 -4
  33. package/dist/adapter/ember/adapter/requestQueue.d.ts.map +1 -1
  34. package/dist/adapter/ember/adapter/requestQueue.js +17 -22
  35. package/dist/adapter/ember/adapter/requestQueue.js.map +1 -1
  36. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
  37. package/dist/adapter/ember/adapter/tokensManager.js +23 -20
  38. package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
  39. package/dist/adapter/ember/consts.d.ts +0 -7
  40. package/dist/adapter/ember/consts.d.ts.map +1 -1
  41. package/dist/adapter/ember/consts.js +2 -9
  42. package/dist/adapter/ember/consts.js.map +1 -1
  43. package/dist/adapter/ember/enums.d.ts +133 -145
  44. package/dist/adapter/ember/enums.d.ts.map +1 -1
  45. package/dist/adapter/ember/enums.js +132 -148
  46. package/dist/adapter/ember/enums.js.map +1 -1
  47. package/dist/adapter/ember/ezsp/buffalo.js +4 -4
  48. package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
  49. package/dist/adapter/ember/ezsp/ezsp.d.ts +1 -3
  50. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
  51. package/dist/adapter/ember/ezsp/ezsp.js +224 -208
  52. package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
  53. package/dist/adapter/ember/types.d.ts +9 -9
  54. package/dist/adapter/ember/types.d.ts.map +1 -1
  55. package/dist/adapter/ember/uart/ash.d.ts +27 -14
  56. package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
  57. package/dist/adapter/ember/uart/ash.js +158 -109
  58. package/dist/adapter/ember/uart/ash.js.map +1 -1
  59. package/dist/adapter/ember/uart/consts.d.ts +1 -1
  60. package/dist/adapter/ember/uart/consts.js +1 -1
  61. package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
  62. package/dist/adapter/ember/uart/parser.js +5 -9
  63. package/dist/adapter/ember/uart/parser.js.map +1 -1
  64. package/dist/adapter/ember/uart/queues.d.ts.map +1 -1
  65. package/dist/adapter/ember/uart/queues.js +3 -1
  66. package/dist/adapter/ember/uart/queues.js.map +1 -1
  67. package/dist/adapter/ember/uart/writer.d.ts.map +1 -1
  68. package/dist/adapter/ember/uart/writer.js +4 -6
  69. package/dist/adapter/ember/uart/writer.js.map +1 -1
  70. package/dist/adapter/ember/zdo.d.ts +6 -2
  71. package/dist/adapter/ember/zdo.d.ts.map +1 -1
  72. package/dist/adapter/ember/zdo.js +2 -2
  73. package/dist/adapter/ember/zdo.js.map +1 -1
  74. package/dist/adapter/events.d.ts +17 -23
  75. package/dist/adapter/events.d.ts.map +1 -1
  76. package/dist/adapter/events.js +1 -2
  77. package/dist/adapter/events.js.map +1 -1
  78. package/dist/adapter/ezsp/adapter/backup.d.ts +4 -1
  79. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
  80. package/dist/adapter/ezsp/adapter/backup.js +35 -7
  81. package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
  82. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +12 -9
  83. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  84. package/dist/adapter/ezsp/adapter/ezspAdapter.js +79 -75
  85. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  86. package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
  87. package/dist/adapter/ezsp/driver/commands.js +3 -5
  88. package/dist/adapter/ezsp/driver/commands.js.map +1 -1
  89. package/dist/adapter/ezsp/driver/driver.d.ts +4 -2
  90. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
  91. package/dist/adapter/ezsp/driver/driver.js +183 -119
  92. package/dist/adapter/ezsp/driver/driver.js.map +1 -1
  93. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
  94. package/dist/adapter/ezsp/driver/ezsp.js +62 -50
  95. package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
  96. package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
  97. package/dist/adapter/ezsp/driver/multicast.js +8 -12
  98. package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
  99. package/dist/adapter/ezsp/driver/parser.js +5 -5
  100. package/dist/adapter/ezsp/driver/parser.js.map +1 -1
  101. package/dist/adapter/ezsp/driver/types/basic.js +1 -1
  102. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
  103. package/dist/adapter/ezsp/driver/types/named.js +2 -2
  104. package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
  105. package/dist/adapter/ezsp/driver/types/struct.d.ts +1 -1
  106. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
  107. package/dist/adapter/ezsp/driver/types/struct.js +2 -2
  108. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
  109. package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
  110. package/dist/adapter/ezsp/driver/uart.js +46 -46
  111. package/dist/adapter/ezsp/driver/uart.js.map +1 -1
  112. package/dist/adapter/ezsp/driver/utils/index.d.ts +2 -1
  113. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
  114. package/dist/adapter/ezsp/driver/utils/index.js +2 -2
  115. package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
  116. package/dist/adapter/ezsp/driver/writer.js +3 -6
  117. package/dist/adapter/ezsp/driver/writer.js.map +1 -1
  118. package/dist/adapter/serialPort.d.ts +3 -0
  119. package/dist/adapter/serialPort.d.ts.map +1 -1
  120. package/dist/adapter/serialPort.js +16 -23
  121. package/dist/adapter/serialPort.js.map +1 -1
  122. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +0 -1
  123. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
  124. package/dist/adapter/z-stack/adapter/adapter-backup.js +25 -29
  125. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  126. package/dist/adapter/z-stack/adapter/endpoints.js +4 -4
  127. package/dist/adapter/z-stack/adapter/endpoints.js.map +1 -1
  128. package/dist/adapter/z-stack/adapter/manager.d.ts +1 -4
  129. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  130. package/dist/adapter/z-stack/adapter/manager.js +52 -61
  131. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  132. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +12 -10
  133. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  134. package/dist/adapter/z-stack/adapter/zStackAdapter.js +102 -84
  135. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  136. package/dist/adapter/z-stack/unpi/parser.js +6 -6
  137. package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
  138. package/dist/adapter/z-stack/unpi/writer.js +4 -7
  139. package/dist/adapter/z-stack/unpi/writer.js.map +1 -1
  140. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +4 -2
  141. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +1 -1
  142. package/dist/adapter/z-stack/znp/buffaloZnp.js +154 -25
  143. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -1
  144. package/dist/adapter/z-stack/znp/definition.d.ts.map +1 -1
  145. package/dist/adapter/z-stack/znp/definition.js +2 -1
  146. package/dist/adapter/z-stack/znp/definition.js.map +1 -1
  147. package/dist/adapter/z-stack/znp/tstype.d.ts +4 -3
  148. package/dist/adapter/z-stack/znp/tstype.d.ts.map +1 -1
  149. package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
  150. package/dist/adapter/z-stack/znp/znp.js +18 -25
  151. package/dist/adapter/z-stack/znp/znp.js.map +1 -1
  152. package/dist/adapter/z-stack/znp/zpiObject.js +2 -2
  153. package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
  154. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +13 -12
  155. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  156. package/dist/adapter/zigate/adapter/zigateAdapter.js +81 -90
  157. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  158. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +7 -8
  159. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
  160. package/dist/adapter/zigate/driver/buffaloZiGate.js +150 -100
  161. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
  162. package/dist/adapter/zigate/driver/commandType.d.ts +2 -1
  163. package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -1
  164. package/dist/adapter/zigate/driver/commandType.js +56 -52
  165. package/dist/adapter/zigate/driver/commandType.js.map +1 -1
  166. package/dist/adapter/zigate/driver/frame.d.ts.map +1 -1
  167. package/dist/adapter/zigate/driver/frame.js +8 -8
  168. package/dist/adapter/zigate/driver/frame.js.map +1 -1
  169. package/dist/adapter/zigate/driver/messageType.d.ts +2 -1
  170. package/dist/adapter/zigate/driver/messageType.d.ts.map +1 -1
  171. package/dist/adapter/zigate/driver/messageType.js +113 -108
  172. package/dist/adapter/zigate/driver/messageType.js.map +1 -1
  173. package/dist/adapter/zigate/driver/parameterType.d.ts +8 -1
  174. package/dist/adapter/zigate/driver/parameterType.d.ts.map +1 -1
  175. package/dist/adapter/zigate/driver/parameterType.js +9 -0
  176. package/dist/adapter/zigate/driver/parameterType.js.map +1 -1
  177. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
  178. package/dist/adapter/zigate/driver/ziGateObject.js +9 -9
  179. package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
  180. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
  181. package/dist/adapter/zigate/driver/zigate.js +23 -31
  182. package/dist/adapter/zigate/driver/zigate.js.map +1 -1
  183. package/dist/buffalo/buffalo.d.ts +23 -19
  184. package/dist/buffalo/buffalo.d.ts.map +1 -1
  185. package/dist/buffalo/buffalo.js +74 -169
  186. package/dist/buffalo/buffalo.js.map +1 -1
  187. package/dist/buffalo/index.d.ts +1 -2
  188. package/dist/buffalo/index.d.ts.map +1 -1
  189. package/dist/buffalo/index.js +1 -26
  190. package/dist/buffalo/index.js.map +1 -1
  191. package/dist/controller/controller.d.ts +8 -5
  192. package/dist/controller/controller.d.ts.map +1 -1
  193. package/dist/controller/controller.js +181 -126
  194. package/dist/controller/controller.js.map +1 -1
  195. package/dist/controller/database.d.ts +1 -0
  196. package/dist/controller/database.d.ts.map +1 -1
  197. package/dist/controller/database.js +7 -10
  198. package/dist/controller/database.js.map +1 -1
  199. package/dist/controller/events.d.ts +2 -2
  200. package/dist/controller/events.d.ts.map +1 -1
  201. package/dist/controller/events.js +4 -0
  202. package/dist/controller/events.js.map +1 -1
  203. package/dist/controller/greenPower.d.ts +2 -1
  204. package/dist/controller/greenPower.d.ts.map +1 -1
  205. package/dist/controller/greenPower.js +51 -57
  206. package/dist/controller/greenPower.js.map +1 -1
  207. package/dist/controller/helpers/request.d.ts +3 -3
  208. package/dist/controller/helpers/request.d.ts.map +1 -1
  209. package/dist/controller/helpers/request.js +2 -2
  210. package/dist/controller/helpers/request.js.map +1 -1
  211. package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
  212. package/dist/controller/helpers/requestQueue.js +26 -36
  213. package/dist/controller/helpers/requestQueue.js.map +1 -1
  214. package/dist/controller/helpers/zclFrameConverter.d.ts +4 -3
  215. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  216. package/dist/controller/helpers/zclFrameConverter.js +33 -14
  217. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  218. package/dist/controller/model/device.d.ts +12 -5
  219. package/dist/controller/model/device.d.ts.map +1 -1
  220. package/dist/controller/model/device.js +108 -87
  221. package/dist/controller/model/device.js.map +1 -1
  222. package/dist/controller/model/endpoint.d.ts +22 -17
  223. package/dist/controller/model/endpoint.d.ts.map +1 -1
  224. package/dist/controller/model/endpoint.js +139 -228
  225. package/dist/controller/model/endpoint.js.map +1 -1
  226. package/dist/controller/model/group.d.ts +1 -1
  227. package/dist/controller/model/group.d.ts.map +1 -1
  228. package/dist/controller/model/group.js +18 -18
  229. package/dist/controller/model/group.js.map +1 -1
  230. package/dist/controller/touchlink.js +25 -28
  231. package/dist/controller/touchlink.js.map +1 -1
  232. package/dist/index.d.ts +5 -3
  233. package/dist/index.d.ts.map +1 -1
  234. package/dist/index.js +8 -5
  235. package/dist/index.js.map +1 -1
  236. package/dist/utils/logger.d.ts +9 -0
  237. package/dist/utils/logger.d.ts.map +1 -0
  238. package/dist/utils/logger.js +14 -0
  239. package/dist/utils/logger.js.map +1 -0
  240. package/dist/zspec/consts.d.ts +60 -0
  241. package/dist/zspec/consts.d.ts.map +1 -0
  242. package/dist/zspec/consts.js +64 -0
  243. package/dist/zspec/consts.js.map +1 -0
  244. package/dist/zspec/enums.d.ts +19 -0
  245. package/dist/zspec/enums.d.ts.map +1 -0
  246. package/dist/zspec/enums.js +28 -0
  247. package/dist/zspec/enums.js.map +1 -0
  248. package/dist/zspec/index.d.ts +4 -0
  249. package/dist/zspec/index.d.ts.map +1 -0
  250. package/dist/zspec/index.js +43 -0
  251. package/dist/zspec/index.js.map +1 -0
  252. package/dist/zspec/tstypes.d.ts +19 -0
  253. package/dist/zspec/tstypes.d.ts.map +1 -0
  254. package/dist/{buffalo/tstype.js → zspec/tstypes.js} +1 -1
  255. package/dist/zspec/tstypes.js.map +1 -0
  256. package/dist/zspec/utils.d.ts +14 -0
  257. package/dist/zspec/utils.d.ts.map +1 -0
  258. package/dist/zspec/utils.js +29 -0
  259. package/dist/zspec/utils.js.map +1 -0
  260. package/dist/zspec/zcl/buffaloZcl.d.ts +55 -0
  261. package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -0
  262. package/dist/zspec/zcl/buffaloZcl.js +929 -0
  263. package/dist/zspec/zcl/buffaloZcl.js.map +1 -0
  264. package/dist/zspec/zcl/definition/cluster.d.ts +3 -0
  265. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -0
  266. package/dist/zspec/zcl/definition/cluster.js +5500 -0
  267. package/dist/zspec/zcl/definition/cluster.js.map +1 -0
  268. package/dist/zspec/zcl/definition/consts.d.ts +9 -0
  269. package/dist/zspec/zcl/definition/consts.d.ts.map +1 -0
  270. package/dist/zspec/zcl/definition/consts.js +27 -0
  271. package/dist/zspec/zcl/definition/consts.js.map +1 -0
  272. package/dist/zspec/zcl/definition/enums.d.ts +177 -0
  273. package/dist/zspec/zcl/definition/enums.d.ts.map +1 -0
  274. package/dist/zspec/zcl/definition/enums.js +187 -0
  275. package/dist/zspec/zcl/definition/enums.js.map +1 -0
  276. package/dist/zspec/zcl/definition/foundation.d.ts +11 -0
  277. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -0
  278. package/dist/zspec/zcl/definition/foundation.js +241 -0
  279. package/dist/zspec/zcl/definition/foundation.js.map +1 -0
  280. package/dist/zspec/zcl/definition/manufacturerCode.d.ts +727 -0
  281. package/dist/zspec/zcl/definition/manufacturerCode.d.ts.map +1 -0
  282. package/dist/zspec/zcl/definition/manufacturerCode.js +733 -0
  283. package/dist/zspec/zcl/definition/manufacturerCode.js.map +1 -0
  284. package/dist/zspec/zcl/definition/status.d.ts +69 -0
  285. package/dist/zspec/zcl/definition/status.d.ts.map +1 -0
  286. package/dist/zspec/zcl/definition/status.js +74 -0
  287. package/dist/zspec/zcl/definition/status.js.map +1 -0
  288. package/dist/zspec/zcl/definition/tstype.d.ts +114 -0
  289. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -0
  290. package/dist/{zcl/zclHeader.js → zspec/zcl/definition/tstype.js} +2 -1
  291. package/dist/zspec/zcl/definition/tstype.js.map +1 -0
  292. package/dist/zspec/zcl/index.d.ts +11 -0
  293. package/dist/zspec/zcl/index.d.ts.map +1 -0
  294. package/dist/zspec/zcl/index.js +47 -0
  295. package/dist/zspec/zcl/index.js.map +1 -0
  296. package/dist/zspec/zcl/utils.d.ts +7 -0
  297. package/dist/zspec/zcl/utils.d.ts.map +1 -0
  298. package/dist/zspec/zcl/utils.js +234 -0
  299. package/dist/zspec/zcl/utils.js.map +1 -0
  300. package/dist/zspec/zcl/zclFrame.d.ts +36 -0
  301. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -0
  302. package/dist/zspec/zcl/zclFrame.js +304 -0
  303. package/dist/zspec/zcl/zclFrame.js.map +1 -0
  304. package/dist/zspec/zcl/zclHeader.d.ts +17 -0
  305. package/dist/zspec/zcl/zclHeader.d.ts.map +1 -0
  306. package/dist/zspec/zcl/zclHeader.js +88 -0
  307. package/dist/zspec/zcl/zclHeader.js.map +1 -0
  308. package/dist/zspec/zcl/zclStatusError.d.ts +6 -0
  309. package/dist/zspec/zcl/zclStatusError.d.ts.map +1 -0
  310. package/dist/zspec/zcl/zclStatusError.js +13 -0
  311. package/dist/zspec/zcl/zclStatusError.js.map +1 -0
  312. package/dist/zspec/zdo/buffaloZdo.d.ts +438 -0
  313. package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -0
  314. package/dist/zspec/zdo/buffaloZdo.js +1892 -0
  315. package/dist/zspec/zdo/buffaloZdo.js.map +1 -0
  316. package/dist/zspec/zdo/definition/clusters.d.ts +624 -0
  317. package/dist/zspec/zdo/definition/clusters.d.ts.map +1 -0
  318. package/dist/zspec/zdo/definition/clusters.js +687 -0
  319. package/dist/zspec/zdo/definition/clusters.js.map +1 -0
  320. package/dist/zspec/zdo/definition/consts.d.ts +13 -0
  321. package/dist/zspec/zdo/definition/consts.d.ts.map +1 -0
  322. package/dist/zspec/zdo/definition/consts.js +16 -0
  323. package/dist/zspec/zdo/definition/consts.js.map +1 -0
  324. package/dist/zspec/zdo/definition/enums.d.ts +75 -0
  325. package/dist/zspec/zdo/definition/enums.d.ts.map +1 -0
  326. package/dist/zspec/zdo/definition/enums.js +97 -0
  327. package/dist/zspec/zdo/definition/enums.js.map +1 -0
  328. package/dist/zspec/zdo/definition/status.d.ts +99 -0
  329. package/dist/zspec/zdo/definition/status.d.ts.map +1 -0
  330. package/dist/zspec/zdo/definition/status.js +109 -0
  331. package/dist/zspec/zdo/definition/status.js.map +1 -0
  332. package/dist/zspec/zdo/definition/tstypes.d.ts +787 -0
  333. package/dist/zspec/zdo/definition/tstypes.d.ts.map +1 -0
  334. package/dist/{zcl/definition/tstype.js → zspec/zdo/definition/tstypes.js} +1 -1
  335. package/dist/zspec/zdo/definition/tstypes.js.map +1 -0
  336. package/dist/zspec/zdo/index.d.ts +7 -0
  337. package/dist/zspec/zdo/index.d.ts.map +1 -0
  338. package/dist/zspec/zdo/index.js +39 -0
  339. package/dist/zspec/zdo/index.js.map +1 -0
  340. package/dist/zspec/zdo/utils.d.ts +25 -0
  341. package/dist/zspec/zdo/utils.d.ts.map +1 -0
  342. package/dist/zspec/zdo/utils.js +75 -0
  343. package/dist/zspec/zdo/utils.js.map +1 -0
  344. package/dist/zspec/zdo/zdoStatusError.d.ts +6 -0
  345. package/dist/zspec/zdo/zdoStatusError.d.ts.map +1 -0
  346. package/dist/zspec/zdo/zdoStatusError.js +13 -0
  347. package/dist/zspec/zdo/zdoStatusError.js.map +1 -0
  348. package/examples/join-and-log.js +7 -12
  349. package/package.json +5 -5
  350. package/dist/adapter/zigate/debug.d.ts +0 -8
  351. package/dist/adapter/zigate/debug.d.ts.map +0 -1
  352. package/dist/adapter/zigate/debug.js +0 -20
  353. package/dist/adapter/zigate/debug.js.map +0 -1
  354. package/dist/buffalo/tstype.d.ts +0 -9
  355. package/dist/buffalo/tstype.d.ts.map +0 -1
  356. package/dist/buffalo/tstype.js.map +0 -1
  357. package/dist/controller/logger-stub.d.ts +0 -7
  358. package/dist/controller/logger-stub.d.ts.map +0 -1
  359. package/dist/controller/logger-stub.js +0 -3
  360. package/dist/controller/logger-stub.js.map +0 -1
  361. package/dist/zcl/buffaloZcl.d.ts +0 -42
  362. package/dist/zcl/buffaloZcl.d.ts.map +0 -1
  363. package/dist/zcl/buffaloZcl.js +0 -595
  364. package/dist/zcl/buffaloZcl.js.map +0 -1
  365. package/dist/zcl/definition/buffaloZclDataType.d.ts +0 -18
  366. package/dist/zcl/definition/buffaloZclDataType.d.ts.map +0 -1
  367. package/dist/zcl/definition/buffaloZclDataType.js +0 -21
  368. package/dist/zcl/definition/buffaloZclDataType.js.map +0 -1
  369. package/dist/zcl/definition/cluster.d.ts +0 -30
  370. package/dist/zcl/definition/cluster.d.ts.map +0 -1
  371. package/dist/zcl/definition/cluster.js +0 -5521
  372. package/dist/zcl/definition/cluster.js.map +0 -1
  373. package/dist/zcl/definition/dataType.d.ts +0 -60
  374. package/dist/zcl/definition/dataType.d.ts.map +0 -1
  375. package/dist/zcl/definition/dataType.js +0 -65
  376. package/dist/zcl/definition/dataType.js.map +0 -1
  377. package/dist/zcl/definition/direction.d.ts +0 -6
  378. package/dist/zcl/definition/direction.d.ts.map +0 -1
  379. package/dist/zcl/definition/direction.js +0 -9
  380. package/dist/zcl/definition/direction.js.map +0 -1
  381. package/dist/zcl/definition/endpointDeviceType.d.ts +0 -5
  382. package/dist/zcl/definition/endpointDeviceType.d.ts.map +0 -1
  383. package/dist/zcl/definition/endpointDeviceType.js +0 -16
  384. package/dist/zcl/definition/endpointDeviceType.js.map +0 -1
  385. package/dist/zcl/definition/foundation.d.ts +0 -12
  386. package/dist/zcl/definition/foundation.d.ts.map +0 -1
  387. package/dist/zcl/definition/foundation.js +0 -168
  388. package/dist/zcl/definition/foundation.js.map +0 -1
  389. package/dist/zcl/definition/frameControl.d.ts +0 -11
  390. package/dist/zcl/definition/frameControl.d.ts.map +0 -1
  391. package/dist/zcl/definition/frameControl.js +0 -3
  392. package/dist/zcl/definition/frameControl.js.map +0 -1
  393. package/dist/zcl/definition/frameType.d.ts +0 -6
  394. package/dist/zcl/definition/frameType.d.ts.map +0 -1
  395. package/dist/zcl/definition/frameType.js +0 -9
  396. package/dist/zcl/definition/frameType.js.map +0 -1
  397. package/dist/zcl/definition/index.d.ts +0 -14
  398. package/dist/zcl/definition/index.d.ts.map +0 -1
  399. package/dist/zcl/definition/index.js +0 -52
  400. package/dist/zcl/definition/index.js.map +0 -1
  401. package/dist/zcl/definition/manufacturerCode.d.ts +0 -1078
  402. package/dist/zcl/definition/manufacturerCode.d.ts.map +0 -1
  403. package/dist/zcl/definition/manufacturerCode.js +0 -1083
  404. package/dist/zcl/definition/manufacturerCode.js.map +0 -1
  405. package/dist/zcl/definition/powerSource.d.ts +0 -5
  406. package/dist/zcl/definition/powerSource.d.ts.map +0 -1
  407. package/dist/zcl/definition/powerSource.js +0 -13
  408. package/dist/zcl/definition/powerSource.js.map +0 -1
  409. package/dist/zcl/definition/status.d.ts +0 -39
  410. package/dist/zcl/definition/status.d.ts.map +0 -1
  411. package/dist/zcl/definition/status.js +0 -42
  412. package/dist/zcl/definition/status.js.map +0 -1
  413. package/dist/zcl/definition/tstype.d.ts +0 -17
  414. package/dist/zcl/definition/tstype.d.ts.map +0 -1
  415. package/dist/zcl/definition/tstype.js.map +0 -1
  416. package/dist/zcl/index.d.ts +0 -17
  417. package/dist/zcl/index.d.ts.map +0 -1
  418. package/dist/zcl/index.js +0 -56
  419. package/dist/zcl/index.js.map +0 -1
  420. package/dist/zcl/tstype.d.ts +0 -57
  421. package/dist/zcl/tstype.d.ts.map +0 -1
  422. package/dist/zcl/tstype.js +0 -10
  423. package/dist/zcl/tstype.js.map +0 -1
  424. package/dist/zcl/utils.d.ts +0 -7
  425. package/dist/zcl/utils.d.ts.map +0 -1
  426. package/dist/zcl/utils.js +0 -165
  427. package/dist/zcl/utils.js.map +0 -1
  428. package/dist/zcl/zclFrame.d.ts +0 -41
  429. package/dist/zcl/zclFrame.d.ts.map +0 -1
  430. package/dist/zcl/zclFrame.js +0 -352
  431. package/dist/zcl/zclFrame.js.map +0 -1
  432. package/dist/zcl/zclHeader.d.ts +0 -9
  433. package/dist/zcl/zclHeader.d.ts.map +0 -1
  434. package/dist/zcl/zclHeader.js.map +0 -1
  435. package/dist/zcl/zclStatusError.d.ts +0 -6
  436. package/dist/zcl/zclStatusError.d.ts.map +0 -1
  437. package/dist/zcl/zclStatusError.js +0 -15
  438. package/dist/zcl/zclStatusError.js.map +0 -1
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.UartAsh = exports.AshEvents = void 0;
7
7
  /* istanbul ignore file */
8
- const debug_1 = __importDefault(require("debug"));
9
8
  const stream_1 = require("stream");
10
9
  const net_1 = require("net");
11
10
  const socketPortUtils_1 = __importDefault(require("../../socketPortUtils"));
@@ -18,7 +17,8 @@ const queues_1 = require("./queues");
18
17
  const writer_1 = require("./writer");
19
18
  const parser_1 = require("./parser");
20
19
  const utils_1 = require("../../../utils");
21
- const debug = (0, debug_1.default)('zigbee-herdsman:adapter:ember:uart:ash');
20
+ const logger_1 = require("../../../utils/logger");
21
+ const NS = 'zh:ember:uart:ash';
22
22
  /** ASH get rflag in control byte */
23
23
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
24
  const ashGetRFlag = (ctrl) => ((ctrl & consts_1.ASH_RFLAG_MASK) >> consts_1.ASH_RFLAG_BIT);
@@ -31,12 +31,10 @@ const ashGetFrmNum = (ctrl) => ((ctrl & consts_1.ASH_FRMNUM_MASK) >> consts_1.AS
31
31
  const ashGetACKNum = (ctrl) => ((ctrl & consts_1.ASH_ACKNUM_MASK) >> consts_1.ASH_ACKNUM_BIT);
32
32
  var AshEvents;
33
33
  (function (AshEvents) {
34
- /** When the host detects a fatal error */
35
- AshEvents["hostError"] = "hostError";
36
- /** When the NCP reports a fatal error */
37
- AshEvents["ncpError"] = "ncpError";
34
+ /** When the ASH protocol detects a fatal error (bubbles up to restart adapter). */
35
+ AshEvents["FATAL_ERROR"] = "fatalError";
38
36
  /** When a frame has been parsed and queued in the rxQueue. */
39
- AshEvents["frame"] = "frame";
37
+ AshEvents["FRAME"] = "frame";
40
38
  })(AshEvents || (exports.AshEvents = AshEvents = {}));
41
39
  var SendState;
42
40
  (function (SendState) {
@@ -207,7 +205,12 @@ class UartAsh extends stream_1.EventEmitter {
207
205
  if (this.closing) {
208
206
  return false;
209
207
  }
210
- return this.serialPort != null ? this.serialPort.isOpen : !this.socketPort?.closed;
208
+ if (socketPortUtils_1.default.isTcpPath(this.portOptions.path)) {
209
+ return this.socketPort && !this.socketPort.closed;
210
+ }
211
+ else {
212
+ return this.serialPort && this.serialPort.isOpen;
213
+ }
211
214
  }
212
215
  /**
213
216
  * Get max wait time before response is considered timed out.
@@ -248,10 +251,6 @@ class UartAsh extends stream_1.EventEmitter {
248
251
  */
249
252
  initVariables() {
250
253
  this.closing = false;
251
- this.serialPort = null;
252
- this.socketPort = null;
253
- this.writer = null;
254
- this.parser = null;
255
254
  this.txSHBuffer = Buffer.alloc(consts_1.SH_TX_BUFFER_LEN);
256
255
  this.rxSHBuffer = Buffer.alloc(consts_1.SH_RX_BUFFER_LEN);
257
256
  this.ackTimer = 0;
@@ -338,11 +337,13 @@ class UartAsh extends stream_1.EventEmitter {
338
337
  this.rxFree.freeBuffer(this.rxPool[i] = new queues_1.EzspBuffer());
339
338
  }
340
339
  }
340
+ /**
341
+ * Init the serial or socket port and hook parser/writer.
342
+ * NOTE: This is the only function that throws/rejects in the ASH layer (caught by resetNcp and turned into an EzspStatus).
343
+ */
341
344
  async initPort() {
345
+ await this.closePort(); // will do nothing if nothing's open
342
346
  if (!socketPortUtils_1.default.isTcpPath(this.portOptions.path)) {
343
- if (this.serialPort != null) {
344
- this.serialPort.close();
345
- }
346
347
  const serialOpts = {
347
348
  path: this.portOptions.path,
348
349
  baudRate: typeof this.portOptions.baudRate === 'number' ? this.portOptions.baudRate : 115200,
@@ -355,7 +356,7 @@ class UartAsh extends stream_1.EventEmitter {
355
356
  };
356
357
  // enable software flow control if RTS/CTS not enabled in config
357
358
  if (!serialOpts.rtscts) {
358
- debug(`RTS/CTS config is off, enabling software flow control.`);
359
+ logger_1.logger.info(`RTS/CTS config is off, enabling software flow control.`, NS);
359
360
  serialOpts.xon = true;
360
361
  serialOpts.xoff = true;
361
362
  }
@@ -364,7 +365,7 @@ class UartAsh extends stream_1.EventEmitter {
364
365
  //@ts-expect-error Jest testing
365
366
  serialOpts.binding = this.portOptions.binding;
366
367
  }
367
- debug(`Opening SerialPort with ${JSON.stringify(serialOpts)}`);
368
+ logger_1.logger.debug(`Opening serial port with ${JSON.stringify(serialOpts)}`, NS);
368
369
  this.serialPort = new serialPort_1.SerialPort(serialOpts);
369
370
  this.writer = new writer_1.AshWriter({ highWaterMark: CONFIG_HIGHWATER_MARK });
370
371
  this.writer.pipe(this.serialPort);
@@ -373,7 +374,7 @@ class UartAsh extends stream_1.EventEmitter {
373
374
  this.parser.on('data', this.onFrame.bind(this));
374
375
  try {
375
376
  await this.serialPort.asyncOpen();
376
- debug('Serialport opened');
377
+ logger_1.logger.info(`Serial port opened`, NS);
377
378
  this.serialPort.once('close', this.onPortClose.bind(this));
378
379
  this.serialPort.on('error', this.onPortError.bind(this));
379
380
  }
@@ -383,11 +384,8 @@ class UartAsh extends stream_1.EventEmitter {
383
384
  }
384
385
  }
385
386
  else {
386
- if (this.socketPort != null) {
387
- this.socketPort.destroy();
388
- }
389
387
  const info = socketPortUtils_1.default.parseTcpPath(this.portOptions.path);
390
- debug(`Opening TCP socket with ${info.host}:${info.port}`);
388
+ logger_1.logger.debug(`Opening TCP socket with ${info.host}:${info.port}`, NS);
391
389
  this.socketPort = new net_1.Socket();
392
390
  this.socketPort.setNoDelay(true);
393
391
  this.socketPort.setKeepAlive(true, 15000);
@@ -402,10 +400,10 @@ class UartAsh extends stream_1.EventEmitter {
402
400
  reject(err);
403
401
  };
404
402
  this.socketPort.on('connect', () => {
405
- debug('Socket connected');
403
+ logger_1.logger.debug(`Socket connected`, NS);
406
404
  });
407
405
  this.socketPort.on('ready', async () => {
408
- debug('Socket ready');
406
+ logger_1.logger.info(`Socket ready`, NS);
409
407
  this.socketPort.removeListener('error', openError);
410
408
  this.socketPort.once('close', this.onPortClose.bind(this));
411
409
  this.socketPort.on('error', this.onPortError.bind(this));
@@ -421,16 +419,15 @@ class UartAsh extends stream_1.EventEmitter {
421
419
  * @param err A boolean for Socket, an Error for serialport
422
420
  */
423
421
  async onPortClose(err) {
424
- console.log(`Port closed. Error? ${err ?? 'no'}`);
422
+ logger_1.logger.info(`Port closed. Error? ${err ?? 'no'}`, NS);
425
423
  }
426
424
  /**
427
425
  * Handle port error
428
426
  * @param error
429
427
  */
430
428
  async onPortError(error) {
431
- console.log(`Port error: ${error}`);
432
- this.hostDisconnect(enums_1.EzspStatus.ERROR_SERIAL_INIT);
433
- await this.stop();
429
+ logger_1.logger.info(`Port error: ${error}`, NS);
430
+ this.emit(AshEvents.FATAL_ERROR, enums_1.EzspStatus.ERROR_SERIAL_INIT);
434
431
  }
435
432
  /**
436
433
  * Handle received frame from AshParser.
@@ -442,7 +439,7 @@ class UartAsh extends stream_1.EventEmitter {
442
439
  // ignore the cancel before RSTACK
443
440
  if (this.flags & Flag.CONNECTED) {
444
441
  this.counters.rxCancelled += 1;
445
- console.warn(`Frame(s) in progress cancelled in [${buffer.toString('hex')}]`);
442
+ logger_1.logger.warning(`Frame(s) in progress cancelled in [${buffer.toString('hex')}]`, NS);
446
443
  }
447
444
  // get rid of everything up to the CAN flag and start reading frame from there, no need to loop through bytes in vain
448
445
  buffer = buffer.subarray(iCAN + 1);
@@ -450,15 +447,14 @@ class UartAsh extends stream_1.EventEmitter {
450
447
  if (!buffer.length) {
451
448
  // skip any CANCEL that results in empty frame (have yet to see one, but just in case...)
452
449
  // shouldn't happen for any other reason, unless receiving bad stuff from port?
453
- debug(`Received empty frame. Skipping.`);
450
+ logger_1.logger.debug(`Received empty frame. Skipping.`, NS);
454
451
  return;
455
452
  }
456
453
  const status = this.receiveFrame(buffer);
457
- if (status === enums_1.EzspStatus.SUCCESS) {
458
- // ?
459
- }
460
- else if ((status !== enums_1.EzspStatus.ASH_IN_PROGRESS) && (status !== enums_1.EzspStatus.NO_RX_DATA)) {
461
- throw new Error(enums_1.EzspStatus[status]);
454
+ if ((status !== enums_1.EzspStatus.SUCCESS) && (status !== enums_1.EzspStatus.ASH_IN_PROGRESS) && (status !== enums_1.EzspStatus.NO_RX_DATA)) {
455
+ logger_1.logger.error(`Error while parsing received frame, status=${enums_1.EzspStatus[status]}.`, NS);
456
+ this.emit(AshEvents.FATAL_ERROR, enums_1.EzspStatus.HOST_FATAL_ERROR);
457
+ return;
462
458
  }
463
459
  }
464
460
  /**
@@ -470,24 +466,34 @@ class UartAsh extends stream_1.EventEmitter {
470
466
  * - EzspStatus.ASH_NCP_FATAL_ERROR)
471
467
  */
472
468
  async start() {
473
- if (this.closing || (this.flags & Flag.CONNECTED)) {
469
+ if (!this.portOpen || (this.flags & Flag.CONNECTED)) {
474
470
  return enums_1.EzspStatus.ERROR_INVALID_CALL;
475
471
  }
476
- console.log(`======== ASH starting ========`);
477
- if (this.serialPort != null) {
478
- this.serialPort.flush(); // clear read/write buffers
472
+ logger_1.logger.info(`======== ASH starting ========`, NS);
473
+ try {
474
+ if (this.serialPort != null) {
475
+ await this.serialPort.asyncFlush(); // clear read/write buffers
476
+ }
477
+ else {
478
+ // XXX: Socket equiv?
479
+ }
479
480
  }
480
- else {
481
- // XXX: Socket equiv?
481
+ catch (err) {
482
+ logger_1.logger.error(`Error while flushing before start: ${err}`, NS);
482
483
  }
483
- this.sendExec();
484
- // block til RSTACK or timeout
484
+ // block til RSTACK, fatal error or timeout
485
+ // NOTE: on average, this seems to take around 1000ms when successful
485
486
  for (let i = 0; i < CONFIG_TIME_RST; i += CONFIG_TIME_RST_CHECK) {
487
+ this.sendExec();
486
488
  if ((this.flags & Flag.CONNECTED)) {
487
- console.log(`======== ASH started ========`);
489
+ logger_1.logger.info(`======== ASH started ========`, NS);
488
490
  return enums_1.EzspStatus.SUCCESS;
489
491
  }
490
- debug(`Waiting for RSTACK... ${i}/${CONFIG_TIME_RST}`);
492
+ else if ((this.hostError !== enums_1.EzspStatus.NO_ERROR) || (this.ncpError !== enums_1.EzspStatus.NO_ERROR)) {
493
+ // don't wait for inevitable fail, bail early, let retry logic in EZSP layer do its thing
494
+ break;
495
+ }
496
+ logger_1.logger.debug(`Waiting for RSTACK... ${i}/${CONFIG_TIME_RST}`, NS);
491
497
  await (0, utils_1.Wait)(CONFIG_TIME_RST_CHECK);
492
498
  }
493
499
  return enums_1.EzspStatus.HOST_FATAL_ERROR;
@@ -497,24 +503,29 @@ class UartAsh extends stream_1.EventEmitter {
497
503
  */
498
504
  async stop() {
499
505
  this.closing = true;
500
- this.printCounters();
506
+ this.logCounters();
507
+ await this.closePort();
508
+ this.initVariables();
509
+ logger_1.logger.info(`======== ASH stopped ========`, NS);
510
+ }
511
+ /**
512
+ * Close port and remove listeners.
513
+ * Does nothing if port not defined/open.
514
+ */
515
+ async closePort() {
501
516
  if (this.serialPort?.isOpen) {
502
517
  try {
503
518
  await this.serialPort.asyncFlushAndClose();
504
- debug(`Serial port closed.`);
505
519
  }
506
520
  catch (err) {
507
- debug(`Failed to close serial port ${err}.`);
521
+ logger_1.logger.error(`Failed to close serial port ${err}.`, NS);
508
522
  }
509
523
  this.serialPort.removeAllListeners();
510
524
  }
511
525
  else if (this.socketPort != null && !this.socketPort.closed) {
512
526
  this.socketPort.destroy();
513
527
  this.socketPort.removeAllListeners();
514
- debug(`Socket port closed.`);
515
528
  }
516
- this.initVariables();
517
- console.log(`======== ASH stopped ========`);
518
529
  }
519
530
  /**
520
531
  * Initializes the ASH serial port and (if enabled) resets the NCP.
@@ -530,16 +541,19 @@ class UartAsh extends stream_1.EventEmitter {
530
541
  if (this.closing) {
531
542
  return enums_1.EzspStatus.ERROR_INVALID_CALL;
532
543
  }
533
- console.log(`======== ASH NCP reset ========`);
544
+ logger_1.logger.info(`======== ASH NCP reset ========`, NS);
534
545
  this.initVariables();
535
546
  let status;
536
547
  // ask ncp to reset itself using RST frame
537
548
  try {
538
- await this.initPort();
549
+ if (!this.portOpen) {
550
+ await this.initPort();
551
+ }
539
552
  this.flags = Flag.RST | Flag.CAN;
540
553
  return enums_1.EzspStatus.SUCCESS;
541
554
  }
542
555
  catch (err) {
556
+ logger_1.logger.error(`Failed to init port with error ${err}`, NS);
543
557
  this.hostError = status;
544
558
  return enums_1.EzspStatus.HOST_FATAL_ERROR;
545
559
  }
@@ -606,7 +620,7 @@ class UartAsh extends stream_1.EventEmitter {
606
620
  if (this.ackRx !== expectedFrm) {
607
621
  this.counters.rxAckTimeouts += 1;
608
622
  this.adjustAckPeriod(true);
609
- debug(`Timer expired waiting for ACK for ${expectedFrm}, current=${this.ackRx}`);
623
+ logger_1.logger.debug(`Timer expired waiting for ACK for ${expectedFrm}, current=${this.ackRx}`, NS);
610
624
  if (++this.timeouts >= consts_1.ASH_MAX_TIMEOUTS) {
611
625
  this.hostDisconnect(enums_1.EzspStatus.ASH_ERROR_TIMEOUTS);
612
626
  return;
@@ -663,18 +677,18 @@ class UartAsh extends stream_1.EventEmitter {
663
677
  len = 1;
664
678
  this.flags &= ~(Flag.RST | Flag.NAK | Flag.ACK);
665
679
  this.sendState = SendState.SHFRAME;
666
- debug(`---> [FRAME type=RST]`);
680
+ logger_1.logger.debug(`---> [FRAME type=RST]`, NS);
667
681
  }
668
682
  else if (this.flags & (Flag.NAK | Flag.ACK)) {
669
683
  if (this.flags & Flag.NAK) {
670
684
  this.txSHBuffer[0] = enums_2.AshFrameType.NAK + (this.frmRx << consts_1.ASH_ACKNUM_BIT);
671
685
  this.flags &= ~(Flag.NRTX | Flag.NAK | Flag.ACK);
672
- debug(`---> [FRAME type=NAK frmRx=${this.frmRx}]`);
686
+ logger_1.logger.debug(`---> [FRAME type=NAK frmRx=${this.frmRx}]`, NS);
673
687
  }
674
688
  else {
675
689
  this.txSHBuffer[0] = enums_2.AshFrameType.ACK + (this.frmRx << consts_1.ASH_ACKNUM_BIT);
676
690
  this.flags &= ~(Flag.NRTX | Flag.ACK);
677
- debug(`---> [FRAME type=ACK frmRx=${this.frmRx}]`);
691
+ logger_1.logger.debug(`---> [FRAME type=ACK frmRx=${this.frmRx}]`, NS);
678
692
  }
679
693
  if (this.flags & Flag.NR) {
680
694
  this.txSHBuffer[0] |= consts_1.ASH_NFLAG_MASK;
@@ -691,7 +705,7 @@ class UartAsh extends stream_1.EventEmitter {
691
705
  len = buffer.len + 1;
692
706
  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;
693
707
  this.sendState = SendState.RETX_DATA;
694
- debug(`---> [FRAME type=DATA_RETX frmReTx=${this.frmReTx} frmRx=${this.frmRx}]`);
708
+ logger_1.logger.debug(`---> [FRAME type=DATA_RETX frmReTx=${this.frmReTx} frmRx=${this.frmRx}]`, NS);
695
709
  }
696
710
  else if (this.ackTx != this.frmRx) {
697
711
  // An ACK should be generated
@@ -705,7 +719,7 @@ class UartAsh extends stream_1.EventEmitter {
705
719
  this.counters.txData += (len - 1);
706
720
  this.txSHBuffer[0] = enums_2.AshFrameType.DATA | (this.frmTx << consts_1.ASH_FRMNUM_BIT) | (this.frmRx << consts_1.ASH_ACKNUM_BIT);
707
721
  this.sendState = SendState.TX_DATA;
708
- debug(`---> [FRAME type=DATA frmTx=${this.frmTx} frmRx=${this.frmRx}]`);
722
+ logger_1.logger.debug(`---> [FRAME type=DATA frmTx=${this.frmTx} frmRx=${this.frmRx}]`, NS);
709
723
  }
710
724
  else {
711
725
  // Otherwise there's nothing to send
@@ -792,27 +806,28 @@ class UartAsh extends stream_1.EventEmitter {
792
806
  case enums_1.EzspStatus.ASH_BAD_CRC:
793
807
  this.counters.rxCrcErrors += 1;
794
808
  this.rejectFrame();
795
- console.error(`Received frame with CRC error`);
809
+ logger_1.logger.error(`Received frame with CRC error`, NS);
796
810
  return enums_1.EzspStatus.NO_RX_DATA;
797
811
  case enums_1.EzspStatus.ASH_COMM_ERROR:
798
812
  this.counters.rxCommErrors += 1;
799
813
  this.rejectFrame();
800
- console.error(`Received frame with comm error`);
814
+ logger_1.logger.error(`Received frame with comm error`, NS);
801
815
  return enums_1.EzspStatus.NO_RX_DATA;
802
816
  case enums_1.EzspStatus.ASH_TOO_SHORT:
803
817
  this.counters.rxTooShort += 1;
804
818
  this.rejectFrame();
805
- console.error(`Received frame shorter than minimum`);
819
+ logger_1.logger.error(`Received frame shorter than minimum`, NS);
806
820
  return enums_1.EzspStatus.NO_RX_DATA;
807
821
  case enums_1.EzspStatus.ASH_TOO_LONG:
808
822
  this.counters.rxTooLong += 1;
809
823
  this.rejectFrame();
810
- console.error(`Received frame longer than maximum`);
824
+ logger_1.logger.error(`Received frame longer than maximum`, NS);
811
825
  return enums_1.EzspStatus.NO_RX_DATA;
812
826
  case enums_1.EzspStatus.ASH_ERROR_XON_XOFF:
813
827
  return this.hostDisconnect(status);
814
828
  default:
815
- throw new Error(`Unhandled error while receiving frame.`);
829
+ logger_1.logger.error(`Unhandled error while receiving frame, status=${enums_1.EzspStatus[status]}.`, NS);
830
+ return this.hostDisconnect(enums_1.EzspStatus.HOST_FATAL_ERROR);
816
831
  }
817
832
  // Got a complete frame - validate its control and length.
818
833
  // On an error the type returned will be TYPE_INVALID.
@@ -830,7 +845,7 @@ class UartAsh extends stream_1.EventEmitter {
830
845
  this.freeNonNullRxBuffer();
831
846
  }
832
847
  const frameTypeStr = enums_2.AshFrameType[frameType];
833
- debug(`<--- [FRAME type=${frameTypeStr}]`);
848
+ logger_1.logger.debug(`<--- [FRAME type=${frameTypeStr}]`, NS);
834
849
  this.countFrame(false);
835
850
  // Process frames received while not in the connected state -
836
851
  // ignore everything except RSTACK and ERROR frames
@@ -850,11 +865,11 @@ class UartAsh extends stream_1.EventEmitter {
850
865
  this.timeouts = 0;
851
866
  this.setAckPeriod(CONFIG_ACK_TIME_INIT);
852
867
  this.flags = Flag.CONNECTED | Flag.ACK;
853
- console.log(`======== ASH connected ========`);
868
+ logger_1.logger.info(`======== ASH connected ========`, NS);
854
869
  return enums_1.EzspStatus.SUCCESS;
855
870
  }
856
871
  else if (frameType === enums_2.AshFrameType.ERROR) {
857
- console.error(`Received ERROR from NCP while connecting, with code=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`);
872
+ logger_1.logger.error(`Received ERROR from NCP while connecting, with code=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`, NS);
858
873
  return this.ncpDisconnect(enums_1.EzspStatus.ASH_NCP_FATAL_ERROR);
859
874
  }
860
875
  return enums_1.EzspStatus.ASH_IN_PROGRESS;
@@ -862,10 +877,10 @@ class UartAsh extends stream_1.EventEmitter {
862
877
  // Connected - process the ackNum in ACK, NAK and DATA frames
863
878
  if ((frameType === enums_2.AshFrameType.DATA) || (frameType === enums_2.AshFrameType.ACK) || (frameType === enums_2.AshFrameType.NAK)) {
864
879
  ackNum = ashGetACKNum(this.rxSHBuffer[0]);
865
- debug(`<--- [FRAME type=${frameTypeStr} ackNum=${ackNum}]`);
880
+ logger_1.logger.debug(`<--- [FRAME type=${frameTypeStr} ackNum=${ackNum}]`, NS);
866
881
  if (!(0, math_1.withinRange)(this.ackRx, ackNum, this.frmTx)) {
867
882
  this.counters.rxBadAckNumber += 1;
868
- debug(`<-x- [FRAME type=${frameTypeStr} ackNum=${ackNum}] Invalid ACK num; not within <${this.ackRx}-${this.frmTx}>`);
883
+ logger_1.logger.debug(`<-x- [FRAME type=${frameTypeStr} ackNum=${ackNum}] Invalid ACK num; not within <${this.ackRx}-${this.frmTx}>`, NS);
869
884
  frameType = enums_2.AshFrameType.INVALID;
870
885
  }
871
886
  else if (ackNum !== this.ackRx) {
@@ -899,7 +914,7 @@ class UartAsh extends stream_1.EventEmitter {
899
914
  if (this.rxDataBuffer == null) {
900
915
  // valid frame but no memory?
901
916
  this.counters.rxNoBuffer += 1;
902
- debug(`<-x- ${frameStr} No buffer available`);
917
+ logger_1.logger.debug(`<-x- ${frameStr} No buffer available`, NS);
903
918
  this.rejectFrame();
904
919
  return enums_1.EzspStatus.NO_RX_SPACE;
905
920
  }
@@ -911,10 +926,10 @@ class UartAsh extends stream_1.EventEmitter {
911
926
  this.frmRx = (0, math_1.inc8)(this.frmRx);
912
927
  this.randomizeBuffer(this.rxDataBuffer.data, this.rxDataBuffer.len); // IN/OUT data
913
928
  this.rxQueue.addTail(this.rxDataBuffer); // add frame to receive queue
914
- debug(`<--- ${frameStr} Added to rxQueue`);
929
+ logger_1.logger.debug(`<--- ${frameStr} Added to rxQueue`, NS);
915
930
  this.counters.rxData += this.rxDataBuffer.len;
916
931
  setImmediate(() => {
917
- this.emit(AshEvents.frame);
932
+ this.emit(AshEvents.FRAME);
918
933
  });
919
934
  return enums_1.EzspStatus.SUCCESS;
920
935
  }
@@ -929,7 +944,7 @@ class UartAsh extends stream_1.EventEmitter {
929
944
  // 1st OOS? then set REJ, send NAK
930
945
  if ((this.flags & Flag.REJ) === 0) {
931
946
  this.counters.rxOutOfSequence += 1;
932
- debug(`<-x- ${frameStr} Out of sequence: expected ${this.frmRx}; got ${frmNum}.`);
947
+ logger_1.logger.debug(`<-x- ${frameStr} Out of sequence: expected ${this.frmRx}; got ${frmNum}.`, NS);
933
948
  }
934
949
  this.rejectFrame();
935
950
  }
@@ -944,16 +959,16 @@ class UartAsh extends stream_1.EventEmitter {
944
959
  break;
945
960
  case enums_2.AshFrameType.RSTACK:
946
961
  // unexpected ncp reset
947
- console.error(`Received unexpected reset from NCP, with reason=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`);
962
+ logger_1.logger.error(`Received unexpected reset from NCP, with reason=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`, NS);
948
963
  this.ncpError = enums_1.EzspStatus.ASH_NCP_FATAL_ERROR;
949
964
  return this.hostDisconnect(enums_1.EzspStatus.ASH_ERROR_NCP_RESET);
950
965
  case enums_2.AshFrameType.ERROR:
951
966
  // ncp error
952
- console.error(`Received ERROR from NCP, with code=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`);
967
+ logger_1.logger.error(`Received ERROR from NCP, with code=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`, NS);
953
968
  return this.ncpDisconnect(enums_1.EzspStatus.ASH_NCP_FATAL_ERROR);
954
969
  case enums_2.AshFrameType.INVALID:
955
970
  // reject invalid frames
956
- debug(`<-x- [FRAME type=${frameTypeStr}] Rejecting. ${this.rxSHBuffer.toString('hex')}`);
971
+ logger_1.logger.debug(`<-x- [FRAME type=${frameTypeStr}] Rejecting. ${this.rxSHBuffer.toString('hex')}`, NS);
957
972
  this.rejectFrame();
958
973
  break;
959
974
  }
@@ -1073,12 +1088,11 @@ class UartAsh extends stream_1.EventEmitter {
1073
1088
  // Set/clear NR flag based on the number of buffers free
1074
1089
  if (this.rxFree.length < CONFIG_NR_LOW_LIMIT) {
1075
1090
  this.flags |= Flag.NR;
1076
- debug(`NOT READY - Signaling NCP`);
1091
+ logger_1.logger.warning(`NOT READY - Signaling NCP`, NS);
1077
1092
  }
1078
1093
  else if (this.rxFree.length > CONFIG_NR_HIGH_LIMIT) {
1079
1094
  this.flags &= ~Flag.NR;
1080
1095
  this.stopNrTimer(); // needed??
1081
- // debug(`READY - Signaling NCP`);// spams-a-lot
1082
1096
  }
1083
1097
  // Force an ACK (or possibly NAK) if we need to send an updated nFlag
1084
1098
  // due to either a changed NR status or to refresh a set nFlag
@@ -1109,8 +1123,7 @@ class UartAsh extends stream_1.EventEmitter {
1109
1123
  hostDisconnect(error) {
1110
1124
  this.flags = 0;
1111
1125
  this.hostError = error;
1112
- console.error(`ASH disconnected: ${enums_1.EzspStatus[error]} | NCP status: ${enums_1.EzspStatus[this.ncpError]}`);
1113
- this.emit(AshEvents.hostError, error);
1126
+ logger_1.logger.error(`ASH disconnected: ${enums_1.EzspStatus[error]} | NCP status: ${enums_1.EzspStatus[this.ncpError]}`, NS);
1114
1127
  return enums_1.EzspStatus.HOST_FATAL_ERROR;
1115
1128
  }
1116
1129
  /**
@@ -1121,8 +1134,7 @@ class UartAsh extends stream_1.EventEmitter {
1121
1134
  ncpDisconnect(error) {
1122
1135
  this.flags = 0;
1123
1136
  this.ncpError = error;
1124
- console.error(`ASH disconnected | NCP status: ${enums_1.EzspStatus[this.ncpError]}`);
1125
- this.emit(AshEvents.ncpError, error);
1137
+ logger_1.logger.error(`ASH disconnected | NCP status: ${enums_1.EzspStatus[this.ncpError]}`, NS);
1126
1138
  return enums_1.EzspStatus.ASH_NCP_FATAL_ERROR;
1127
1139
  }
1128
1140
  /**
@@ -1195,11 +1207,11 @@ class UartAsh extends stream_1.EventEmitter {
1195
1207
  }
1196
1208
  else {
1197
1209
  this.counters.rxBadControl += 1;
1198
- debug(`Frame illegal control ${control}.`); // EzspStatus.ASH_BAD_CONTROL
1210
+ logger_1.logger.debug(`Frame illegal control ${control}.`, NS); // EzspStatus.ASH_BAD_CONTROL
1199
1211
  return enums_2.AshFrameType.INVALID;
1200
1212
  }
1201
1213
  this.counters.rxBadLength += 1;
1202
- debug(`Frame illegal length ${len} for control ${control}.`); // EzspStatus.ASH_BAD_LENGTH
1214
+ logger_1.logger.debug(`Frame illegal length ${len} for control ${control}.`, NS); // EzspStatus.ASH_BAD_LENGTH
1203
1215
  return enums_2.AshFrameType.INVALID;
1204
1216
  }
1205
1217
  /**
@@ -1552,32 +1564,69 @@ class UartAsh extends stream_1.EventEmitter {
1552
1564
  }
1553
1565
  }
1554
1566
  /**
1555
- * Prints counters in a nicely formatted table.
1567
+ * Read and clear ASH layer counters in the same manner as the NCP ones.
1568
+ * @returns
1569
+ */
1570
+ readAndClearCounters() {
1571
+ const counters = [
1572
+ this.counters.txData,
1573
+ this.counters.txAllFrames,
1574
+ this.counters.txDataFrames,
1575
+ this.counters.txAckFrames,
1576
+ this.counters.txNakFrames,
1577
+ this.counters.txReDataFrames,
1578
+ this.counters.txN1Frames,
1579
+ this.counters.txCancelled,
1580
+ this.counters.rxData,
1581
+ this.counters.rxAllFrames,
1582
+ this.counters.rxDataFrames,
1583
+ this.counters.rxAckFrames,
1584
+ this.counters.rxNakFrames,
1585
+ this.counters.rxReDataFrames,
1586
+ this.counters.rxN1Frames,
1587
+ this.counters.rxCancelled,
1588
+ this.counters.rxCrcErrors,
1589
+ this.counters.rxCommErrors,
1590
+ this.counters.rxTooShort,
1591
+ this.counters.rxTooLong,
1592
+ this.counters.rxBadControl,
1593
+ this.counters.rxBadLength,
1594
+ this.counters.rxBadAckNumber,
1595
+ this.counters.rxNoBuffer,
1596
+ this.counters.rxDuplicates,
1597
+ this.counters.rxOutOfSequence,
1598
+ this.counters.rxAckTimeouts,
1599
+ ];
1600
+ for (const c in this.counters) {
1601
+ this.counters[c] = 0;
1602
+ }
1603
+ return counters;
1604
+ }
1605
+ /**
1606
+ * Log counters (pretty-formatted) as they are since last time they were cleared.
1607
+ * Used on ASH layer stop to get 'pre-stop state'.
1556
1608
  */
1557
- printCounters() {
1558
- console.table({
1559
- "Total frames": { "Received": this.counters.rxAllFrames, "Transmitted": this.counters.txAllFrames },
1560
- "Cancelled": { "Received": this.counters.rxCancelled, "Transmitted": this.counters.txCancelled },
1561
- "DATA frames": { "Received": this.counters.rxDataFrames, "Transmitted": this.counters.txDataFrames },
1562
- "DATA bytes": { "Received": this.counters.rxData, "Transmitted": this.counters.txData },
1563
- "Retry frames": { "Received": this.counters.rxReDataFrames, "Transmitted": this.counters.txReDataFrames },
1564
- "ACK frames": { "Received": this.counters.rxAckFrames, "Transmitted": this.counters.txAckFrames },
1565
- "NAK frames": { "Received": this.counters.rxNakFrames, "Transmitted": this.counters.txNakFrames },
1566
- "nRdy frames": { "Received": this.counters.rxN1Frames, "Transmitted": this.counters.txN1Frames },
1567
- });
1568
- console.table({
1569
- "CRC errors": { "Received": this.counters.rxCrcErrors },
1570
- "Comm errors": { "Received": this.counters.rxCommErrors },
1571
- "Length < minimum": { "Received": this.counters.rxTooShort },
1572
- "Length > maximum": { "Received": this.counters.rxTooLong },
1573
- "Bad controls": { "Received": this.counters.rxBadControl },
1574
- "Bad lengths": { "Received": this.counters.rxBadLength },
1575
- "Bad ACK numbers": { "Received": this.counters.rxBadAckNumber },
1576
- "Out of buffers": { "Received": this.counters.rxNoBuffer },
1577
- "Retry dupes": { "Received": this.counters.rxDuplicates },
1578
- "Out of sequence": { "Received": this.counters.rxOutOfSequence },
1579
- "ACK timeouts": { "Received": this.counters.rxAckTimeouts },
1580
- });
1609
+ logCounters() {
1610
+ logger_1.logger.info(`ASH COUNTERS since last clear:`, NS);
1611
+ logger_1.logger.info(` Total frames: RX=${this.counters.rxAllFrames}, TX=${this.counters.txAllFrames}`, NS);
1612
+ logger_1.logger.info(` Cancelled : RX=${this.counters.rxCancelled}, TX=${this.counters.txCancelled}`, NS);
1613
+ logger_1.logger.info(` DATA frames : RX=${this.counters.rxDataFrames}, TX=${this.counters.txDataFrames}`, NS);
1614
+ logger_1.logger.info(` DATA bytes : RX=${this.counters.rxData}, TX=${this.counters.txData}`, NS);
1615
+ logger_1.logger.info(` Retry frames: RX=${this.counters.rxReDataFrames}, TX=${this.counters.txReDataFrames}`, NS);
1616
+ logger_1.logger.info(` ACK frames : RX=${this.counters.rxAckFrames}, TX=${this.counters.txAckFrames}`, NS);
1617
+ logger_1.logger.info(` NAK frames : RX=${this.counters.rxNakFrames}, TX=${this.counters.txNakFrames}`, NS);
1618
+ logger_1.logger.info(` nRdy frames : RX=${this.counters.rxN1Frames}, TX=${this.counters.txN1Frames}`, NS);
1619
+ logger_1.logger.info(` CRC errors : RX=${this.counters.rxCrcErrors}`, NS);
1620
+ logger_1.logger.info(` Comm errors : RX=${this.counters.rxCommErrors}`, NS);
1621
+ logger_1.logger.info(` Length < minimum: RX=${this.counters.rxTooShort}`, NS);
1622
+ logger_1.logger.info(` Length > maximum: RX=${this.counters.rxTooLong}`, NS);
1623
+ logger_1.logger.info(` Bad controls : RX=${this.counters.rxBadControl}`, NS);
1624
+ logger_1.logger.info(` Bad lengths : RX=${this.counters.rxBadLength}`, NS);
1625
+ logger_1.logger.info(` Bad ACK numbers : RX=${this.counters.rxBadAckNumber}`, NS);
1626
+ logger_1.logger.info(` Out of buffers : RX=${this.counters.rxNoBuffer}`, NS);
1627
+ logger_1.logger.info(` Retry dupes : RX=${this.counters.rxDuplicates}`, NS);
1628
+ logger_1.logger.info(` Out of sequence : RX=${this.counters.rxOutOfSequence}`, NS);
1629
+ logger_1.logger.info(` ACK timeouts : RX=${this.counters.rxAckTimeouts}`, NS);
1581
1630
  }
1582
1631
  }
1583
1632
  exports.UartAsh = UartAsh;