@willieee802/zigbee-herdsman 0.48.2 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1025) hide show
  1. package/.github/ISSUE_TEMPLATE/config.yml +5 -0
  2. package/.github/copilot-instructions.md +689 -0
  3. package/.github/dependabot.yml +22 -0
  4. package/.github/prompts/copilot-instructions-blueprint-generator.prompt.md +294 -0
  5. package/.github/prompts/create-agentsmd.prompt.md +249 -0
  6. package/.github/prompts/create-specification.prompt.md +127 -0
  7. package/.github/prompts/review-and-refactor.prompt.md +15 -0
  8. package/.github/prompts/update-specification.prompt.md +127 -0
  9. package/.github/workflows/ci.yml +70 -0
  10. package/.github/workflows/release-please.yml +18 -0
  11. package/.github/workflows/stale.yml +20 -0
  12. package/.github/workflows/typedoc.yaml +47 -0
  13. package/.release-please-manifest.json +2 -2
  14. package/.vscode/extensions.json +3 -0
  15. package/.vscode/settings.json +11 -0
  16. package/AGENTS.md +441 -0
  17. package/CHANGELOG.md +1245 -0
  18. package/README.md +2 -2
  19. package/biome.json +103 -0
  20. package/examples/join-and-log.js +18 -18
  21. package/package.json +83 -70
  22. package/release-please-config.json +8 -8
  23. package/scripts/check-clusters-changes.ts +328 -0
  24. package/scripts/clusters-changes.log +584 -0
  25. package/scripts/clusters-typegen.ts +608 -0
  26. package/scripts/utils.ts +88 -0
  27. package/scripts/zap-update-clusters-report.json +303 -0
  28. package/scripts/zap-update-clusters.ts +1520 -0
  29. package/scripts/zap-update-types.ts +707 -0
  30. package/scripts/zap-xml-clusters-overrides-data.ts +52 -0
  31. package/scripts/zap-xml-clusters-overrides.ts +400 -0
  32. package/scripts/zap-xml-types.ts +146 -0
  33. package/src/adapter/adapter.ts +210 -0
  34. package/src/adapter/adapterDiscovery.ts +736 -0
  35. package/src/adapter/const.ts +12 -0
  36. package/src/adapter/deconz/adapter/deconzAdapter.ts +888 -0
  37. package/src/adapter/deconz/driver/constants.ts +246 -0
  38. package/src/adapter/deconz/driver/driver.ts +1528 -0
  39. package/src/adapter/deconz/driver/frame.ts +11 -0
  40. package/src/adapter/deconz/driver/frameParser.ts +766 -0
  41. package/src/adapter/deconz/driver/parser.ts +45 -0
  42. package/src/adapter/deconz/driver/writer.ts +22 -0
  43. package/src/adapter/deconz/types.d.ts +13 -0
  44. package/src/adapter/ember/adapter/emberAdapter.ts +2262 -0
  45. package/src/adapter/ember/adapter/endpoints.ts +86 -0
  46. package/src/adapter/ember/adapter/oneWaitress.ts +324 -0
  47. package/src/adapter/ember/adapter/tokensManager.ts +780 -0
  48. package/src/adapter/ember/consts.ts +178 -0
  49. package/src/adapter/ember/enums.ts +1746 -0
  50. package/src/adapter/ember/ezsp/buffalo.ts +1392 -0
  51. package/src/adapter/ember/ezsp/consts.ts +148 -0
  52. package/src/adapter/ember/ezsp/enums.ts +1114 -0
  53. package/src/adapter/ember/ezsp/ezsp.ts +9073 -0
  54. package/src/adapter/ember/ezspError.ts +10 -0
  55. package/src/adapter/ember/types.ts +866 -0
  56. package/src/adapter/ember/uart/ash.ts +1933 -0
  57. package/src/adapter/ember/uart/consts.ts +109 -0
  58. package/src/adapter/ember/uart/enums.ts +192 -0
  59. package/src/adapter/ember/uart/parser.ts +42 -0
  60. package/src/adapter/ember/uart/queues.ts +247 -0
  61. package/src/adapter/ember/uart/writer.ts +50 -0
  62. package/src/adapter/ember/utils/initters.ts +58 -0
  63. package/src/adapter/ember/utils/math.ts +71 -0
  64. package/src/adapter/events.ts +21 -0
  65. package/src/adapter/ezsp/adapter/backup.ts +100 -0
  66. package/src/adapter/ezsp/adapter/ezspAdapter.ts +632 -0
  67. package/src/adapter/ezsp/driver/commands.ts +2497 -0
  68. package/src/adapter/ezsp/driver/consts.ts +11 -0
  69. package/src/adapter/ezsp/driver/driver.ts +1002 -0
  70. package/src/adapter/ezsp/driver/ezsp.ts +802 -0
  71. package/src/adapter/ezsp/driver/frame.ts +101 -0
  72. package/src/adapter/ezsp/driver/index.ts +4 -0
  73. package/src/adapter/ezsp/driver/multicast.ts +78 -0
  74. package/src/adapter/ezsp/driver/parser.ts +81 -0
  75. package/src/adapter/ezsp/driver/types/basic.ts +201 -0
  76. package/src/adapter/ezsp/driver/types/index.ts +239 -0
  77. package/src/adapter/ezsp/driver/types/named.ts +2330 -0
  78. package/src/adapter/ezsp/driver/types/struct.ts +844 -0
  79. package/src/adapter/ezsp/driver/uart.ts +460 -0
  80. package/src/adapter/ezsp/driver/utils/crc16ccitt.ts +44 -0
  81. package/src/adapter/ezsp/driver/utils/index.ts +32 -0
  82. package/src/adapter/ezsp/driver/writer.ts +64 -0
  83. package/src/adapter/index.ts +3 -0
  84. package/src/adapter/serialPort.ts +58 -0
  85. package/src/adapter/tstype.ts +57 -0
  86. package/src/adapter/utils.ts +41 -0
  87. package/src/adapter/z-stack/adapter/adapter-backup.ts +509 -0
  88. package/src/adapter/z-stack/adapter/adapter-nv-memory.ts +457 -0
  89. package/src/adapter/z-stack/adapter/endpoints.ts +60 -0
  90. package/src/adapter/z-stack/adapter/manager.ts +543 -0
  91. package/src/adapter/z-stack/adapter/tstype.ts +6 -0
  92. package/src/adapter/z-stack/adapter/zStackAdapter.ts +1350 -0
  93. package/src/adapter/z-stack/constants/af.ts +27 -0
  94. package/src/adapter/z-stack/constants/common.ts +285 -0
  95. package/src/adapter/z-stack/constants/dbg.ts +23 -0
  96. package/src/adapter/z-stack/constants/index.ts +11 -0
  97. package/src/adapter/z-stack/constants/mac.ts +128 -0
  98. package/src/adapter/z-stack/constants/sapi.ts +25 -0
  99. package/src/adapter/z-stack/constants/sys.ts +72 -0
  100. package/src/adapter/z-stack/constants/util.ts +82 -0
  101. package/src/adapter/z-stack/constants/utils.ts +14 -0
  102. package/src/adapter/z-stack/constants/zdo.ts +103 -0
  103. package/src/adapter/z-stack/models/startup-options.ts +13 -0
  104. package/src/adapter/z-stack/structs/entries/address-manager-entry.ts +44 -0
  105. package/src/adapter/z-stack/structs/entries/address-manager-table.ts +19 -0
  106. package/src/adapter/z-stack/structs/entries/aps-link-key-data-entry.ts +12 -0
  107. package/src/adapter/z-stack/structs/entries/aps-link-key-data-table.ts +21 -0
  108. package/src/adapter/z-stack/structs/entries/aps-tc-link-key-entry.ts +19 -0
  109. package/src/adapter/z-stack/structs/entries/aps-tc-link-key-table.ts +21 -0
  110. package/src/adapter/z-stack/structs/entries/channel-list.ts +8 -0
  111. package/src/adapter/z-stack/structs/entries/has-configured.ts +16 -0
  112. package/src/adapter/z-stack/structs/entries/index.ts +16 -0
  113. package/src/adapter/z-stack/structs/entries/nib.ts +66 -0
  114. package/src/adapter/z-stack/structs/entries/nwk-key-descriptor.ts +15 -0
  115. package/src/adapter/z-stack/structs/entries/nwk-key.ts +13 -0
  116. package/src/adapter/z-stack/structs/entries/nwk-pan-id.ts +8 -0
  117. package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.ts +20 -0
  118. package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.ts +19 -0
  119. package/src/adapter/z-stack/structs/entries/security-manager-entry.ts +33 -0
  120. package/src/adapter/z-stack/structs/entries/security-manager-table.ts +22 -0
  121. package/src/adapter/z-stack/structs/index.ts +4 -0
  122. package/src/adapter/z-stack/structs/serializable-memory-object.ts +14 -0
  123. package/src/adapter/z-stack/structs/struct.ts +367 -0
  124. package/src/adapter/z-stack/structs/table.ts +198 -0
  125. package/src/adapter/z-stack/unpi/constants.ts +33 -0
  126. package/src/adapter/z-stack/unpi/frame.ts +62 -0
  127. package/src/adapter/z-stack/unpi/index.ts +4 -0
  128. package/src/adapter/z-stack/unpi/parser.ts +67 -0
  129. package/src/adapter/z-stack/unpi/writer.ts +37 -0
  130. package/src/adapter/z-stack/utils/channel-list.ts +40 -0
  131. package/src/adapter/z-stack/utils/index.ts +2 -0
  132. package/src/adapter/z-stack/utils/network-options.ts +26 -0
  133. package/src/adapter/z-stack/znp/buffaloZnp.ts +175 -0
  134. package/src/adapter/z-stack/znp/definition.ts +2713 -0
  135. package/src/adapter/z-stack/znp/index.ts +2 -0
  136. package/src/adapter/z-stack/znp/parameterType.ts +22 -0
  137. package/src/adapter/z-stack/znp/tstype.ts +44 -0
  138. package/src/adapter/z-stack/znp/utils.ts +10 -0
  139. package/src/adapter/z-stack/znp/znp.ts +345 -0
  140. package/src/adapter/z-stack/znp/zpiObject.ts +148 -0
  141. package/src/adapter/zboss/adapter/zbossAdapter.ts +535 -0
  142. package/src/adapter/zboss/commands.ts +1184 -0
  143. package/src/adapter/zboss/consts.ts +9 -0
  144. package/src/adapter/zboss/driver.ts +422 -0
  145. package/src/adapter/zboss/enums.ts +360 -0
  146. package/src/adapter/zboss/frame.ts +227 -0
  147. package/src/adapter/zboss/reader.ts +65 -0
  148. package/src/adapter/zboss/types.ts +0 -0
  149. package/src/adapter/zboss/uart.ts +428 -0
  150. package/src/adapter/zboss/utils.ts +58 -0
  151. package/src/adapter/zboss/writer.ts +49 -0
  152. package/src/adapter/zigate/adapter/patchZdoBuffaloBE.ts +25 -0
  153. package/src/adapter/zigate/adapter/zigateAdapter.ts +633 -0
  154. package/src/adapter/zigate/driver/LICENSE +17 -0
  155. package/src/adapter/zigate/driver/buffaloZiGate.ts +210 -0
  156. package/src/adapter/zigate/driver/commandType.ts +418 -0
  157. package/src/adapter/zigate/driver/constants.ts +150 -0
  158. package/src/adapter/zigate/driver/frame.ts +197 -0
  159. package/src/adapter/zigate/driver/messageType.ts +287 -0
  160. package/src/adapter/zigate/driver/parameterType.ts +32 -0
  161. package/src/adapter/zigate/driver/ziGateObject.ts +146 -0
  162. package/src/adapter/zigate/driver/zigate.ts +422 -0
  163. package/src/adapter/zoh/adapter/utils.ts +27 -0
  164. package/src/adapter/zoh/adapter/zohAdapter.ts +931 -0
  165. package/src/buffalo/buffalo.ts +336 -0
  166. package/src/buffalo/index.ts +1 -0
  167. package/src/controller/controller.ts +1159 -0
  168. package/src/controller/database.ts +148 -0
  169. package/src/controller/events.ts +52 -0
  170. package/src/controller/greenPower.ts +613 -0
  171. package/src/controller/helpers/index.ts +1 -0
  172. package/src/controller/helpers/installCodes.ts +107 -0
  173. package/src/controller/helpers/ota.ts +575 -0
  174. package/src/controller/helpers/request.ts +96 -0
  175. package/src/controller/helpers/requestQueue.ts +126 -0
  176. package/src/controller/helpers/zclFrameConverter.ts +64 -0
  177. package/src/controller/helpers/zclTransactionSequenceNumber.ts +15 -0
  178. package/src/controller/index.ts +6 -0
  179. package/src/controller/model/device.ts +1791 -0
  180. package/src/controller/model/endpoint.ts +1235 -0
  181. package/src/controller/model/entity.ts +43 -0
  182. package/src/controller/model/group.ts +446 -0
  183. package/src/controller/model/index.ts +5 -0
  184. package/src/controller/model/konnextConfig.ts +6 -0
  185. package/src/controller/model/zigbeeEntity.ts +30 -0
  186. package/src/controller/touchlink.ts +195 -0
  187. package/src/controller/tstype.ts +374 -0
  188. package/src/index.ts +14 -0
  189. package/src/models/backup-storage-legacy.ts +48 -0
  190. package/src/models/backup-storage-unified.ts +47 -0
  191. package/src/models/backup.ts +37 -0
  192. package/src/models/index.ts +5 -0
  193. package/src/models/network-options.ts +11 -0
  194. package/src/utils/aes.ts +218 -0
  195. package/src/utils/async-mutex.ts +31 -0
  196. package/src/utils/backup.ts +152 -0
  197. package/src/utils/index.ts +5 -0
  198. package/src/utils/logger.ts +20 -0
  199. package/src/utils/patchBigIntSerialization.ts +8 -0
  200. package/src/utils/queue.ts +79 -0
  201. package/src/utils/timeService.ts +139 -0
  202. package/src/utils/utils.ts +19 -0
  203. package/src/utils/wait.ts +5 -0
  204. package/src/utils/waitress.ts +96 -0
  205. package/src/zspec/consts.ts +89 -0
  206. package/src/zspec/enums.ts +22 -0
  207. package/src/zspec/index.ts +3 -0
  208. package/src/zspec/tstypes.ts +18 -0
  209. package/src/zspec/utils.ts +247 -0
  210. package/src/zspec/zcl/buffaloZcl.ts +1073 -0
  211. package/src/zspec/zcl/definition/cluster.ts +7845 -0
  212. package/src/zspec/zcl/definition/clusters-types.ts +8577 -0
  213. package/src/zspec/zcl/definition/consts.ts +24 -0
  214. package/src/zspec/zcl/definition/datatypes.ts +2454 -0
  215. package/src/zspec/zcl/definition/enums.ts +224 -0
  216. package/src/zspec/zcl/definition/foundation.ts +342 -0
  217. package/src/zspec/zcl/definition/manufacturerCode.ts +730 -0
  218. package/src/zspec/zcl/definition/status.ts +69 -0
  219. package/src/zspec/zcl/definition/tstype.ts +446 -0
  220. package/src/zspec/zcl/index.ts +11 -0
  221. package/src/zspec/zcl/utils.ts +521 -0
  222. package/src/zspec/zcl/zclFrame.ts +383 -0
  223. package/src/zspec/zcl/zclHeader.ts +102 -0
  224. package/src/zspec/zcl/zclStatusError.ts +10 -0
  225. package/src/zspec/zdo/buffaloZdo.ts +2336 -0
  226. package/src/zspec/zdo/definition/clusters.ts +722 -0
  227. package/src/zspec/zdo/definition/consts.ts +16 -0
  228. package/src/zspec/zdo/definition/enums.ts +99 -0
  229. package/src/zspec/zdo/definition/status.ts +105 -0
  230. package/src/zspec/zdo/definition/tstypes.ts +1062 -0
  231. package/src/zspec/zdo/index.ts +7 -0
  232. package/src/zspec/zdo/utils.ts +76 -0
  233. package/src/zspec/zdo/zdoStatusError.ts +10 -0
  234. package/test/adapter/adapter.test.ts +1276 -0
  235. package/test/adapter/ember/ash.test.ts +337 -0
  236. package/test/adapter/ember/consts.ts +131 -0
  237. package/test/adapter/ember/emberAdapter.test.ts +3447 -0
  238. package/test/adapter/ember/ezsp.test.ts +389 -0
  239. package/test/adapter/ember/ezspBuffalo.test.ts +93 -0
  240. package/test/adapter/ember/ezspError.test.ts +12 -0
  241. package/test/adapter/ember/math.test.ts +190 -0
  242. package/test/adapter/ezsp/frame.test.ts +30 -0
  243. package/test/adapter/ezsp/uart.test.ts +181 -0
  244. package/test/adapter/z-stack/adapter.test.ts +4260 -0
  245. package/test/adapter/z-stack/constants.test.ts +33 -0
  246. package/test/adapter/z-stack/structs.test.ts +115 -0
  247. package/test/adapter/z-stack/unpi.test.ts +213 -0
  248. package/test/adapter/z-stack/znp.test.ts +1288 -0
  249. package/test/adapter/zboss/fixZdoResponse.test.ts +179 -0
  250. package/test/adapter/zigate/patchZdoBuffaloBE.test.ts +81 -0
  251. package/test/adapter/zigate/zdo.test.ts +187 -0
  252. package/test/adapter/zoh/utils.test.ts +36 -0
  253. package/test/adapter/zoh/zohAdapter.test.ts +1451 -0
  254. package/test/benchOptions.ts +14 -0
  255. package/test/buffalo.test.ts +431 -0
  256. package/test/controller.bench.ts +215 -0
  257. package/test/controller.test.ts +10030 -0
  258. package/test/data/integrity-code-1166-012B-24031511-upgradeMe-RB 249 T.zigbee +0 -0
  259. package/test/data/manuf-tags-tradfri-cv-cct-unified_release_prod_v587757105_33e34452-9267-4665-bc5a-844c8f61f063.ota +0 -0
  260. package/test/data/padded-tretakt_smart_plug_soc-0x1100-2.4.25-prod.ota.ota.signed +0 -0
  261. package/test/data/telink-aes-A60_RGBW_T-0x00B6-0x03483712-MF_DIS.OTA +0 -0
  262. package/test/data/zbminir2_v1.0.8.ota +0 -0
  263. package/test/device-ota.test.ts +3332 -0
  264. package/test/greenpower.test.ts +1409 -0
  265. package/test/mockAdapters.ts +95 -0
  266. package/test/mockDevices.ts +623 -0
  267. package/test/requests.bench.ts +321 -0
  268. package/test/testUtils.ts +20 -0
  269. package/test/timeService.test.ts +214 -0
  270. package/test/tsconfig.json +9 -0
  271. package/test/utils/math.ts +19 -0
  272. package/test/utils.test.ts +352 -0
  273. package/test/vitest.config.mts +28 -0
  274. package/test/vitest.ts +9 -0
  275. package/test/zcl.test.ts +2858 -0
  276. package/test/zspec/utils.test.ts +68 -0
  277. package/test/zspec/zcl/buffalo.test.ts +1316 -0
  278. package/test/zspec/zcl/frame.test.ts +1056 -0
  279. package/test/zspec/zcl/utils.test.ts +650 -0
  280. package/test/zspec/zdo/buffalo.test.ts +1850 -0
  281. package/test/zspec/zdo/utils.test.ts +241 -0
  282. package/tsconfig.json +8 -10
  283. package/.babelrc.js +0 -6
  284. package/.eslintignore +0 -3
  285. package/dist/adapter/adapter.d.ts +0 -64
  286. package/dist/adapter/adapter.d.ts.map +0 -1
  287. package/dist/adapter/adapter.js +0 -157
  288. package/dist/adapter/adapter.js.map +0 -1
  289. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +0 -71
  290. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +0 -1
  291. package/dist/adapter/deconz/adapter/deconzAdapter.js +0 -1072
  292. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +0 -1
  293. package/dist/adapter/deconz/adapter/index.d.ts +0 -3
  294. package/dist/adapter/deconz/adapter/index.d.ts.map +0 -1
  295. package/dist/adapter/deconz/adapter/index.js +0 -11
  296. package/dist/adapter/deconz/adapter/index.js.map +0 -1
  297. package/dist/adapter/deconz/driver/constants.d.ts +0 -105
  298. package/dist/adapter/deconz/driver/constants.d.ts.map +0 -1
  299. package/dist/adapter/deconz/driver/constants.js +0 -56
  300. package/dist/adapter/deconz/driver/constants.js.map +0 -1
  301. package/dist/adapter/deconz/driver/driver.d.ts +0 -82
  302. package/dist/adapter/deconz/driver/driver.d.ts.map +0 -1
  303. package/dist/adapter/deconz/driver/driver.js +0 -751
  304. package/dist/adapter/deconz/driver/driver.js.map +0 -1
  305. package/dist/adapter/deconz/driver/frame.d.ts +0 -7
  306. package/dist/adapter/deconz/driver/frame.d.ts.map +0 -1
  307. package/dist/adapter/deconz/driver/frame.js +0 -14
  308. package/dist/adapter/deconz/driver/frame.js.map +0 -1
  309. package/dist/adapter/deconz/driver/frameParser.d.ts +0 -3
  310. package/dist/adapter/deconz/driver/frameParser.d.ts.map +0 -1
  311. package/dist/adapter/deconz/driver/frameParser.js +0 -444
  312. package/dist/adapter/deconz/driver/frameParser.js.map +0 -1
  313. package/dist/adapter/deconz/driver/parser.d.ts +0 -13
  314. package/dist/adapter/deconz/driver/parser.d.ts.map +0 -1
  315. package/dist/adapter/deconz/driver/parser.js +0 -64
  316. package/dist/adapter/deconz/driver/parser.js.map +0 -1
  317. package/dist/adapter/deconz/driver/writer.d.ts +0 -9
  318. package/dist/adapter/deconz/driver/writer.d.ts.map +0 -1
  319. package/dist/adapter/deconz/driver/writer.js +0 -45
  320. package/dist/adapter/deconz/driver/writer.js.map +0 -1
  321. package/dist/adapter/ember/adapter/emberAdapter.d.ts +0 -806
  322. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +0 -1
  323. package/dist/adapter/ember/adapter/emberAdapter.js +0 -2942
  324. package/dist/adapter/ember/adapter/emberAdapter.js.map +0 -1
  325. package/dist/adapter/ember/adapter/endpoints.d.ts +0 -27
  326. package/dist/adapter/ember/adapter/endpoints.d.ts.map +0 -1
  327. package/dist/adapter/ember/adapter/endpoints.js +0 -68
  328. package/dist/adapter/ember/adapter/endpoints.js.map +0 -1
  329. package/dist/adapter/ember/adapter/index.d.ts +0 -3
  330. package/dist/adapter/ember/adapter/index.d.ts.map +0 -1
  331. package/dist/adapter/ember/adapter/index.js +0 -6
  332. package/dist/adapter/ember/adapter/index.js.map +0 -1
  333. package/dist/adapter/ember/adapter/oneWaitress.d.ts +0 -108
  334. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +0 -1
  335. package/dist/adapter/ember/adapter/oneWaitress.js +0 -241
  336. package/dist/adapter/ember/adapter/oneWaitress.js.map +0 -1
  337. package/dist/adapter/ember/adapter/requestQueue.d.ts +0 -57
  338. package/dist/adapter/ember/adapter/requestQueue.d.ts.map +0 -1
  339. package/dist/adapter/ember/adapter/requestQueue.js +0 -139
  340. package/dist/adapter/ember/adapter/requestQueue.js.map +0 -1
  341. package/dist/adapter/ember/adapter/tokensManager.d.ts +0 -69
  342. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +0 -1
  343. package/dist/adapter/ember/adapter/tokensManager.js +0 -688
  344. package/dist/adapter/ember/adapter/tokensManager.js.map +0 -1
  345. package/dist/adapter/ember/consts.d.ts +0 -191
  346. package/dist/adapter/ember/consts.d.ts.map +0 -1
  347. package/dist/adapter/ember/consts.js +0 -246
  348. package/dist/adapter/ember/consts.js.map +0 -1
  349. package/dist/adapter/ember/enums.d.ts +0 -2172
  350. package/dist/adapter/ember/enums.d.ts.map +0 -1
  351. package/dist/adapter/ember/enums.js +0 -2375
  352. package/dist/adapter/ember/enums.js.map +0 -1
  353. package/dist/adapter/ember/ezsp/buffalo.d.ts +0 -156
  354. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +0 -1
  355. package/dist/adapter/ember/ezsp/buffalo.js +0 -1033
  356. package/dist/adapter/ember/ezsp/buffalo.js.map +0 -1
  357. package/dist/adapter/ember/ezsp/consts.d.ts +0 -116
  358. package/dist/adapter/ember/ezsp/consts.d.ts.map +0 -1
  359. package/dist/adapter/ember/ezsp/consts.js +0 -128
  360. package/dist/adapter/ember/ezsp/consts.js.map +0 -1
  361. package/dist/adapter/ember/ezsp/enums.d.ts +0 -879
  362. package/dist/adapter/ember/ezsp/enums.d.ts.map +0 -1
  363. package/dist/adapter/ember/ezsp/enums.js +0 -948
  364. package/dist/adapter/ember/ezsp/enums.js.map +0 -1
  365. package/dist/adapter/ember/ezsp/ezsp.d.ts +0 -2662
  366. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +0 -1
  367. package/dist/adapter/ember/ezsp/ezsp.js +0 -6454
  368. package/dist/adapter/ember/ezsp/ezsp.js.map +0 -1
  369. package/dist/adapter/ember/types.d.ts +0 -733
  370. package/dist/adapter/ember/types.d.ts.map +0 -1
  371. package/dist/adapter/ember/types.js +0 -3
  372. package/dist/adapter/ember/types.js.map +0 -1
  373. package/dist/adapter/ember/uart/ash.d.ts +0 -464
  374. package/dist/adapter/ember/uart/ash.d.ts.map +0 -1
  375. package/dist/adapter/ember/uart/ash.js +0 -1633
  376. package/dist/adapter/ember/uart/ash.js.map +0 -1
  377. package/dist/adapter/ember/uart/consts.d.ts +0 -91
  378. package/dist/adapter/ember/uart/consts.d.ts.map +0 -1
  379. package/dist/adapter/ember/uart/consts.js +0 -100
  380. package/dist/adapter/ember/uart/consts.js.map +0 -1
  381. package/dist/adapter/ember/uart/enums.d.ts +0 -191
  382. package/dist/adapter/ember/uart/enums.d.ts.map +0 -1
  383. package/dist/adapter/ember/uart/enums.js +0 -197
  384. package/dist/adapter/ember/uart/enums.js.map +0 -1
  385. package/dist/adapter/ember/uart/parser.d.ts +0 -10
  386. package/dist/adapter/ember/uart/parser.d.ts.map +0 -1
  387. package/dist/adapter/ember/uart/parser.js +0 -37
  388. package/dist/adapter/ember/uart/parser.js.map +0 -1
  389. package/dist/adapter/ember/uart/queues.d.ts +0 -85
  390. package/dist/adapter/ember/uart/queues.d.ts.map +0 -1
  391. package/dist/adapter/ember/uart/queues.js +0 -214
  392. package/dist/adapter/ember/uart/queues.js.map +0 -1
  393. package/dist/adapter/ember/uart/writer.d.ts +0 -15
  394. package/dist/adapter/ember/uart/writer.d.ts.map +0 -1
  395. package/dist/adapter/ember/uart/writer.js +0 -46
  396. package/dist/adapter/ember/uart/writer.js.map +0 -1
  397. package/dist/adapter/ember/utils/initters.d.ts +0 -20
  398. package/dist/adapter/ember/utils/initters.d.ts.map +0 -1
  399. package/dist/adapter/ember/utils/initters.js +0 -58
  400. package/dist/adapter/ember/utils/initters.js.map +0 -1
  401. package/dist/adapter/ember/utils/math.d.ts +0 -51
  402. package/dist/adapter/ember/utils/math.d.ts.map +0 -1
  403. package/dist/adapter/ember/utils/math.js +0 -102
  404. package/dist/adapter/ember/utils/math.js.map +0 -1
  405. package/dist/adapter/ember/zdo.d.ts +0 -925
  406. package/dist/adapter/ember/zdo.d.ts.map +0 -1
  407. package/dist/adapter/ember/zdo.js +0 -723
  408. package/dist/adapter/ember/zdo.js.map +0 -1
  409. package/dist/adapter/events.d.ts +0 -42
  410. package/dist/adapter/events.d.ts.map +0 -1
  411. package/dist/adapter/events.js +0 -13
  412. package/dist/adapter/events.js.map +0 -1
  413. package/dist/adapter/ezsp/adapter/backup.d.ts +0 -13
  414. package/dist/adapter/ezsp/adapter/backup.d.ts.map +0 -1
  415. package/dist/adapter/ezsp/adapter/backup.js +0 -101
  416. package/dist/adapter/ezsp/adapter/backup.js.map +0 -1
  417. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +0 -65
  418. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +0 -1
  419. package/dist/adapter/ezsp/adapter/ezspAdapter.js +0 -634
  420. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +0 -1
  421. package/dist/adapter/ezsp/adapter/index.d.ts +0 -3
  422. package/dist/adapter/ezsp/adapter/index.d.ts.map +0 -1
  423. package/dist/adapter/ezsp/adapter/index.js +0 -11
  424. package/dist/adapter/ezsp/adapter/index.js.map +0 -1
  425. package/dist/adapter/ezsp/driver/commands.d.ts +0 -37
  426. package/dist/adapter/ezsp/driver/commands.d.ts.map +0 -1
  427. package/dist/adapter/ezsp/driver/commands.js +0 -2387
  428. package/dist/adapter/ezsp/driver/commands.js.map +0 -1
  429. package/dist/adapter/ezsp/driver/consts.d.ts +0 -11
  430. package/dist/adapter/ezsp/driver/consts.d.ts.map +0 -1
  431. package/dist/adapter/ezsp/driver/consts.js +0 -14
  432. package/dist/adapter/ezsp/driver/consts.js.map +0 -1
  433. package/dist/adapter/ezsp/driver/driver.d.ts +0 -109
  434. package/dist/adapter/ezsp/driver/driver.d.ts.map +0 -1
  435. package/dist/adapter/ezsp/driver/driver.js +0 -796
  436. package/dist/adapter/ezsp/driver/driver.js.map +0 -1
  437. package/dist/adapter/ezsp/driver/ezsp.d.ts +0 -106
  438. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +0 -1
  439. package/dist/adapter/ezsp/driver/ezsp.js +0 -664
  440. package/dist/adapter/ezsp/driver/ezsp.js.map +0 -1
  441. package/dist/adapter/ezsp/driver/frame.d.ts +0 -40
  442. package/dist/adapter/ezsp/driver/frame.d.ts.map +0 -1
  443. package/dist/adapter/ezsp/driver/frame.js +0 -101
  444. package/dist/adapter/ezsp/driver/frame.js.map +0 -1
  445. package/dist/adapter/ezsp/driver/index.d.ts +0 -4
  446. package/dist/adapter/ezsp/driver/index.d.ts.map +0 -1
  447. package/dist/adapter/ezsp/driver/index.js +0 -9
  448. package/dist/adapter/ezsp/driver/index.js.map +0 -1
  449. package/dist/adapter/ezsp/driver/multicast.d.ts +0 -13
  450. package/dist/adapter/ezsp/driver/multicast.d.ts.map +0 -1
  451. package/dist/adapter/ezsp/driver/multicast.js +0 -74
  452. package/dist/adapter/ezsp/driver/multicast.js.map +0 -1
  453. package/dist/adapter/ezsp/driver/parser.d.ts +0 -12
  454. package/dist/adapter/ezsp/driver/parser.d.ts.map +0 -1
  455. package/dist/adapter/ezsp/driver/parser.js +0 -105
  456. package/dist/adapter/ezsp/driver/parser.js.map +0 -1
  457. package/dist/adapter/ezsp/driver/types/basic.d.ts +0 -63
  458. package/dist/adapter/ezsp/driver/types/basic.d.ts.map +0 -1
  459. package/dist/adapter/ezsp/driver/types/basic.js +0 -209
  460. package/dist/adapter/ezsp/driver/types/basic.js.map +0 -1
  461. package/dist/adapter/ezsp/driver/types/index.d.ts +0 -10
  462. package/dist/adapter/ezsp/driver/types/index.d.ts.map +0 -1
  463. package/dist/adapter/ezsp/driver/types/index.js +0 -139
  464. package/dist/adapter/ezsp/driver/types/index.js.map +0 -1
  465. package/dist/adapter/ezsp/driver/types/named.d.ts +0 -1288
  466. package/dist/adapter/ezsp/driver/types/named.d.ts.map +0 -1
  467. package/dist/adapter/ezsp/driver/types/named.js +0 -2330
  468. package/dist/adapter/ezsp/driver/types/named.js.map +0 -1
  469. package/dist/adapter/ezsp/driver/types/struct.d.ts +0 -271
  470. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +0 -1
  471. package/dist/adapter/ezsp/driver/types/struct.js +0 -804
  472. package/dist/adapter/ezsp/driver/types/struct.js.map +0 -1
  473. package/dist/adapter/ezsp/driver/uart.d.ts +0 -49
  474. package/dist/adapter/ezsp/driver/uart.d.ts.map +0 -1
  475. package/dist/adapter/ezsp/driver/uart.js +0 -383
  476. package/dist/adapter/ezsp/driver/uart.js.map +0 -1
  477. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +0 -3
  478. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +0 -1
  479. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +0 -56
  480. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +0 -1
  481. package/dist/adapter/ezsp/driver/utils/index.d.ts +0 -20
  482. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +0 -1
  483. package/dist/adapter/ezsp/driver/utils/index.js +0 -73
  484. package/dist/adapter/ezsp/driver/utils/index.js.map +0 -1
  485. package/dist/adapter/ezsp/driver/writer.d.ts +0 -14
  486. package/dist/adapter/ezsp/driver/writer.d.ts.map +0 -1
  487. package/dist/adapter/ezsp/driver/writer.js +0 -83
  488. package/dist/adapter/ezsp/driver/writer.js.map +0 -1
  489. package/dist/adapter/index.d.ts +0 -5
  490. package/dist/adapter/index.d.ts.map +0 -1
  491. package/dist/adapter/index.js +0 -36
  492. package/dist/adapter/index.js.map +0 -1
  493. package/dist/adapter/serialPort.d.ts +0 -14
  494. package/dist/adapter/serialPort.d.ts.map +0 -1
  495. package/dist/adapter/serialPort.js +0 -47
  496. package/dist/adapter/serialPort.js.map +0 -1
  497. package/dist/adapter/serialPortUtils.d.ts +0 -13
  498. package/dist/adapter/serialPortUtils.d.ts.map +0 -1
  499. package/dist/adapter/serialPortUtils.js +0 -19
  500. package/dist/adapter/serialPortUtils.js.map +0 -1
  501. package/dist/adapter/socketPortUtils.d.ts +0 -11
  502. package/dist/adapter/socketPortUtils.d.ts.map +0 -1
  503. package/dist/adapter/socketPortUtils.js +0 -17
  504. package/dist/adapter/socketPortUtils.js.map +0 -1
  505. package/dist/adapter/tstype.d.ts +0 -86
  506. package/dist/adapter/tstype.d.ts.map +0 -1
  507. package/dist/adapter/tstype.js +0 -3
  508. package/dist/adapter/tstype.js.map +0 -1
  509. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +0 -62
  510. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +0 -1
  511. package/dist/adapter/z-stack/adapter/adapter-backup.js +0 -459
  512. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +0 -1
  513. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +0 -151
  514. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +0 -1
  515. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +0 -259
  516. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +0 -1
  517. package/dist/adapter/z-stack/adapter/endpoints.d.ts +0 -12
  518. package/dist/adapter/z-stack/adapter/endpoints.d.ts.map +0 -1
  519. package/dist/adapter/z-stack/adapter/endpoints.js +0 -74
  520. package/dist/adapter/z-stack/adapter/endpoints.js.map +0 -1
  521. package/dist/adapter/z-stack/adapter/index.d.ts +0 -3
  522. package/dist/adapter/z-stack/adapter/index.d.ts.map +0 -1
  523. package/dist/adapter/z-stack/adapter/index.js +0 -9
  524. package/dist/adapter/z-stack/adapter/index.js.map +0 -1
  525. package/dist/adapter/z-stack/adapter/manager.d.ts +0 -84
  526. package/dist/adapter/z-stack/adapter/manager.d.ts.map +0 -1
  527. package/dist/adapter/z-stack/adapter/manager.js +0 -474
  528. package/dist/adapter/z-stack/adapter/manager.js.map +0 -1
  529. package/dist/adapter/z-stack/adapter/tstype.d.ts +0 -7
  530. package/dist/adapter/z-stack/adapter/tstype.d.ts.map +0 -1
  531. package/dist/adapter/z-stack/adapter/tstype.js +0 -10
  532. package/dist/adapter/z-stack/adapter/tstype.js.map +0 -1
  533. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +0 -86
  534. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +0 -1
  535. package/dist/adapter/z-stack/adapter/zStackAdapter.js +0 -912
  536. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +0 -1
  537. package/dist/adapter/z-stack/constants/af.d.ts +0 -24
  538. package/dist/adapter/z-stack/constants/af.d.ts.map +0 -1
  539. package/dist/adapter/z-stack/constants/af.js +0 -28
  540. package/dist/adapter/z-stack/constants/af.js.map +0 -1
  541. package/dist/adapter/z-stack/constants/common.d.ts +0 -279
  542. package/dist/adapter/z-stack/constants/common.d.ts.map +0 -1
  543. package/dist/adapter/z-stack/constants/common.js +0 -293
  544. package/dist/adapter/z-stack/constants/common.js.map +0 -1
  545. package/dist/adapter/z-stack/constants/dbg.d.ts +0 -23
  546. package/dist/adapter/z-stack/constants/dbg.d.ts.map +0 -1
  547. package/dist/adapter/z-stack/constants/dbg.js +0 -25
  548. package/dist/adapter/z-stack/constants/dbg.js.map +0 -1
  549. package/dist/adapter/z-stack/constants/index.d.ts +0 -11
  550. package/dist/adapter/z-stack/constants/index.d.ts.map +0 -1
  551. package/dist/adapter/z-stack/constants/index.js +0 -48
  552. package/dist/adapter/z-stack/constants/index.js.map +0 -1
  553. package/dist/adapter/z-stack/constants/mac.d.ts +0 -128
  554. package/dist/adapter/z-stack/constants/mac.d.ts.map +0 -1
  555. package/dist/adapter/z-stack/constants/mac.js +0 -130
  556. package/dist/adapter/z-stack/constants/mac.js.map +0 -1
  557. package/dist/adapter/z-stack/constants/sapi.d.ts +0 -25
  558. package/dist/adapter/z-stack/constants/sapi.d.ts.map +0 -1
  559. package/dist/adapter/z-stack/constants/sapi.js +0 -27
  560. package/dist/adapter/z-stack/constants/sapi.js.map +0 -1
  561. package/dist/adapter/z-stack/constants/sys.d.ts +0 -72
  562. package/dist/adapter/z-stack/constants/sys.d.ts.map +0 -1
  563. package/dist/adapter/z-stack/constants/sys.js +0 -74
  564. package/dist/adapter/z-stack/constants/sys.js.map +0 -1
  565. package/dist/adapter/z-stack/constants/util.d.ts +0 -82
  566. package/dist/adapter/z-stack/constants/util.d.ts.map +0 -1
  567. package/dist/adapter/z-stack/constants/util.js +0 -84
  568. package/dist/adapter/z-stack/constants/util.js.map +0 -1
  569. package/dist/adapter/z-stack/constants/utils.d.ts +0 -5
  570. package/dist/adapter/z-stack/constants/utils.d.ts.map +0 -1
  571. package/dist/adapter/z-stack/constants/utils.js +0 -15
  572. package/dist/adapter/z-stack/constants/utils.js.map +0 -1
  573. package/dist/adapter/z-stack/constants/zdo.d.ts +0 -103
  574. package/dist/adapter/z-stack/constants/zdo.d.ts.map +0 -1
  575. package/dist/adapter/z-stack/constants/zdo.js +0 -105
  576. package/dist/adapter/z-stack/constants/zdo.js.map +0 -1
  577. package/dist/adapter/z-stack/models/index.d.ts +0 -2
  578. package/dist/adapter/z-stack/models/index.d.ts.map +0 -1
  579. package/dist/adapter/z-stack/models/index.js +0 -18
  580. package/dist/adapter/z-stack/models/index.js.map +0 -1
  581. package/dist/adapter/z-stack/models/startup-options.d.ts +0 -13
  582. package/dist/adapter/z-stack/models/startup-options.d.ts.map +0 -1
  583. package/dist/adapter/z-stack/models/startup-options.js +0 -3
  584. package/dist/adapter/z-stack/models/startup-options.js.map +0 -1
  585. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +0 -24
  586. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +0 -1
  587. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +0 -46
  588. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +0 -1
  589. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +0 -11
  590. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +0 -1
  591. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +0 -23
  592. package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +0 -1
  593. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +0 -11
  594. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts.map +0 -1
  595. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +0 -22
  596. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +0 -1
  597. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +0 -11
  598. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +0 -1
  599. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +0 -24
  600. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +0 -1
  601. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +0 -11
  602. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts.map +0 -1
  603. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +0 -25
  604. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +0 -1
  605. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +0 -11
  606. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +0 -1
  607. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +0 -24
  608. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +0 -1
  609. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +0 -9
  610. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts.map +0 -1
  611. package/dist/adapter/z-stack/structs/entries/channel-list.js +0 -16
  612. package/dist/adapter/z-stack/structs/entries/channel-list.js.map +0 -1
  613. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +0 -9
  614. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +0 -1
  615. package/dist/adapter/z-stack/structs/entries/has-configured.js +0 -17
  616. package/dist/adapter/z-stack/structs/entries/has-configured.js.map +0 -1
  617. package/dist/adapter/z-stack/structs/entries/index.d.ts +0 -17
  618. package/dist/adapter/z-stack/structs/entries/index.d.ts.map +0 -1
  619. package/dist/adapter/z-stack/structs/entries/index.js +0 -33
  620. package/dist/adapter/z-stack/structs/entries/index.js.map +0 -1
  621. package/dist/adapter/z-stack/structs/entries/nib.d.ts +0 -11
  622. package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +0 -1
  623. package/dist/adapter/z-stack/structs/entries/nib.js +0 -69
  624. package/dist/adapter/z-stack/structs/entries/nib.js.map +0 -1
  625. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +0 -11
  626. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +0 -1
  627. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +0 -19
  628. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +0 -1
  629. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +0 -9
  630. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +0 -1
  631. package/dist/adapter/z-stack/structs/entries/nwk-key.js +0 -16
  632. package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +0 -1
  633. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +0 -9
  634. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts.map +0 -1
  635. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +0 -16
  636. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +0 -1
  637. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +0 -14
  638. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts.map +0 -1
  639. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +0 -24
  640. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +0 -1
  641. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +0 -11
  642. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +0 -1
  643. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +0 -23
  644. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +0 -1
  645. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +0 -21
  646. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts.map +0 -1
  647. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +0 -37
  648. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +0 -1
  649. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +0 -11
  650. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +0 -1
  651. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +0 -25
  652. package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +0 -1
  653. package/dist/adapter/z-stack/structs/index.d.ts +0 -5
  654. package/dist/adapter/z-stack/structs/index.d.ts.map +0 -1
  655. package/dist/adapter/z-stack/structs/index.js +0 -21
  656. package/dist/adapter/z-stack/structs/index.js.map +0 -1
  657. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +0 -14
  658. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts.map +0 -1
  659. package/dist/adapter/z-stack/structs/serializable-memory-object.js +0 -3
  660. package/dist/adapter/z-stack/structs/serializable-memory-object.js.map +0 -1
  661. package/dist/adapter/z-stack/structs/struct.d.ts +0 -100
  662. package/dist/adapter/z-stack/structs/struct.d.ts.map +0 -1
  663. package/dist/adapter/z-stack/structs/struct.js +0 -297
  664. package/dist/adapter/z-stack/structs/struct.js.map +0 -1
  665. package/dist/adapter/z-stack/structs/table.d.ts +0 -95
  666. package/dist/adapter/z-stack/structs/table.d.ts.map +0 -1
  667. package/dist/adapter/z-stack/structs/table.js +0 -164
  668. package/dist/adapter/z-stack/structs/table.js.map +0 -1
  669. package/dist/adapter/z-stack/unpi/constants.d.ts +0 -29
  670. package/dist/adapter/z-stack/unpi/constants.d.ts.map +0 -1
  671. package/dist/adapter/z-stack/unpi/constants.js +0 -40
  672. package/dist/adapter/z-stack/unpi/constants.js.map +0 -1
  673. package/dist/adapter/z-stack/unpi/frame.d.ts +0 -17
  674. package/dist/adapter/z-stack/unpi/frame.d.ts.map +0 -1
  675. package/dist/adapter/z-stack/unpi/frame.js +0 -55
  676. package/dist/adapter/z-stack/unpi/frame.js.map +0 -1
  677. package/dist/adapter/z-stack/unpi/index.d.ts +0 -6
  678. package/dist/adapter/z-stack/unpi/index.d.ts.map +0 -1
  679. package/dist/adapter/z-stack/unpi/index.js +0 -38
  680. package/dist/adapter/z-stack/unpi/index.js.map +0 -1
  681. package/dist/adapter/z-stack/unpi/parser.d.ts +0 -13
  682. package/dist/adapter/z-stack/unpi/parser.d.ts.map +0 -1
  683. package/dist/adapter/z-stack/unpi/parser.js +0 -86
  684. package/dist/adapter/z-stack/unpi/parser.js.map +0 -1
  685. package/dist/adapter/z-stack/unpi/writer.d.ts +0 -12
  686. package/dist/adapter/z-stack/unpi/writer.d.ts.map +0 -1
  687. package/dist/adapter/z-stack/unpi/writer.js +0 -55
  688. package/dist/adapter/z-stack/unpi/writer.js.map +0 -1
  689. package/dist/adapter/z-stack/utils/channel-list.d.ts +0 -21
  690. package/dist/adapter/z-stack/utils/channel-list.d.ts.map +0 -1
  691. package/dist/adapter/z-stack/utils/channel-list.js +0 -41
  692. package/dist/adapter/z-stack/utils/channel-list.js.map +0 -1
  693. package/dist/adapter/z-stack/utils/index.d.ts +0 -3
  694. package/dist/adapter/z-stack/utils/index.d.ts.map +0 -1
  695. package/dist/adapter/z-stack/utils/index.js +0 -19
  696. package/dist/adapter/z-stack/utils/index.js.map +0 -1
  697. package/dist/adapter/z-stack/utils/network-options.d.ts +0 -9
  698. package/dist/adapter/z-stack/utils/network-options.d.ts.map +0 -1
  699. package/dist/adapter/z-stack/utils/network-options.js +0 -23
  700. package/dist/adapter/z-stack/utils/network-options.js.map +0 -1
  701. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +0 -14
  702. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +0 -1
  703. package/dist/adapter/z-stack/znp/buffaloZnp.js +0 -243
  704. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +0 -1
  705. package/dist/adapter/z-stack/znp/definition.d.ts +0 -6
  706. package/dist/adapter/z-stack/znp/definition.d.ts.map +0 -1
  707. package/dist/adapter/z-stack/znp/definition.js +0 -3052
  708. package/dist/adapter/z-stack/znp/definition.js.map +0 -1
  709. package/dist/adapter/z-stack/znp/index.d.ts +0 -4
  710. package/dist/adapter/z-stack/znp/index.d.ts.map +0 -1
  711. package/dist/adapter/z-stack/znp/index.js +0 -11
  712. package/dist/adapter/z-stack/znp/index.js.map +0 -1
  713. package/dist/adapter/z-stack/znp/parameterType.d.ts +0 -23
  714. package/dist/adapter/z-stack/znp/parameterType.d.ts.map +0 -1
  715. package/dist/adapter/z-stack/znp/parameterType.js +0 -26
  716. package/dist/adapter/z-stack/znp/parameterType.js.map +0 -1
  717. package/dist/adapter/z-stack/znp/tstype.d.ts +0 -23
  718. package/dist/adapter/z-stack/znp/tstype.d.ts.map +0 -1
  719. package/dist/adapter/z-stack/znp/tstype.js +0 -3
  720. package/dist/adapter/z-stack/znp/tstype.js.map +0 -1
  721. package/dist/adapter/z-stack/znp/znp.d.ts +0 -47
  722. package/dist/adapter/z-stack/znp/znp.d.ts.map +0 -1
  723. package/dist/adapter/z-stack/znp/znp.js +0 -322
  724. package/dist/adapter/z-stack/znp/znp.js.map +0 -1
  725. package/dist/adapter/z-stack/znp/zpiObject.d.ts +0 -20
  726. package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +0 -1
  727. package/dist/adapter/z-stack/znp/zpiObject.js +0 -103
  728. package/dist/adapter/z-stack/znp/zpiObject.js.map +0 -1
  729. package/dist/adapter/zigate/adapter/index.d.ts +0 -3
  730. package/dist/adapter/zigate/adapter/index.d.ts.map +0 -1
  731. package/dist/adapter/zigate/adapter/index.js +0 -11
  732. package/dist/adapter/zigate/adapter/index.js.map +0 -1
  733. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +0 -72
  734. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +0 -1
  735. package/dist/adapter/zigate/adapter/zigateAdapter.js +0 -681
  736. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +0 -1
  737. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +0 -18
  738. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +0 -1
  739. package/dist/adapter/zigate/driver/buffaloZiGate.js +0 -190
  740. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +0 -1
  741. package/dist/adapter/zigate/driver/commandType.d.ts +0 -43
  742. package/dist/adapter/zigate/driver/commandType.d.ts.map +0 -1
  743. package/dist/adapter/zigate/driver/commandType.js +0 -390
  744. package/dist/adapter/zigate/driver/commandType.js.map +0 -1
  745. package/dist/adapter/zigate/driver/constants.d.ts +0 -277
  746. package/dist/adapter/zigate/driver/constants.d.ts.map +0 -1
  747. package/dist/adapter/zigate/driver/constants.js +0 -372
  748. package/dist/adapter/zigate/driver/constants.js.map +0 -1
  749. package/dist/adapter/zigate/driver/frame.d.ts +0 -27
  750. package/dist/adapter/zigate/driver/frame.d.ts.map +0 -1
  751. package/dist/adapter/zigate/driver/frame.js +0 -173
  752. package/dist/adapter/zigate/driver/frame.js.map +0 -1
  753. package/dist/adapter/zigate/driver/messageType.d.ts +0 -13
  754. package/dist/adapter/zigate/driver/messageType.d.ts.map +0 -1
  755. package/dist/adapter/zigate/driver/messageType.js +0 -284
  756. package/dist/adapter/zigate/driver/messageType.js.map +0 -1
  757. package/dist/adapter/zigate/driver/parameterType.d.ts +0 -28
  758. package/dist/adapter/zigate/driver/parameterType.d.ts.map +0 -1
  759. package/dist/adapter/zigate/driver/parameterType.js +0 -33
  760. package/dist/adapter/zigate/driver/parameterType.js.map +0 -1
  761. package/dist/adapter/zigate/driver/ziGateObject.d.ts +0 -24
  762. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +0 -1
  763. package/dist/adapter/zigate/driver/ziGateObject.js +0 -111
  764. package/dist/adapter/zigate/driver/ziGateObject.js.map +0 -1
  765. package/dist/adapter/zigate/driver/zigate.d.ts +0 -50
  766. package/dist/adapter/zigate/driver/zigate.d.ts.map +0 -1
  767. package/dist/adapter/zigate/driver/zigate.js +0 -289
  768. package/dist/adapter/zigate/driver/zigate.js.map +0 -1
  769. package/dist/buffalo/buffalo.d.ts +0 -55
  770. package/dist/buffalo/buffalo.d.ts.map +0 -1
  771. package/dist/buffalo/buffalo.js +0 -230
  772. package/dist/buffalo/buffalo.js.map +0 -1
  773. package/dist/buffalo/index.d.ts +0 -3
  774. package/dist/buffalo/index.d.ts.map +0 -1
  775. package/dist/buffalo/index.js +0 -9
  776. package/dist/buffalo/index.js.map +0 -1
  777. package/dist/controller/controller.d.ts +0 -119
  778. package/dist/controller/controller.d.ts.map +0 -1
  779. package/dist/controller/controller.js +0 -700
  780. package/dist/controller/controller.js.map +0 -1
  781. package/dist/controller/database.d.ts +0 -20
  782. package/dist/controller/database.d.ts.map +0 -1
  783. package/dist/controller/database.js +0 -94
  784. package/dist/controller/database.js.map +0 -1
  785. package/dist/controller/events.d.ts +0 -59
  786. package/dist/controller/events.d.ts.map +0 -1
  787. package/dist/controller/events.js +0 -113
  788. package/dist/controller/events.js.map +0 -1
  789. package/dist/controller/greenPower.d.ts +0 -14
  790. package/dist/controller/greenPower.d.ts.map +0 -1
  791. package/dist/controller/greenPower.js +0 -216
  792. package/dist/controller/greenPower.js.map +0 -1
  793. package/dist/controller/helpers/index.d.ts +0 -3
  794. package/dist/controller/helpers/index.d.ts.map +0 -1
  795. package/dist/controller/helpers/index.js +0 -29
  796. package/dist/controller/helpers/index.js.map +0 -1
  797. package/dist/controller/helpers/request.d.ts +0 -22
  798. package/dist/controller/helpers/request.d.ts.map +0 -1
  799. package/dist/controller/helpers/request.js +0 -78
  800. package/dist/controller/helpers/request.js.map +0 -1
  801. package/dist/controller/helpers/requestQueue.d.ts +0 -13
  802. package/dist/controller/helpers/requestQueue.d.ts.map +0 -1
  803. package/dist/controller/helpers/requestQueue.js +0 -106
  804. package/dist/controller/helpers/requestQueue.js.map +0 -1
  805. package/dist/controller/helpers/zclFrameConverter.d.ts +0 -9
  806. package/dist/controller/helpers/zclFrameConverter.d.ts.map +0 -1
  807. package/dist/controller/helpers/zclFrameConverter.js +0 -70
  808. package/dist/controller/helpers/zclFrameConverter.js.map +0 -1
  809. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +0 -6
  810. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts.map +0 -1
  811. package/dist/controller/helpers/zclTransactionSequenceNumber.js +0 -14
  812. package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +0 -1
  813. package/dist/controller/index.d.ts +0 -6
  814. package/dist/controller/index.d.ts.map +0 -1
  815. package/dist/controller/index.js +0 -9
  816. package/dist/controller/index.js.map +0 -1
  817. package/dist/controller/model/device.d.ts +0 -140
  818. package/dist/controller/model/device.d.ts.map +0 -1
  819. package/dist/controller/model/device.js +0 -746
  820. package/dist/controller/model/device.js.map +0 -1
  821. package/dist/controller/model/endpoint.d.ts +0 -134
  822. package/dist/controller/model/endpoint.d.ts.map +0 -1
  823. package/dist/controller/model/endpoint.js +0 -667
  824. package/dist/controller/model/endpoint.js.map +0 -1
  825. package/dist/controller/model/entity.d.ts +0 -15
  826. package/dist/controller/model/entity.d.ts.map +0 -1
  827. package/dist/controller/model/entity.js +0 -27
  828. package/dist/controller/model/entity.js.map +0 -1
  829. package/dist/controller/model/group.d.ts +0 -39
  830. package/dist/controller/model/group.d.ts.map +0 -1
  831. package/dist/controller/model/group.js +0 -226
  832. package/dist/controller/model/group.js.map +0 -1
  833. package/dist/controller/model/index.d.ts +0 -6
  834. package/dist/controller/model/index.d.ts.map +0 -1
  835. package/dist/controller/model/index.js +0 -15
  836. package/dist/controller/model/index.js.map +0 -1
  837. package/dist/controller/model/konnextConfig.d.ts +0 -7
  838. package/dist/controller/model/konnextConfig.d.ts.map +0 -1
  839. package/dist/controller/model/konnextConfig.js +0 -3
  840. package/dist/controller/model/konnextConfig.js.map +0 -1
  841. package/dist/controller/touchlink.d.ts +0 -20
  842. package/dist/controller/touchlink.d.ts.map +0 -1
  843. package/dist/controller/touchlink.js +0 -157
  844. package/dist/controller/touchlink.js.map +0 -1
  845. package/dist/controller/tstype.d.ts +0 -21
  846. package/dist/controller/tstype.d.ts.map +0 -1
  847. package/dist/controller/tstype.js +0 -9
  848. package/dist/controller/tstype.js.map +0 -1
  849. package/dist/index.d.ts +0 -6
  850. package/dist/index.d.ts.map +0 -1
  851. package/dist/index.js +0 -37
  852. package/dist/index.js.map +0 -1
  853. package/dist/models/backup-storage-legacy.d.ts +0 -27
  854. package/dist/models/backup-storage-legacy.d.ts.map +0 -1
  855. package/dist/models/backup-storage-legacy.js +0 -3
  856. package/dist/models/backup-storage-legacy.js.map +0 -1
  857. package/dist/models/backup-storage-unified.d.ts +0 -50
  858. package/dist/models/backup-storage-unified.d.ts.map +0 -1
  859. package/dist/models/backup-storage-unified.js +0 -3
  860. package/dist/models/backup-storage-unified.js.map +0 -1
  861. package/dist/models/backup.d.ts +0 -38
  862. package/dist/models/backup.d.ts.map +0 -1
  863. package/dist/models/backup.js +0 -3
  864. package/dist/models/backup.js.map +0 -1
  865. package/dist/models/index.d.ts +0 -5
  866. package/dist/models/index.d.ts.map +0 -1
  867. package/dist/models/index.js +0 -21
  868. package/dist/models/index.js.map +0 -1
  869. package/dist/models/network-options.d.ts +0 -13
  870. package/dist/models/network-options.d.ts.map +0 -1
  871. package/dist/models/network-options.js +0 -3
  872. package/dist/models/network-options.js.map +0 -1
  873. package/dist/utils/aes.d.ts +0 -40
  874. package/dist/utils/aes.d.ts.map +0 -1
  875. package/dist/utils/aes.js +0 -198
  876. package/dist/utils/aes.js.map +0 -1
  877. package/dist/utils/assertString.d.ts +0 -3
  878. package/dist/utils/assertString.d.ts.map +0 -1
  879. package/dist/utils/assertString.js +0 -9
  880. package/dist/utils/assertString.js.map +0 -1
  881. package/dist/utils/backup.d.ts +0 -21
  882. package/dist/utils/backup.d.ts.map +0 -1
  883. package/dist/utils/backup.js +0 -190
  884. package/dist/utils/backup.js.map +0 -1
  885. package/dist/utils/equalsPartial.d.ts +0 -3
  886. package/dist/utils/equalsPartial.d.ts.map +0 -1
  887. package/dist/utils/equalsPartial.js +0 -12
  888. package/dist/utils/equalsPartial.js.map +0 -1
  889. package/dist/utils/index.d.ts +0 -10
  890. package/dist/utils/index.d.ts.map +0 -1
  891. package/dist/utils/index.js +0 -46
  892. package/dist/utils/index.js.map +0 -1
  893. package/dist/utils/isNumberArray.d.ts +0 -3
  894. package/dist/utils/isNumberArray.d.ts.map +0 -1
  895. package/dist/utils/isNumberArray.js +0 -7
  896. package/dist/utils/isNumberArray.js.map +0 -1
  897. package/dist/utils/logger.d.ts +0 -9
  898. package/dist/utils/logger.d.ts.map +0 -1
  899. package/dist/utils/logger.js +0 -14
  900. package/dist/utils/logger.js.map +0 -1
  901. package/dist/utils/queue.d.ts +0 -12
  902. package/dist/utils/queue.d.ts.map +0 -1
  903. package/dist/utils/queue.js +0 -62
  904. package/dist/utils/queue.js.map +0 -1
  905. package/dist/utils/realpathSync.d.ts +0 -3
  906. package/dist/utils/realpathSync.d.ts.map +0 -1
  907. package/dist/utils/realpathSync.js +0 -13
  908. package/dist/utils/realpathSync.js.map +0 -1
  909. package/dist/utils/wait.d.ts +0 -3
  910. package/dist/utils/wait.d.ts.map +0 -1
  911. package/dist/utils/wait.js +0 -9
  912. package/dist/utils/wait.js.map +0 -1
  913. package/dist/utils/waitress.d.ts +0 -22
  914. package/dist/utils/waitress.d.ts.map +0 -1
  915. package/dist/utils/waitress.js +0 -69
  916. package/dist/utils/waitress.js.map +0 -1
  917. package/dist/zspec/consts.d.ts +0 -60
  918. package/dist/zspec/consts.d.ts.map +0 -1
  919. package/dist/zspec/consts.js +0 -64
  920. package/dist/zspec/consts.js.map +0 -1
  921. package/dist/zspec/enums.d.ts +0 -19
  922. package/dist/zspec/enums.d.ts.map +0 -1
  923. package/dist/zspec/enums.js +0 -28
  924. package/dist/zspec/enums.js.map +0 -1
  925. package/dist/zspec/index.d.ts +0 -4
  926. package/dist/zspec/index.d.ts.map +0 -1
  927. package/dist/zspec/index.js +0 -43
  928. package/dist/zspec/index.js.map +0 -1
  929. package/dist/zspec/tstypes.d.ts +0 -19
  930. package/dist/zspec/tstypes.d.ts.map +0 -1
  931. package/dist/zspec/tstypes.js +0 -3
  932. package/dist/zspec/tstypes.js.map +0 -1
  933. package/dist/zspec/utils.d.ts +0 -14
  934. package/dist/zspec/utils.d.ts.map +0 -1
  935. package/dist/zspec/utils.js +0 -29
  936. package/dist/zspec/utils.js.map +0 -1
  937. package/dist/zspec/zcl/buffaloZcl.d.ts +0 -55
  938. package/dist/zspec/zcl/buffaloZcl.d.ts.map +0 -1
  939. package/dist/zspec/zcl/buffaloZcl.js +0 -929
  940. package/dist/zspec/zcl/buffaloZcl.js.map +0 -1
  941. package/dist/zspec/zcl/definition/cluster.d.ts +0 -3
  942. package/dist/zspec/zcl/definition/cluster.d.ts.map +0 -1
  943. package/dist/zspec/zcl/definition/cluster.js +0 -5500
  944. package/dist/zspec/zcl/definition/cluster.js.map +0 -1
  945. package/dist/zspec/zcl/definition/consts.d.ts +0 -9
  946. package/dist/zspec/zcl/definition/consts.d.ts.map +0 -1
  947. package/dist/zspec/zcl/definition/consts.js +0 -27
  948. package/dist/zspec/zcl/definition/consts.js.map +0 -1
  949. package/dist/zspec/zcl/definition/enums.d.ts +0 -177
  950. package/dist/zspec/zcl/definition/enums.d.ts.map +0 -1
  951. package/dist/zspec/zcl/definition/enums.js +0 -187
  952. package/dist/zspec/zcl/definition/enums.js.map +0 -1
  953. package/dist/zspec/zcl/definition/foundation.d.ts +0 -11
  954. package/dist/zspec/zcl/definition/foundation.d.ts.map +0 -1
  955. package/dist/zspec/zcl/definition/foundation.js +0 -241
  956. package/dist/zspec/zcl/definition/foundation.js.map +0 -1
  957. package/dist/zspec/zcl/definition/manufacturerCode.d.ts +0 -727
  958. package/dist/zspec/zcl/definition/manufacturerCode.d.ts.map +0 -1
  959. package/dist/zspec/zcl/definition/manufacturerCode.js +0 -733
  960. package/dist/zspec/zcl/definition/manufacturerCode.js.map +0 -1
  961. package/dist/zspec/zcl/definition/status.d.ts +0 -69
  962. package/dist/zspec/zcl/definition/status.d.ts.map +0 -1
  963. package/dist/zspec/zcl/definition/status.js +0 -74
  964. package/dist/zspec/zcl/definition/status.js.map +0 -1
  965. package/dist/zspec/zcl/definition/tstype.d.ts +0 -114
  966. package/dist/zspec/zcl/definition/tstype.d.ts.map +0 -1
  967. package/dist/zspec/zcl/definition/tstype.js +0 -4
  968. package/dist/zspec/zcl/definition/tstype.js.map +0 -1
  969. package/dist/zspec/zcl/index.d.ts +0 -11
  970. package/dist/zspec/zcl/index.d.ts.map +0 -1
  971. package/dist/zspec/zcl/index.js +0 -47
  972. package/dist/zspec/zcl/index.js.map +0 -1
  973. package/dist/zspec/zcl/utils.d.ts +0 -7
  974. package/dist/zspec/zcl/utils.d.ts.map +0 -1
  975. package/dist/zspec/zcl/utils.js +0 -234
  976. package/dist/zspec/zcl/utils.js.map +0 -1
  977. package/dist/zspec/zcl/zclFrame.d.ts +0 -36
  978. package/dist/zspec/zcl/zclFrame.d.ts.map +0 -1
  979. package/dist/zspec/zcl/zclFrame.js +0 -304
  980. package/dist/zspec/zcl/zclFrame.js.map +0 -1
  981. package/dist/zspec/zcl/zclHeader.d.ts +0 -17
  982. package/dist/zspec/zcl/zclHeader.d.ts.map +0 -1
  983. package/dist/zspec/zcl/zclHeader.js +0 -88
  984. package/dist/zspec/zcl/zclHeader.js.map +0 -1
  985. package/dist/zspec/zcl/zclStatusError.d.ts +0 -6
  986. package/dist/zspec/zcl/zclStatusError.d.ts.map +0 -1
  987. package/dist/zspec/zcl/zclStatusError.js +0 -13
  988. package/dist/zspec/zcl/zclStatusError.js.map +0 -1
  989. package/dist/zspec/zdo/buffaloZdo.d.ts +0 -438
  990. package/dist/zspec/zdo/buffaloZdo.d.ts.map +0 -1
  991. package/dist/zspec/zdo/buffaloZdo.js +0 -1892
  992. package/dist/zspec/zdo/buffaloZdo.js.map +0 -1
  993. package/dist/zspec/zdo/definition/clusters.d.ts +0 -624
  994. package/dist/zspec/zdo/definition/clusters.d.ts.map +0 -1
  995. package/dist/zspec/zdo/definition/clusters.js +0 -687
  996. package/dist/zspec/zdo/definition/clusters.js.map +0 -1
  997. package/dist/zspec/zdo/definition/consts.d.ts +0 -13
  998. package/dist/zspec/zdo/definition/consts.d.ts.map +0 -1
  999. package/dist/zspec/zdo/definition/consts.js +0 -16
  1000. package/dist/zspec/zdo/definition/consts.js.map +0 -1
  1001. package/dist/zspec/zdo/definition/enums.d.ts +0 -75
  1002. package/dist/zspec/zdo/definition/enums.d.ts.map +0 -1
  1003. package/dist/zspec/zdo/definition/enums.js +0 -97
  1004. package/dist/zspec/zdo/definition/enums.js.map +0 -1
  1005. package/dist/zspec/zdo/definition/status.d.ts +0 -99
  1006. package/dist/zspec/zdo/definition/status.d.ts.map +0 -1
  1007. package/dist/zspec/zdo/definition/status.js +0 -109
  1008. package/dist/zspec/zdo/definition/status.js.map +0 -1
  1009. package/dist/zspec/zdo/definition/tstypes.d.ts +0 -787
  1010. package/dist/zspec/zdo/definition/tstypes.d.ts.map +0 -1
  1011. package/dist/zspec/zdo/definition/tstypes.js +0 -3
  1012. package/dist/zspec/zdo/definition/tstypes.js.map +0 -1
  1013. package/dist/zspec/zdo/index.d.ts +0 -7
  1014. package/dist/zspec/zdo/index.d.ts.map +0 -1
  1015. package/dist/zspec/zdo/index.js +0 -39
  1016. package/dist/zspec/zdo/index.js.map +0 -1
  1017. package/dist/zspec/zdo/utils.d.ts +0 -25
  1018. package/dist/zspec/zdo/utils.d.ts.map +0 -1
  1019. package/dist/zspec/zdo/utils.js +0 -75
  1020. package/dist/zspec/zdo/utils.js.map +0 -1
  1021. package/dist/zspec/zdo/zdoStatusError.d.ts +0 -6
  1022. package/dist/zspec/zdo/zdoStatusError.d.ts.map +0 -1
  1023. package/dist/zspec/zdo/zdoStatusError.js +0 -13
  1024. package/dist/zspec/zdo/zdoStatusError.js.map +0 -1
  1025. package/typedoc-tsconfig.json +0 -44
@@ -1,1633 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.UartAsh = exports.AshEvents = void 0;
7
- /* istanbul ignore file */
8
- const stream_1 = require("stream");
9
- const net_1 = require("net");
10
- const socketPortUtils_1 = __importDefault(require("../../socketPortUtils"));
11
- const serialPort_1 = require("../../serialPort");
12
- const consts_1 = require("./consts");
13
- const math_1 = require("../utils/math");
14
- const enums_1 = require("../enums");
15
- const enums_2 = require("./enums");
16
- const queues_1 = require("./queues");
17
- const writer_1 = require("./writer");
18
- const parser_1 = require("./parser");
19
- const utils_1 = require("../../../utils");
20
- const logger_1 = require("../../../utils/logger");
21
- const NS = 'zh:ember:uart:ash';
22
- /** ASH get rflag in control byte */
23
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
- const ashGetRFlag = (ctrl) => ((ctrl & consts_1.ASH_RFLAG_MASK) >> consts_1.ASH_RFLAG_BIT);
25
- /** ASH get nflag in control byte */
26
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
- const ashGetNFlag = (ctrl) => ((ctrl & consts_1.ASH_NFLAG_MASK) >> consts_1.ASH_NFLAG_BIT);
28
- /** ASH get frmnum in control byte */
29
- const ashGetFrmNum = (ctrl) => ((ctrl & consts_1.ASH_FRMNUM_MASK) >> consts_1.ASH_FRMNUM_BIT);
30
- /** ASH get acknum in control byte */
31
- const ashGetACKNum = (ctrl) => ((ctrl & consts_1.ASH_ACKNUM_MASK) >> consts_1.ASH_ACKNUM_BIT);
32
- var AshEvents;
33
- (function (AshEvents) {
34
- /** When the ASH protocol detects a fatal error (bubbles up to restart adapter). */
35
- AshEvents["FATAL_ERROR"] = "fatalError";
36
- /** When a frame has been parsed and queued in the rxQueue. */
37
- AshEvents["FRAME"] = "frame";
38
- })(AshEvents || (exports.AshEvents = AshEvents = {}));
39
- var SendState;
40
- (function (SendState) {
41
- SendState[SendState["IDLE"] = 0] = "IDLE";
42
- SendState[SendState["SHFRAME"] = 1] = "SHFRAME";
43
- SendState[SendState["TX_DATA"] = 2] = "TX_DATA";
44
- SendState[SendState["RETX_DATA"] = 3] = "RETX_DATA";
45
- })(SendState || (SendState = {}));
46
- // Bits in ashFlags
47
- var Flag;
48
- (function (Flag) {
49
- /** Reject Condition */
50
- Flag[Flag["REJ"] = 1] = "REJ";
51
- /** Retransmit Condition */
52
- Flag[Flag["RETX"] = 2] = "RETX";
53
- /** send NAK */
54
- Flag[Flag["NAK"] = 4] = "NAK";
55
- /** send ACK */
56
- Flag[Flag["ACK"] = 8] = "ACK";
57
- /** send RST */
58
- Flag[Flag["RST"] = 16] = "RST";
59
- /** send immediate CAN */
60
- Flag[Flag["CAN"] = 32] = "CAN";
61
- /** in CONNECTED state, else ERROR */
62
- Flag[Flag["CONNECTED"] = 64] = "CONNECTED";
63
- /** not ready to receive DATA frames */
64
- Flag[Flag["NR"] = 256] = "NR";
65
- /** last transmitted NR status */
66
- Flag[Flag["NRTX"] = 512] = "NRTX";
67
- })(Flag || (Flag = {}));
68
- /** max frames sent without being ACKed (1-7) */
69
- const CONFIG_TX_K = 3;
70
- /** enables randomizing DATA frame payloads */
71
- const CONFIG_RANDOMIZE = true;
72
- /** adaptive rec'd ACK timeout initial value */
73
- const CONFIG_ACK_TIME_INIT = 800;
74
- /** " " " " " minimum value */
75
- const CONFIG_ACK_TIME_MIN = 400;
76
- /** " " " " " maximum value */
77
- const CONFIG_ACK_TIME_MAX = 2400;
78
- /** time allowed to receive RSTACK after ncp is reset */
79
- const CONFIG_TIME_RST = 2500;
80
- /** time between checks for received RSTACK (CONNECTED status) */
81
- const CONFIG_TIME_RST_CHECK = 100;
82
- /** if free buffers < limit, host receiver isn't ready, will hold off the ncp from sending normal priority frames */
83
- const CONFIG_NR_LOW_LIMIT = 8; // RX_FREE_LW
84
- /** if free buffers > limit, host receiver is ready */
85
- const CONFIG_NR_HIGH_LIMIT = 12; // RX_FREE_HW
86
- /** time until a set nFlag must be resent (max 2032) */
87
- const CONFIG_NR_TIME = 480;
88
- /** Read/write max bytes count at stream level */
89
- const CONFIG_HIGHWATER_MARK = 256;
90
- /**
91
- * ASH Protocol handler.
92
- */
93
- class UartAsh extends stream_1.EventEmitter {
94
- portOptions;
95
- serialPort;
96
- socketPort;
97
- writer;
98
- parser;
99
- /** True when serial/socket is currently closing. */
100
- closing;
101
- /** time ackTimer started: 0 means not ready uint16_t */
102
- ackTimer;
103
- /** time used to check ackTimer expiry (msecs) uint16_t */
104
- ackPeriod;
105
- /** not ready timer (16 msec units). Set to (now + config.nrTime) when started. uint8_t */
106
- nrTimer;
107
- /** frame decode in progress */
108
- decodeInProgress;
109
- // Variables used in encoding frames
110
- /** true when preceding byte was escaped */
111
- encodeEscFlag;
112
- /** byte to send after ASH_ESC uint8_t */
113
- encodeFlip;
114
- /** uint16_t */
115
- encodeCrc;
116
- /** encoder state: 0 = control/data bytes, 1 = crc low byte, 2 = crc high byte, 3 = flag. uint8_t */
117
- encodeState;
118
- /** bytes remaining to encode. uint8_t */
119
- encodeCount;
120
- // Variables used in decoding frames
121
- /** bytes in frame, plus CRC, clamped to limit +1: high values also used to record certain errors. uint8_t */
122
- decodeLen;
123
- /** ASH_FLIP if previous byte was ASH_ESC. uint8_t */
124
- decodeFlip;
125
- /** a 2 byte queue to avoid outputting crc bytes. uint8_t */
126
- decodeByte1;
127
- /** at frame end, they contain the received crc. uint8_t */
128
- decodeByte2;
129
- /** uint16_t */
130
- decodeCrc;
131
- /** outgoing short frames */
132
- txSHBuffer;
133
- /** incoming short frames */
134
- rxSHBuffer;
135
- /** bit flags for top-level logic. uint16_t */
136
- flags;
137
- /** frame ack'ed from remote peer. uint8_t */
138
- ackRx;
139
- /** frame ack'ed to remote peer. uint8_t */
140
- ackTx;
141
- /** next frame to be transmitted. uint8_t */
142
- frmTx;
143
- /** next frame to be retransmitted. uint8_t */
144
- frmReTx;
145
- /** next frame expected to be rec'd. uint8_t */
146
- frmRx;
147
- /** frame at retx queue's head. uint8_t */
148
- frmReTxHead;
149
- /** consecutive timeout counter. uint8_t */
150
- timeouts;
151
- /** rec'd DATA frame buffer. uint8_t */
152
- rxDataBuffer;
153
- /** rec'd frame length. uint8_t */
154
- rxLen;
155
- /** tx frame offset. uint8_t */
156
- txOffset;
157
- counters;
158
- /**
159
- * Errors reported by the NCP.
160
- * The `NcpFailedCode` from the frame reporting this is logged before this is set to make it clear where it failed:
161
- * - The NCP sent an ERROR frame during the initial reset sequence (before CONNECTED state)
162
- * - The NCP sent an ERROR frame
163
- * - The NCP sent an unexpected RSTACK
164
- */
165
- ncpError;
166
- /** Errors reported by the Host. */
167
- hostError;
168
- /** sendExec() state variable */
169
- sendState;
170
- /** NCP is enabled to sleep, set by EZSP, not supported atm, always false */
171
- ncpSleepEnabled;
172
- /**
173
- * Set when the ncp has indicated it has a pending callback by seting the callback flag in the frame control byte
174
- * or (uart version only) by sending an an ASH_WAKE byte between frames.
175
- */
176
- ncpHasCallbacks;
177
- /** Transmit buffers */
178
- txPool;
179
- txQueue;
180
- reTxQueue;
181
- txFree;
182
- /** Receive buffers */
183
- rxPool;
184
- rxQueue;
185
- rxFree;
186
- constructor(options) {
187
- super();
188
- this.portOptions = options;
189
- this.serialPort = null;
190
- this.socketPort = null;
191
- this.writer = null;
192
- this.parser = null;
193
- this.txPool = new Array(consts_1.TX_POOL_BUFFERS);
194
- this.txQueue = new queues_1.EzspQueue();
195
- this.reTxQueue = new queues_1.EzspQueue();
196
- this.txFree = new queues_1.EzspFreeList();
197
- this.rxPool = new Array(consts_1.EZSP_HOST_RX_POOL_SIZE);
198
- this.rxQueue = new queues_1.EzspQueue();
199
- this.rxFree = new queues_1.EzspFreeList();
200
- }
201
- /**
202
- * Check if port is valid, open, and not closing.
203
- */
204
- get portOpen() {
205
- if (this.closing) {
206
- return false;
207
- }
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
- }
214
- }
215
- /**
216
- * Get max wait time before response is considered timed out.
217
- */
218
- get responseTimeout() {
219
- return consts_1.ASH_MAX_TIMEOUTS * CONFIG_ACK_TIME_MAX;
220
- }
221
- /**
222
- * Indicates if the host is in the Connected state.
223
- * If not, the host and NCP cannot exchange DATA frames.
224
- * Note that this function does not actively confirm that communication with NCP is healthy, but simply returns its last known status.
225
- *
226
- * @returns
227
- * - true - host and NCP can exchange DATA frames
228
- * - false - host and NCP cannot now exchange DATA frames
229
- */
230
- get connected() {
231
- return ((this.flags & Flag.CONNECTED) !== 0);
232
- }
233
- /**
234
- * Has nothing to do...
235
- */
236
- get idle() {
237
- return (!this.decodeInProgress // don't have a partial frame
238
- // && (this.serial.readAvailable() === EzspStatus.NO_RX_DATA) // no rx data
239
- && this.rxQueue.empty // no rx frames to process
240
- && !this.ncpHasCallbacks // no pending callbacks
241
- && (this.flags === Flag.CONNECTED) // no pending ACKs, NAKs, etc.
242
- && (this.ackTx === this.frmRx) // do not need to send an ACK
243
- && (this.ackRx === this.frmTx) // not waiting to receive an ACK
244
- && (this.sendState === SendState.IDLE) // nothing being transmitted now
245
- && this.txQueue.empty // nothing waiting to transmit
246
- // && this.serial.outputIsIdle() // nothing in OS buffers or UART FIFO
247
- );
248
- }
249
- /**
250
- * Initialize ASH variables, timers and queues, but not the serial port
251
- */
252
- initVariables() {
253
- this.closing = false;
254
- this.txSHBuffer = Buffer.alloc(consts_1.SH_TX_BUFFER_LEN);
255
- this.rxSHBuffer = Buffer.alloc(consts_1.SH_RX_BUFFER_LEN);
256
- this.ackTimer = 0;
257
- this.ackPeriod = 0;
258
- this.nrTimer = 0;
259
- this.flags = 0;
260
- this.decodeInProgress = false;
261
- this.ackRx = 0;
262
- this.ackTx = 0;
263
- this.frmTx = 0;
264
- this.frmReTx = 0;
265
- this.frmRx = 0;
266
- this.frmReTxHead = 0;
267
- this.timeouts = 0;
268
- this.rxDataBuffer = null;
269
- this.rxLen = 0;
270
- // init to "start of frame" default
271
- this.encodeCount = 0;
272
- this.encodeState = 0;
273
- this.encodeEscFlag = false;
274
- this.encodeCrc = 0xFFFF;
275
- this.txOffset = 0;
276
- // init to "start of frame" default
277
- this.decodeLen = 0;
278
- this.decodeByte1 = 0;
279
- this.decodeByte2 = 0;
280
- this.decodeFlip = 0;
281
- this.decodeCrc = 0xFFFF;
282
- this.ncpError = enums_1.EzspStatus.NO_ERROR;
283
- this.hostError = enums_1.EzspStatus.NO_ERROR;
284
- this.sendState = SendState.IDLE;
285
- this.ncpSleepEnabled = false;
286
- this.ncpHasCallbacks = false;
287
- this.stopAckTimer();
288
- this.stopNrTimer();
289
- this.initQueues();
290
- this.counters = {
291
- txData: 0,
292
- txAllFrames: 0,
293
- txDataFrames: 0,
294
- txAckFrames: 0,
295
- txNakFrames: 0,
296
- txReDataFrames: 0,
297
- // txN0Frames: 0,
298
- txN1Frames: 0,
299
- txCancelled: 0,
300
- rxData: 0,
301
- rxAllFrames: 0,
302
- rxDataFrames: 0,
303
- rxAckFrames: 0,
304
- rxNakFrames: 0,
305
- rxReDataFrames: 0,
306
- // rxN0Frames: 0,
307
- rxN1Frames: 0,
308
- rxCancelled: 0,
309
- rxCrcErrors: 0,
310
- rxCommErrors: 0,
311
- rxTooShort: 0,
312
- rxTooLong: 0,
313
- rxBadControl: 0,
314
- rxBadLength: 0,
315
- rxBadAckNumber: 0,
316
- rxNoBuffer: 0,
317
- rxDuplicates: 0,
318
- rxOutOfSequence: 0,
319
- rxAckTimeouts: 0,
320
- };
321
- }
322
- /**
323
- * Initializes all queues and free lists.
324
- * All receive buffers are put into rxFree, and rxQueue is empty.
325
- * All transmit buffers are put into txFree, and txQueue and reTxQueue are empty.
326
- */
327
- initQueues() {
328
- this.txQueue.tail = null;
329
- this.reTxQueue.tail = null;
330
- this.txFree.link = null;
331
- for (let i = 0; i < consts_1.TX_POOL_BUFFERS; i++) {
332
- this.txFree.freeBuffer(this.txPool[i] = new queues_1.EzspBuffer());
333
- }
334
- this.rxQueue.tail = null;
335
- this.rxFree.link = null;
336
- for (let i = 0; i < consts_1.EZSP_HOST_RX_POOL_SIZE; i++) {
337
- this.rxFree.freeBuffer(this.rxPool[i] = new queues_1.EzspBuffer());
338
- }
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
- */
344
- async initPort() {
345
- await this.closePort(); // will do nothing if nothing's open
346
- if (!socketPortUtils_1.default.isTcpPath(this.portOptions.path)) {
347
- const serialOpts = {
348
- path: this.portOptions.path,
349
- baudRate: typeof this.portOptions.baudRate === 'number' ? this.portOptions.baudRate : 115200,
350
- rtscts: typeof this.portOptions.rtscts === 'boolean' ? this.portOptions.rtscts : false,
351
- autoOpen: false,
352
- parity: 'none',
353
- stopBits: 1,
354
- xon: false,
355
- xoff: false,
356
- };
357
- // enable software flow control if RTS/CTS not enabled in config
358
- if (!serialOpts.rtscts) {
359
- logger_1.logger.info(`RTS/CTS config is off, enabling software flow control.`, NS);
360
- serialOpts.xon = true;
361
- serialOpts.xoff = true;
362
- }
363
- //@ts-expect-error Jest testing
364
- if (this.portOptions.binding != null) {
365
- //@ts-expect-error Jest testing
366
- serialOpts.binding = this.portOptions.binding;
367
- }
368
- logger_1.logger.debug(`Opening serial port with ${JSON.stringify(serialOpts)}`, NS);
369
- this.serialPort = new serialPort_1.SerialPort(serialOpts);
370
- this.writer = new writer_1.AshWriter({ highWaterMark: CONFIG_HIGHWATER_MARK });
371
- this.writer.pipe(this.serialPort);
372
- this.parser = new parser_1.AshParser({ readableHighWaterMark: CONFIG_HIGHWATER_MARK });
373
- this.serialPort.pipe(this.parser);
374
- this.parser.on('data', this.onFrame.bind(this));
375
- try {
376
- await this.serialPort.asyncOpen();
377
- logger_1.logger.info(`Serial port opened`, NS);
378
- this.serialPort.once('close', this.onPortClose.bind(this));
379
- this.serialPort.on('error', this.onPortError.bind(this));
380
- }
381
- catch (error) {
382
- await this.stop();
383
- throw error;
384
- }
385
- }
386
- else {
387
- const info = socketPortUtils_1.default.parseTcpPath(this.portOptions.path);
388
- logger_1.logger.debug(`Opening TCP socket with ${info.host}:${info.port}`, NS);
389
- this.socketPort = new net_1.Socket();
390
- this.socketPort.setNoDelay(true);
391
- this.socketPort.setKeepAlive(true, 15000);
392
- this.writer = new writer_1.AshWriter({ highWaterMark: CONFIG_HIGHWATER_MARK });
393
- this.writer.pipe(this.socketPort);
394
- this.parser = new parser_1.AshParser({ readableHighWaterMark: CONFIG_HIGHWATER_MARK });
395
- this.socketPort.pipe(this.parser);
396
- this.parser.on('data', this.onFrame.bind(this));
397
- return new Promise((resolve, reject) => {
398
- const openError = async (err) => {
399
- await this.stop();
400
- reject(err);
401
- };
402
- this.socketPort.on('connect', () => {
403
- logger_1.logger.debug(`Socket connected`, NS);
404
- });
405
- this.socketPort.on('ready', async () => {
406
- logger_1.logger.info(`Socket ready`, NS);
407
- this.socketPort.removeListener('error', openError);
408
- this.socketPort.once('close', this.onPortClose.bind(this));
409
- this.socketPort.on('error', this.onPortError.bind(this));
410
- resolve();
411
- });
412
- this.socketPort.once('error', openError);
413
- this.socketPort.connect(info.port, info.host);
414
- });
415
- }
416
- }
417
- /**
418
- * Handle port closing
419
- * @param err A boolean for Socket, an Error for serialport
420
- */
421
- async onPortClose(err) {
422
- logger_1.logger.info(`Port closed. Error? ${err ?? 'no'}`, NS);
423
- }
424
- /**
425
- * Handle port error
426
- * @param error
427
- */
428
- async onPortError(error) {
429
- logger_1.logger.info(`Port error: ${error}`, NS);
430
- this.emit(AshEvents.FATAL_ERROR, enums_1.EzspStatus.ERROR_SERIAL_INIT);
431
- }
432
- /**
433
- * Handle received frame from AshParser.
434
- * @param buf
435
- */
436
- onFrame(buffer) {
437
- const iCAN = buffer.lastIndexOf(enums_2.AshReservedByte.CANCEL); // should only be one, but just in case...
438
- if (iCAN !== -1) {
439
- // ignore the cancel before RSTACK
440
- if (this.flags & Flag.CONNECTED) {
441
- this.counters.rxCancelled += 1;
442
- logger_1.logger.warning(`Frame(s) in progress cancelled in [${buffer.toString('hex')}]`, NS);
443
- }
444
- // get rid of everything up to the CAN flag and start reading frame from there, no need to loop through bytes in vain
445
- buffer = buffer.subarray(iCAN + 1);
446
- }
447
- if (!buffer.length) {
448
- // skip any CANCEL that results in empty frame (have yet to see one, but just in case...)
449
- // shouldn't happen for any other reason, unless receiving bad stuff from port?
450
- logger_1.logger.debug(`Received empty frame. Skipping.`, NS);
451
- return;
452
- }
453
- const status = this.receiveFrame(buffer);
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;
458
- }
459
- }
460
- /**
461
- * Initializes the ASH protocol, and waits until the NCP finishes rebooting, or a non-recoverable error occurs.
462
- *
463
- * @returns
464
- * - EzspStatus.SUCCESS
465
- * - EzspStatus.HOST_FATAL_ERROR
466
- * - EzspStatus.ASH_NCP_FATAL_ERROR)
467
- */
468
- async start() {
469
- if (!this.portOpen || (this.flags & Flag.CONNECTED)) {
470
- return enums_1.EzspStatus.ERROR_INVALID_CALL;
471
- }
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
- }
480
- }
481
- catch (err) {
482
- logger_1.logger.error(`Error while flushing before start: ${err}`, NS);
483
- }
484
- // block til RSTACK, fatal error or timeout
485
- // NOTE: on average, this seems to take around 1000ms when successful
486
- for (let i = 0; i < CONFIG_TIME_RST; i += CONFIG_TIME_RST_CHECK) {
487
- this.sendExec();
488
- if ((this.flags & Flag.CONNECTED)) {
489
- logger_1.logger.info(`======== ASH started ========`, NS);
490
- return enums_1.EzspStatus.SUCCESS;
491
- }
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);
497
- await (0, utils_1.Wait)(CONFIG_TIME_RST_CHECK);
498
- }
499
- return enums_1.EzspStatus.HOST_FATAL_ERROR;
500
- }
501
- /**
502
- * Stops the ASH protocol - flushes and closes the serial port, clears all queues, stops timers, etc.
503
- */
504
- async stop() {
505
- this.closing = true;
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() {
516
- if (this.serialPort?.isOpen) {
517
- try {
518
- await this.serialPort.asyncFlushAndClose();
519
- }
520
- catch (err) {
521
- logger_1.logger.error(`Failed to close serial port ${err}.`, NS);
522
- }
523
- this.serialPort.removeAllListeners();
524
- }
525
- else if (this.socketPort != null && !this.socketPort.closed) {
526
- this.socketPort.destroy();
527
- this.socketPort.removeAllListeners();
528
- }
529
- }
530
- /**
531
- * Initializes the ASH serial port and (if enabled) resets the NCP.
532
- * The method used to do the reset is specified by the the host configuration parameter resetMethod.
533
- *
534
- * When the reset method is sending a RST frame, the caller should retry NCP resets a few times if it fails.
535
- *
536
- * @returns
537
- * - EzspStatus.SUCCESS
538
- * - EzspStatus.HOST_FATAL_ERROR
539
- */
540
- async resetNcp() {
541
- if (this.closing) {
542
- return enums_1.EzspStatus.ERROR_INVALID_CALL;
543
- }
544
- logger_1.logger.info(`======== ASH NCP reset ========`, NS);
545
- this.initVariables();
546
- let status;
547
- // ask ncp to reset itself using RST frame
548
- try {
549
- if (!this.portOpen) {
550
- await this.initPort();
551
- }
552
- this.flags = Flag.RST | Flag.CAN;
553
- return enums_1.EzspStatus.SUCCESS;
554
- }
555
- catch (err) {
556
- logger_1.logger.error(`Failed to init port with error ${err}`, NS);
557
- this.hostError = status;
558
- return enums_1.EzspStatus.HOST_FATAL_ERROR;
559
- }
560
- }
561
- /**
562
- * Adds a DATA frame to the transmit queue to send to the NCP.
563
- * Frames that are too long or too short will not be sent, and frames will not be added to the queue
564
- * if the host is not in the Connected state, or the NCP is not ready to receive a DATA frame or if there
565
- * is no room in the queue;
566
- *
567
- * @param len length of data field
568
- * @param inBuf array containing the data to be sent
569
- *
570
- * @returns
571
- * - EzspStatus.SUCCESS
572
- * - EzspStatus.NO_TX_SPACE
573
- * - EzspStatus.DATA_FRAME_TOO_SHORT
574
- * - EzspStatus.DATA_FRAME_TOO_LONG
575
- * - EzspStatus.NOT_CONNECTED
576
- */
577
- send(len, inBuf) {
578
- // Check for errors that might have been detected
579
- if (this.hostError !== enums_1.EzspStatus.NO_ERROR) {
580
- return enums_1.EzspStatus.HOST_FATAL_ERROR;
581
- }
582
- if (this.ncpError !== enums_1.EzspStatus.NO_ERROR) {
583
- return enums_1.EzspStatus.ASH_NCP_FATAL_ERROR;
584
- }
585
- // After verifying that the data field length is within bounds,
586
- // copies data frame to a buffer and appends it to the transmit queue.
587
- if (len < consts_1.ASH_MIN_DATA_FIELD_LEN) {
588
- return enums_1.EzspStatus.DATA_FRAME_TOO_SHORT;
589
- }
590
- else if (len > consts_1.ASH_MAX_DATA_FIELD_LEN) {
591
- return enums_1.EzspStatus.DATA_FRAME_TOO_LONG;
592
- }
593
- if (!(this.flags & Flag.CONNECTED)) {
594
- return enums_1.EzspStatus.NOT_CONNECTED;
595
- }
596
- const buffer = this.txFree.allocBuffer();
597
- if (buffer == null) {
598
- return enums_1.EzspStatus.NO_TX_SPACE;
599
- }
600
- inBuf.copy(buffer.data, 0, 0, len);
601
- buffer.len = len;
602
- this.randomizeBuffer(buffer.data, buffer.len); // IN/OUT data
603
- this.txQueue.addTail(buffer);
604
- this.sendExec();
605
- return enums_1.EzspStatus.SUCCESS;
606
- }
607
- /**
608
- * Manages outgoing communication to the NCP, including DATA frames as well as the frames used for
609
- * initialization and error detection and recovery.
610
- */
611
- sendExec() {
612
- let outByte = 0x00;
613
- let inByte = 0x00;
614
- let len = 0;
615
- let buffer = null;
616
- // Check for received acknowledgement timer expiry
617
- if (this.ackTimerHasExpired()) {
618
- if (this.flags & Flag.CONNECTED) {
619
- const expectedFrm = ((this.flags & Flag.RETX) ? this.frmReTx : this.frmTx);
620
- if (this.ackRx !== expectedFrm) {
621
- this.counters.rxAckTimeouts += 1;
622
- this.adjustAckPeriod(true);
623
- logger_1.logger.debug(`Timer expired waiting for ACK for ${expectedFrm}, current=${this.ackRx}`, NS);
624
- if (++this.timeouts >= consts_1.ASH_MAX_TIMEOUTS) {
625
- this.hostDisconnect(enums_1.EzspStatus.ASH_ERROR_TIMEOUTS);
626
- return;
627
- }
628
- this.startRetransmission();
629
- }
630
- else {
631
- this.stopAckTimer();
632
- }
633
- }
634
- else {
635
- this.hostDisconnect(enums_1.EzspStatus.ASH_ERROR_RESET_FAIL);
636
- }
637
- }
638
- while (this.writer.writeAvailable()) {
639
- // Send ASH_CAN character immediately, ahead of any other transmit data
640
- if (this.flags & Flag.CAN) {
641
- if (this.sendState === SendState.IDLE) {
642
- // sending RST or just woke NCP
643
- this.writer.writeByte(enums_2.AshReservedByte.CANCEL);
644
- }
645
- else if (this.sendState === SendState.TX_DATA) {
646
- // cancel frame in progress
647
- this.counters.txCancelled += 1;
648
- this.writer.writeByte(enums_2.AshReservedByte.CANCEL);
649
- this.stopAckTimer();
650
- this.sendState = SendState.IDLE;
651
- }
652
- this.flags &= ~Flag.CAN;
653
- continue;
654
- }
655
- switch (this.sendState) {
656
- case SendState.IDLE:
657
- // In between frames - do some housekeeping and decide what to send next
658
- // If retransmitting, set the next frame to send to the last ackNum
659
- // received, then check to see if retransmission is now complete.
660
- if (this.flags & Flag.RETX) {
661
- if ((0, math_1.withinRange)(this.frmReTx, this.ackRx, this.frmTx)) {
662
- this.frmReTx = this.ackRx;
663
- }
664
- if (this.frmReTx === this.frmTx) {
665
- this.flags &= ~Flag.RETX;
666
- this.scrubReTxQueue();
667
- }
668
- }
669
- // restrain ncp if needed
670
- this.dataFrameFlowControl();
671
- // See if a short frame is flagged to be sent
672
- // The order of the tests below - RST, NAK and ACK -
673
- // sets the relative priority of sending these frame types.
674
- if (this.flags & Flag.RST) {
675
- this.txSHBuffer[0] = enums_2.AshFrameType.RST;
676
- this.setAndStartAckTimer(CONFIG_TIME_RST);
677
- len = 1;
678
- this.flags &= ~(Flag.RST | Flag.NAK | Flag.ACK);
679
- this.sendState = SendState.SHFRAME;
680
- logger_1.logger.debug(`---> [FRAME type=RST]`, NS);
681
- }
682
- else if (this.flags & (Flag.NAK | Flag.ACK)) {
683
- if (this.flags & Flag.NAK) {
684
- this.txSHBuffer[0] = enums_2.AshFrameType.NAK + (this.frmRx << consts_1.ASH_ACKNUM_BIT);
685
- this.flags &= ~(Flag.NRTX | Flag.NAK | Flag.ACK);
686
- logger_1.logger.debug(`---> [FRAME type=NAK frmRx=${this.frmRx}]`, NS);
687
- }
688
- else {
689
- this.txSHBuffer[0] = enums_2.AshFrameType.ACK + (this.frmRx << consts_1.ASH_ACKNUM_BIT);
690
- this.flags &= ~(Flag.NRTX | Flag.ACK);
691
- logger_1.logger.debug(`---> [FRAME type=ACK frmRx=${this.frmRx}]`, NS);
692
- }
693
- if (this.flags & Flag.NR) {
694
- this.txSHBuffer[0] |= consts_1.ASH_NFLAG_MASK;
695
- this.flags |= Flag.NRTX;
696
- this.startNrTimer();
697
- }
698
- this.ackTx = this.frmRx;
699
- len = 1;
700
- this.sendState = SendState.SHFRAME;
701
- }
702
- else if (this.flags & Flag.RETX) {
703
- // Retransmitting DATA frames for error recovery
704
- buffer = this.reTxQueue.getNthEntry((0, math_1.mod8)(this.frmTx - this.frmReTx));
705
- len = buffer.len + 1;
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;
707
- this.sendState = SendState.RETX_DATA;
708
- logger_1.logger.debug(`---> [FRAME type=DATA_RETX frmReTx=${this.frmReTx} frmRx=${this.frmRx}]`, NS);
709
- }
710
- else if (this.ackTx != this.frmRx) {
711
- // An ACK should be generated
712
- this.flags |= Flag.ACK;
713
- break;
714
- }
715
- else if (!this.txQueue.empty && (0, math_1.withinRange)(this.ackRx, this.frmTx, (this.ackRx + CONFIG_TX_K - 1))) {
716
- // Send a DATA frame if ready
717
- buffer = this.txQueue.head;
718
- len = buffer.len + 1;
719
- this.counters.txData += (len - 1);
720
- this.txSHBuffer[0] = enums_2.AshFrameType.DATA | (this.frmTx << consts_1.ASH_FRMNUM_BIT) | (this.frmRx << consts_1.ASH_ACKNUM_BIT);
721
- this.sendState = SendState.TX_DATA;
722
- logger_1.logger.debug(`---> [FRAME type=DATA frmTx=${this.frmTx} frmRx=${this.frmRx}]`, NS);
723
- }
724
- else {
725
- // Otherwise there's nothing to send
726
- this.writer.writeFlush();
727
- return;
728
- }
729
- this.countFrame(true);
730
- // Start frame - encodeByte() is inited by a non-zero length argument
731
- outByte = this.encodeByte(len, this.txSHBuffer[0]);
732
- this.writer.writeByte(outByte);
733
- break;
734
- case SendState.SHFRAME:
735
- // sending short frame
736
- if (this.txOffset !== 0xFF) {
737
- inByte = this.txSHBuffer[this.txOffset];
738
- outByte = this.encodeByte(0, inByte);
739
- this.writer.writeByte(outByte);
740
- }
741
- else {
742
- this.sendState = SendState.IDLE;
743
- }
744
- break;
745
- case SendState.TX_DATA:
746
- case SendState.RETX_DATA:
747
- // sending OR resending data frame
748
- if (this.txOffset !== 0xFF) {
749
- inByte = this.txOffset ? buffer.data[this.txOffset - 1] : this.txSHBuffer[0];
750
- outByte = this.encodeByte(0, inByte);
751
- this.writer.writeByte(outByte);
752
- }
753
- else {
754
- if (this.sendState === SendState.TX_DATA) {
755
- this.frmTx = (0, math_1.inc8)(this.frmTx);
756
- buffer = this.txQueue.removeHead();
757
- this.reTxQueue.addTail(buffer);
758
- }
759
- else {
760
- this.frmReTx = (0, math_1.inc8)(this.frmReTx);
761
- }
762
- if (this.ackTimerIsNotRunning()) {
763
- this.startAckTimer();
764
- }
765
- this.ackTx = this.frmRx;
766
- this.sendState = SendState.IDLE;
767
- }
768
- break;
769
- }
770
- }
771
- this.writer.writeFlush();
772
- }
773
- /**
774
- * Retrieve a frame and accept, reTx, reject, fail based on type & validity in current state.
775
- * @returns
776
- * - EzspStatus.SUCCESS On valid RSTACK or valid DATA frame.
777
- * - EzspStatus.ASH_IN_PROGRESS
778
- * - EzspStatus.NO_RX_DATA
779
- * - EzspStatus.NO_RX_SPACE
780
- * - EzspStatus.HOST_FATAL_ERROR
781
- * - EzspStatus.ASH_NCP_FATAL_ERROR
782
- */
783
- receiveFrame(buffer) {
784
- // Check for errors that might have been detected
785
- if (this.hostError !== enums_1.EzspStatus.NO_ERROR) {
786
- return enums_1.EzspStatus.HOST_FATAL_ERROR;
787
- }
788
- if (this.ncpError !== enums_1.EzspStatus.NO_ERROR) {
789
- return enums_1.EzspStatus.ASH_NCP_FATAL_ERROR;
790
- }
791
- let ackNum = 0;
792
- let frmNum = 0;
793
- let frameType = enums_2.AshFrameType.INVALID;
794
- // Read data from serial port and assemble a frame until complete, aborted
795
- // due to an error, cancelled, or there is no more serial data available.
796
- const status = this.readFrame(buffer);
797
- switch (status) {
798
- case enums_1.EzspStatus.SUCCESS:
799
- break;
800
- case enums_1.EzspStatus.ASH_IN_PROGRESS:
801
- // should have a complete frame by now, if not, don't process further
802
- return enums_1.EzspStatus.NO_RX_DATA;
803
- case enums_1.EzspStatus.ASH_CANCELLED:
804
- // should have been taken out in onFrame
805
- return this.hostDisconnect(status);
806
- case enums_1.EzspStatus.ASH_BAD_CRC:
807
- this.counters.rxCrcErrors += 1;
808
- this.rejectFrame();
809
- logger_1.logger.error(`Received frame with CRC error`, NS);
810
- return enums_1.EzspStatus.NO_RX_DATA;
811
- case enums_1.EzspStatus.ASH_COMM_ERROR:
812
- this.counters.rxCommErrors += 1;
813
- this.rejectFrame();
814
- logger_1.logger.error(`Received frame with comm error`, NS);
815
- return enums_1.EzspStatus.NO_RX_DATA;
816
- case enums_1.EzspStatus.ASH_TOO_SHORT:
817
- this.counters.rxTooShort += 1;
818
- this.rejectFrame();
819
- logger_1.logger.error(`Received frame shorter than minimum`, NS);
820
- return enums_1.EzspStatus.NO_RX_DATA;
821
- case enums_1.EzspStatus.ASH_TOO_LONG:
822
- this.counters.rxTooLong += 1;
823
- this.rejectFrame();
824
- logger_1.logger.error(`Received frame longer than maximum`, NS);
825
- return enums_1.EzspStatus.NO_RX_DATA;
826
- case enums_1.EzspStatus.ASH_ERROR_XON_XOFF:
827
- return this.hostDisconnect(status);
828
- default:
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);
831
- }
832
- // Got a complete frame - validate its control and length.
833
- // On an error the type returned will be TYPE_INVALID.
834
- frameType = this.getFrameType(this.rxSHBuffer[0], this.rxLen);
835
- // Free buffer allocated for a received frame if:
836
- // DATA frame, and out of order
837
- // DATA frame, and not in the CONNECTED state
838
- // not a DATA frame
839
- if (frameType === enums_2.AshFrameType.DATA) {
840
- if (!(this.flags & Flag.CONNECTED) || (ashGetFrmNum(this.rxSHBuffer[0]) !== this.frmRx)) {
841
- this.freeNonNullRxBuffer();
842
- }
843
- }
844
- else {
845
- this.freeNonNullRxBuffer();
846
- }
847
- const frameTypeStr = enums_2.AshFrameType[frameType];
848
- logger_1.logger.debug(`<--- [FRAME type=${frameTypeStr}]`, NS);
849
- this.countFrame(false);
850
- // Process frames received while not in the connected state -
851
- // ignore everything except RSTACK and ERROR frames
852
- if (!(this.flags & Flag.CONNECTED)) {
853
- if (frameType === enums_2.AshFrameType.RSTACK) {
854
- // RSTACK frames have the ncp ASH version in the first data field byte,
855
- // and the reset reason in the second byte
856
- if (this.rxSHBuffer[1] !== consts_1.ASH_VERSION) {
857
- return this.hostDisconnect(enums_1.EzspStatus.ASH_ERROR_VERSION);
858
- }
859
- // Ignore a RSTACK if the reset reason doesn't match our reset method
860
- if (this.rxSHBuffer[2] !== enums_2.NcpFailedCode.RESET_SOFTWARE) {
861
- return enums_1.EzspStatus.ASH_IN_PROGRESS;
862
- }
863
- this.ncpError = enums_1.EzspStatus.NO_ERROR;
864
- this.stopAckTimer();
865
- this.timeouts = 0;
866
- this.setAckPeriod(CONFIG_ACK_TIME_INIT);
867
- this.flags = Flag.CONNECTED | Flag.ACK;
868
- logger_1.logger.info(`======== ASH connected ========`, NS);
869
- return enums_1.EzspStatus.SUCCESS;
870
- }
871
- else if (frameType === enums_2.AshFrameType.ERROR) {
872
- logger_1.logger.error(`Received ERROR from NCP while connecting, with code=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`, NS);
873
- return this.ncpDisconnect(enums_1.EzspStatus.ASH_NCP_FATAL_ERROR);
874
- }
875
- return enums_1.EzspStatus.ASH_IN_PROGRESS;
876
- }
877
- // Connected - process the ackNum in ACK, NAK and DATA frames
878
- if ((frameType === enums_2.AshFrameType.DATA) || (frameType === enums_2.AshFrameType.ACK) || (frameType === enums_2.AshFrameType.NAK)) {
879
- ackNum = ashGetACKNum(this.rxSHBuffer[0]);
880
- logger_1.logger.debug(`<--- [FRAME type=${frameTypeStr} ackNum=${ackNum}]`, NS);
881
- if (!(0, math_1.withinRange)(this.ackRx, ackNum, this.frmTx)) {
882
- this.counters.rxBadAckNumber += 1;
883
- logger_1.logger.debug(`<-x- [FRAME type=${frameTypeStr} ackNum=${ackNum}] Invalid ACK num; not within <${this.ackRx}-${this.frmTx}>`, NS);
884
- frameType = enums_2.AshFrameType.INVALID;
885
- }
886
- else if (ackNum !== this.ackRx) {
887
- // new frame(s) ACK'ed?
888
- this.ackRx = ackNum;
889
- this.timeouts = 0;
890
- if (this.flags & Flag.RETX) {
891
- // start timer if unACK'ed frames
892
- this.stopAckTimer();
893
- if (ackNum !== this.frmReTx) {
894
- this.startAckTimer();
895
- }
896
- }
897
- else {
898
- this.adjustAckPeriod(false); // factor ACK time into period
899
- if (ackNum !== this.frmTx) {
900
- // if more unACK'ed frames,
901
- this.startAckTimer(); // then restart ACK timer
902
- }
903
- this.scrubReTxQueue(); // free buffer(s) in ReTx queue
904
- }
905
- }
906
- }
907
- // Process frames received while connected
908
- switch (frameType) {
909
- case enums_2.AshFrameType.DATA:
910
- frmNum = ashGetFrmNum(this.rxSHBuffer[0]);
911
- const frameStr = `[FRAME type=${frameTypeStr} ackNum=${ackNum} frmNum=${frmNum}]`;
912
- if (frmNum === this.frmRx) {
913
- // is frame in sequence?
914
- if (this.rxDataBuffer == null) {
915
- // valid frame but no memory?
916
- this.counters.rxNoBuffer += 1;
917
- logger_1.logger.debug(`<-x- ${frameStr} No buffer available`, NS);
918
- this.rejectFrame();
919
- return enums_1.EzspStatus.NO_RX_SPACE;
920
- }
921
- if (this.rxSHBuffer[0] & consts_1.ASH_RFLAG_MASK) {
922
- // if retransmitted, force ACK
923
- this.flags |= Flag.ACK;
924
- }
925
- this.flags &= ~(Flag.REJ | Flag.NAK); // clear the REJ condition
926
- this.frmRx = (0, math_1.inc8)(this.frmRx);
927
- this.randomizeBuffer(this.rxDataBuffer.data, this.rxDataBuffer.len); // IN/OUT data
928
- this.rxQueue.addTail(this.rxDataBuffer); // add frame to receive queue
929
- logger_1.logger.debug(`<--- ${frameStr} Added to rxQueue`, NS);
930
- this.counters.rxData += this.rxDataBuffer.len;
931
- setImmediate(() => {
932
- this.emit(AshEvents.FRAME);
933
- });
934
- return enums_1.EzspStatus.SUCCESS;
935
- }
936
- else {
937
- // frame is out of sequence
938
- if (this.rxSHBuffer[0] & consts_1.ASH_RFLAG_MASK) {
939
- // if retransmitted, force ACK
940
- this.counters.rxDuplicates += 1;
941
- this.flags |= Flag.ACK;
942
- }
943
- else {
944
- // 1st OOS? then set REJ, send NAK
945
- if ((this.flags & Flag.REJ) === 0) {
946
- this.counters.rxOutOfSequence += 1;
947
- logger_1.logger.debug(`<-x- ${frameStr} Out of sequence: expected ${this.frmRx}; got ${frmNum}.`, NS);
948
- }
949
- this.rejectFrame();
950
- }
951
- }
952
- break;
953
- case enums_2.AshFrameType.ACK:
954
- // already fully processed
955
- break;
956
- case enums_2.AshFrameType.NAK:
957
- // start retransmission if needed
958
- this.startRetransmission();
959
- break;
960
- case enums_2.AshFrameType.RSTACK:
961
- // unexpected ncp reset
962
- logger_1.logger.error(`Received unexpected reset from NCP, with reason=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`, NS);
963
- this.ncpError = enums_1.EzspStatus.ASH_NCP_FATAL_ERROR;
964
- return this.hostDisconnect(enums_1.EzspStatus.ASH_ERROR_NCP_RESET);
965
- case enums_2.AshFrameType.ERROR:
966
- // ncp error
967
- logger_1.logger.error(`Received ERROR from NCP, with code=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`, NS);
968
- return this.ncpDisconnect(enums_1.EzspStatus.ASH_NCP_FATAL_ERROR);
969
- case enums_2.AshFrameType.INVALID:
970
- // reject invalid frames
971
- logger_1.logger.debug(`<-x- [FRAME type=${frameTypeStr}] Rejecting. ${this.rxSHBuffer.toString('hex')}`, NS);
972
- this.rejectFrame();
973
- break;
974
- }
975
- return enums_1.EzspStatus.ASH_IN_PROGRESS;
976
- }
977
- /**
978
- * If the last control byte received was a DATA control, and we are connected and not already in the reject condition,
979
- * then send a NAK and set the reject condition.
980
- */
981
- rejectFrame() {
982
- if (((this.rxSHBuffer[0] & consts_1.ASH_DFRAME_MASK) === enums_2.AshFrameType.DATA)
983
- && ((this.flags & (Flag.REJ | Flag.CONNECTED)) === Flag.CONNECTED)) {
984
- this.flags |= (Flag.REJ | Flag.NAK);
985
- }
986
- }
987
- /**
988
- * Retrieve and process serial bytes.
989
- * @returns
990
- */
991
- readFrame(buffer) {
992
- let status = enums_1.EzspStatus.ERROR_INVALID_CALL; // no actual data to read, something's very wrong
993
- let index = 0;
994
- // let inByte: number = 0x00;
995
- let outByte = 0x00;
996
- if (!this.decodeInProgress) {
997
- this.rxLen = 0;
998
- this.rxDataBuffer = null;
999
- }
1000
- for (const inByte of buffer) {
1001
- // 0xFF byte signals a callback is pending when between frames in synchronous (polled) callback mode.
1002
- if (!this.decodeInProgress && (inByte === consts_1.ASH_WAKE)) {
1003
- if (this.ncpSleepEnabled) {
1004
- this.ncpHasCallbacks = true;
1005
- }
1006
- status = enums_1.EzspStatus.ASH_IN_PROGRESS;
1007
- continue;
1008
- }
1009
- // Decode next input byte - note that many input bytes do not produce
1010
- // an output byte. Return on any error in decoding.
1011
- index = this.rxLen;
1012
- [status, outByte, this.rxLen] = this.decodeByte(inByte, outByte, this.rxLen);
1013
- // discard an invalid frame
1014
- if ((status !== enums_1.EzspStatus.ASH_IN_PROGRESS) && (status !== enums_1.EzspStatus.SUCCESS)) {
1015
- this.freeNonNullRxBuffer();
1016
- break;
1017
- }
1018
- // if input byte produced an output byte
1019
- if (this.rxLen !== index) {
1020
- if (this.rxLen <= consts_1.SH_RX_BUFFER_LEN) {
1021
- // if a short frame, return in rxBuffer
1022
- this.rxSHBuffer[index] = outByte;
1023
- }
1024
- else {
1025
- // if a longer DATA frame, allocate an EzspBuffer for it.
1026
- // (Note the control byte is always returned in shRxBuffer[0].
1027
- // Even if no buffer can be allocated, the control's ackNum must be processed.)
1028
- if (this.rxLen === (consts_1.SH_RX_BUFFER_LEN + 1)) {
1029
- // alloc buffer, copy prior data
1030
- this.rxDataBuffer = this.rxFree.allocBuffer();
1031
- if (this.rxDataBuffer !== null) {
1032
- // const len = SH_RX_BUFFER_LEN - 1;
1033
- // (void) memcpy(this.rxDataBuffer.data, this.shRxBuffer + 1, SH_RX_BUFFER_LEN - 1);
1034
- this.rxSHBuffer.copy(this.rxDataBuffer.data, 0, 1, consts_1.SH_RX_BUFFER_LEN);
1035
- this.rxDataBuffer.len = consts_1.SH_RX_BUFFER_LEN - 1;
1036
- }
1037
- }
1038
- if (this.rxDataBuffer !== null) {
1039
- // copy next byte to buffer
1040
- this.rxDataBuffer.data[index - 1] = outByte; // -1 since control is omitted
1041
- this.rxDataBuffer.len = index;
1042
- }
1043
- }
1044
- }
1045
- if (status !== enums_1.EzspStatus.ASH_IN_PROGRESS) {
1046
- break;
1047
- }
1048
- }
1049
- return status;
1050
- }
1051
- /**
1052
- *
1053
- */
1054
- freeNonNullRxBuffer() {
1055
- if (this.rxDataBuffer !== null) {
1056
- this.rxFree.freeBuffer(this.rxDataBuffer);
1057
- this.rxDataBuffer = null;
1058
- }
1059
- }
1060
- /**
1061
- *
1062
- */
1063
- scrubReTxQueue() {
1064
- let buffer;
1065
- while (this.ackRx !== this.frmReTxHead) {
1066
- buffer = this.reTxQueue.removeHead();
1067
- this.txFree.freeBuffer(buffer);
1068
- this.frmReTxHead = (0, math_1.inc8)(this.frmReTxHead);
1069
- }
1070
- }
1071
- /**
1072
- * If not already retransmitting, and there are unacked frames, start retransmitting after the last frame that was acked.
1073
- */
1074
- startRetransmission() {
1075
- if (!(this.flags & Flag.RETX) && (this.ackRx != this.frmTx)) {
1076
- this.stopAckTimer();
1077
- this.frmReTx = this.ackRx;
1078
- this.flags |= (Flag.RETX | Flag.CAN);
1079
- }
1080
- }
1081
- /**
1082
- * Check free rx buffers to see whether able to receive DATA frames: set or clear NR flag appropriately.
1083
- * Inform ncp of our status using the nFlag in ACKs and NAKs.
1084
- * Note that not ready status must be refreshed if it persists beyond a maximum time limit.
1085
- */
1086
- dataFrameFlowControl() {
1087
- if (this.flags & Flag.CONNECTED) {
1088
- // Set/clear NR flag based on the number of buffers free
1089
- if (this.rxFree.length < CONFIG_NR_LOW_LIMIT) {
1090
- this.flags |= Flag.NR;
1091
- logger_1.logger.warning(`NOT READY - Signaling NCP`, NS);
1092
- }
1093
- else if (this.rxFree.length > CONFIG_NR_HIGH_LIMIT) {
1094
- this.flags &= ~Flag.NR;
1095
- this.stopNrTimer(); // needed??
1096
- }
1097
- // Force an ACK (or possibly NAK) if we need to send an updated nFlag
1098
- // due to either a changed NR status or to refresh a set nFlag
1099
- if (this.flags & Flag.NR) {
1100
- if (!(this.flags & Flag.NRTX) || this.nrTimerHasExpired()) {
1101
- this.flags |= Flag.ACK;
1102
- this.startNrTimer();
1103
- }
1104
- }
1105
- else {
1106
- this.nrTimerHasExpired(); // ensure timer checked often
1107
- if (this.flags & Flag.NRTX) {
1108
- this.flags |= Flag.ACK;
1109
- this.stopNrTimer(); // needed???
1110
- }
1111
- }
1112
- }
1113
- else {
1114
- this.stopNrTimer();
1115
- this.flags &= ~(Flag.NRTX | Flag.NR);
1116
- }
1117
- }
1118
- /**
1119
- * Sets a fatal error state at the Host level.
1120
- * @param error
1121
- * @returns EzspStatus.HOST_FATAL_ERROR
1122
- */
1123
- hostDisconnect(error) {
1124
- this.flags = 0;
1125
- this.hostError = error;
1126
- logger_1.logger.error(`ASH disconnected: ${enums_1.EzspStatus[error]} | NCP status: ${enums_1.EzspStatus[this.ncpError]}`, NS);
1127
- return enums_1.EzspStatus.HOST_FATAL_ERROR;
1128
- }
1129
- /**
1130
- * Sets a fatal error state at the NCP level. Will require a reset.
1131
- * @param error
1132
- * @returns EzspStatus.ASH_NCP_FATAL_ERROR
1133
- */
1134
- ncpDisconnect(error) {
1135
- this.flags = 0;
1136
- this.ncpError = error;
1137
- logger_1.logger.error(`ASH disconnected | NCP status: ${enums_1.EzspStatus[this.ncpError]}`, NS);
1138
- return enums_1.EzspStatus.ASH_NCP_FATAL_ERROR;
1139
- }
1140
- /**
1141
- * Same as randomizeArray(0, buffer, len).
1142
- * Returns buffer as-is if randomize is OFF.
1143
- * @param buffer IN/OUT
1144
- * @param len
1145
- */
1146
- randomizeBuffer(buffer, len) {
1147
- // If enabled, exclusive-OR buffer data with a pseudo-random sequence
1148
- if (CONFIG_RANDOMIZE) {
1149
- this.randomizeArray(0, buffer, len); // zero inits the random sequence
1150
- }
1151
- }
1152
- /**
1153
- * Randomizes array contents by XORing with an 8-bit pseudo random sequence.
1154
- * This reduces the likelihood that byte-stuffing will greatly increase the size of the payload.
1155
- * (This could happen if a DATA frame contained repeated instances of the same reserved byte value.)
1156
- *
1157
- * @param seed zero initializes the random sequence a non-zero value continues from a previous invocation
1158
- * @param buf IN/OUT pointer to the array whose contents will be randomized
1159
- * @param len number of bytes in the array to modify
1160
- * @returns last value of the sequence.
1161
- * If a buffer is processed in two or more chunks, as with linked buffers,
1162
- * this value should be passed back as the value of the seed argument
1163
- */
1164
- randomizeArray(seed, buf, len) {
1165
- let outIdx = 0;
1166
- if (seed === 0) {
1167
- seed = consts_1.LFSR_SEED;
1168
- }
1169
- while (len--) {
1170
- // *buf++ ^= seed;
1171
- buf[outIdx++] ^= seed;
1172
- seed = (seed & 1) ? ((seed >> 1) ^ consts_1.LFSR_POLY) : (seed >> 1);
1173
- }
1174
- return seed;
1175
- }
1176
- /**
1177
- * Get the frame type from the control byte and validate it against the frame length.
1178
- * @param control
1179
- * @param len Frame length
1180
- * @returns AshFrameType.INVALID if bad control/length otherwise the frame type.
1181
- */
1182
- getFrameType(control, len) {
1183
- if (control === enums_2.AshFrameType.RSTACK) {
1184
- if (len === consts_1.ASH_FRAME_LEN_RSTACK) {
1185
- return enums_2.AshFrameType.RSTACK;
1186
- }
1187
- }
1188
- else if (control === enums_2.AshFrameType.ERROR) {
1189
- if (len === consts_1.ASH_FRAME_LEN_ERROR) {
1190
- return enums_2.AshFrameType.ERROR;
1191
- }
1192
- }
1193
- else if ((control & consts_1.ASH_DFRAME_MASK) === enums_2.AshFrameType.DATA) {
1194
- if (len >= consts_1.ASH_FRAME_LEN_DATA_MIN) {
1195
- return enums_2.AshFrameType.DATA;
1196
- }
1197
- }
1198
- else if ((control & consts_1.ASH_SHFRAME_MASK) === enums_2.AshFrameType.ACK) {
1199
- if (len === consts_1.ASH_FRAME_LEN_ACK) {
1200
- return enums_2.AshFrameType.ACK;
1201
- }
1202
- }
1203
- else if ((control & consts_1.ASH_SHFRAME_MASK) === enums_2.AshFrameType.NAK) {
1204
- if (len === consts_1.ASH_FRAME_LEN_NAK) {
1205
- return enums_2.AshFrameType.NAK;
1206
- }
1207
- }
1208
- else {
1209
- this.counters.rxBadControl += 1;
1210
- logger_1.logger.debug(`Frame illegal control ${control}.`, NS); // EzspStatus.ASH_BAD_CONTROL
1211
- return enums_2.AshFrameType.INVALID;
1212
- }
1213
- this.counters.rxBadLength += 1;
1214
- logger_1.logger.debug(`Frame illegal length ${len} for control ${control}.`, NS); // EzspStatus.ASH_BAD_LENGTH
1215
- return enums_2.AshFrameType.INVALID;
1216
- }
1217
- /**
1218
- * Encode byte for sending.
1219
- * @param len Start a new frame if non-zero
1220
- * @param byte
1221
- * @returns outByte
1222
- */
1223
- encodeByte(len, byte) {
1224
- // start a new frame if len is non-zero
1225
- if (len) {
1226
- this.encodeCount = len;
1227
- this.txOffset = 0;
1228
- this.encodeState = 0;
1229
- this.encodeEscFlag = false;
1230
- this.encodeCrc = 0xFFFF;
1231
- }
1232
- // was an escape last time?
1233
- if (this.encodeEscFlag) {
1234
- this.encodeEscFlag = false;
1235
- // send data byte with bit flipped
1236
- return this.encodeFlip;
1237
- }
1238
- // control and data field bytes
1239
- if (this.encodeState === 0) {
1240
- this.encodeCrc = (0, math_1.halCommonCrc16)(byte, this.encodeCrc);
1241
- if (--this.encodeCount === 0) {
1242
- this.encodeState = 1;
1243
- }
1244
- else {
1245
- ++this.txOffset;
1246
- }
1247
- return this.encodeStuffByte(byte);
1248
- }
1249
- else if (this.encodeState === 1) {
1250
- // CRC high byte
1251
- this.encodeState = 2;
1252
- return this.encodeStuffByte(this.encodeCrc >> 8);
1253
- }
1254
- else if (this.encodeState === 2) {
1255
- // CRC low byte
1256
- this.encodeState = 3;
1257
- return this.encodeStuffByte(this.encodeCrc & 0xFF);
1258
- }
1259
- this.txOffset = 0xFF;
1260
- return enums_2.AshReservedByte.FLAG;
1261
- }
1262
- /**
1263
- * Stuff byte as defined by ASH protocol.
1264
- * @param byte
1265
- * @returns
1266
- */
1267
- encodeStuffByte(byte) {
1268
- if (enums_2.AshReservedByte[byte] != null) {
1269
- // is special byte
1270
- this.encodeEscFlag = true;
1271
- this.encodeFlip = byte ^ consts_1.ASH_FLIP;
1272
- return enums_2.AshReservedByte.ESCAPE;
1273
- }
1274
- else {
1275
- return byte;
1276
- }
1277
- }
1278
- /**
1279
- * Decode received byte.
1280
- * @param byte
1281
- * @param inByte IN/OUT
1282
- * @param inLen IN/OUT
1283
- * @returns [EzspStatus, outByte, outLen]
1284
- * - EzspStatus.ASH_IN_PROGRESS
1285
- * - EzspStatus.ASH_COMM_ERROR
1286
- * - EzspStatus.ASH_BAD_CRC
1287
- * - EzspStatus.ASH_TOO_SHORT
1288
- * - EzspStatus.ASH_TOO_LONG
1289
- * - EzspStatus.SUCCESS
1290
- * - EzspStatus.ASH_CANCELLED
1291
- * - EzspStatus.ASH_ERROR_XON_XOFF
1292
- */
1293
- decodeByte(byte, inByte, inLen) {
1294
- let status = enums_1.EzspStatus.ASH_IN_PROGRESS;
1295
- if (!this.decodeInProgress) {
1296
- this.decodeLen = 0;
1297
- this.decodeByte1 = 0;
1298
- this.decodeByte2 = 0;
1299
- this.decodeFlip = 0;
1300
- this.decodeCrc = 0xFFFF;
1301
- }
1302
- switch (byte) {
1303
- case enums_2.AshReservedByte.FLAG:
1304
- // flag byte (frame delimiter)
1305
- if (this.decodeLen === 0) {
1306
- // if no frame data, not end flag, so ignore it
1307
- this.decodeFlip = 0; // ignore isolated data escape between flags
1308
- break;
1309
- }
1310
- else if (this.decodeLen === 0xFF) {
1311
- status = enums_1.EzspStatus.ASH_COMM_ERROR;
1312
- }
1313
- else if (this.decodeCrc !== ((this.decodeByte2 << 8) + this.decodeByte1)) {
1314
- status = enums_1.EzspStatus.ASH_BAD_CRC;
1315
- }
1316
- else if (this.decodeLen < consts_1.ASH_MIN_FRAME_WITH_CRC_LEN) {
1317
- status = enums_1.EzspStatus.ASH_TOO_SHORT;
1318
- }
1319
- else if (this.decodeLen > consts_1.ASH_MAX_FRAME_WITH_CRC_LEN) {
1320
- status = enums_1.EzspStatus.ASH_TOO_LONG;
1321
- }
1322
- else {
1323
- status = enums_1.EzspStatus.SUCCESS;
1324
- }
1325
- break;
1326
- case enums_2.AshReservedByte.ESCAPE:
1327
- // byte stuffing escape byte
1328
- this.decodeFlip = consts_1.ASH_FLIP;
1329
- break;
1330
- case enums_2.AshReservedByte.CANCEL:
1331
- // cancel frame without an error
1332
- status = enums_1.EzspStatus.ASH_CANCELLED;
1333
- break;
1334
- case enums_2.AshReservedByte.SUBSTITUTE:
1335
- // discard remainder of frame
1336
- this.decodeLen = 0xFF; // special value flags low level comm error
1337
- break;
1338
- case enums_2.AshReservedByte.XON:
1339
- case enums_2.AshReservedByte.XOFF:
1340
- // If host is using RTS/CTS, ignore any XON/XOFFs received from the NCP.
1341
- // If using XON/XOFF, the host driver must remove them from the input stream.
1342
- // If it doesn't, it probably means the driver isn't setup for XON/XOFF,
1343
- // so issue an error to flag the serial port driver problem.
1344
- if (this.serialPort != null && !this.serialPort.settings.rtscts) {
1345
- status = enums_1.EzspStatus.ASH_ERROR_XON_XOFF;
1346
- }
1347
- break;
1348
- default:
1349
- // a normal byte
1350
- byte ^= this.decodeFlip;
1351
- this.decodeFlip = 0;
1352
- if (this.decodeLen <= consts_1.ASH_MAX_FRAME_WITH_CRC_LEN) {
1353
- // limit length to max + 1
1354
- ++this.decodeLen;
1355
- }
1356
- if (this.decodeLen > consts_1.ASH_CRC_LEN) {
1357
- // compute frame CRC even if too long
1358
- this.decodeCrc = (0, math_1.halCommonCrc16)(this.decodeByte2, this.decodeCrc);
1359
- if (this.decodeLen <= consts_1.ASH_MAX_FRAME_WITH_CRC_LEN) {
1360
- // store to only max len
1361
- inByte = this.decodeByte2;
1362
- inLen = this.decodeLen - consts_1.ASH_CRC_LEN; // CRC is not output, reduce length
1363
- }
1364
- }
1365
- this.decodeByte2 = this.decodeByte1;
1366
- this.decodeByte1 = byte;
1367
- break;
1368
- }
1369
- this.decodeInProgress = (status === enums_1.EzspStatus.ASH_IN_PROGRESS);
1370
- return [status, inByte, inLen];
1371
- }
1372
- /**
1373
- * Starts the Not Ready timer
1374
- *
1375
- * On the host, this times nFlag refreshing when the host doesn't have room for callbacks for a prolonged period.
1376
- *
1377
- * On the NCP, if this times out the NCP resumes sending callbacks.
1378
- */
1379
- startNrTimer() {
1380
- this.nrTimer = (Date.now() + CONFIG_NR_TIME);
1381
- }
1382
- /**
1383
- * Stop Not Ready timer (set to 0).
1384
- */
1385
- stopNrTimer() {
1386
- this.nrTimer = 0;
1387
- }
1388
- /**
1389
- * Tests whether the Not Ready timer has expired or has stopped. If expired, it is stopped.
1390
- *
1391
- * @returns true if the Not Ready timer has expired or stopped
1392
- */
1393
- nrTimerHasExpired() {
1394
- if (this.nrTimer) {
1395
- if ((Date.now() - this.nrTimer) >= 0) {
1396
- this.nrTimer = 0;
1397
- }
1398
- }
1399
- return (!this.nrTimer);
1400
- }
1401
- /**
1402
- * Indicates whether or not Not Ready timer is currently running.
1403
- *
1404
- * @return True if nrTime == 0
1405
- */
1406
- nrTimerIsNotRunning() {
1407
- return this.nrTimer === 0;
1408
- }
1409
- /**
1410
- * Sets the acknowledgement timer period (in msec) and stops the timer.
1411
- */
1412
- setAckPeriod(msec) {
1413
- this.ackPeriod = msec;
1414
- this.ackTimer = 0;
1415
- }
1416
- /**
1417
- * Sets the acknowledgement timer period (in msec), and starts the timer running.
1418
- */
1419
- setAndStartAckTimer(msec) {
1420
- this.setAckPeriod(msec);
1421
- this.startAckTimer();
1422
- }
1423
- /**
1424
- * Adapts the acknowledgement timer period to the observed ACK delay.
1425
- * If the timer is not running, it does nothing.
1426
- * If the timer has expired, the timeout period is doubled.
1427
- * If the timer has not expired, the elapsed time is fed into simple
1428
- *
1429
- * IIR filter:
1430
- * T[n+1] = (7*T[n] + elapsedTime) / 8
1431
- *
1432
- * The timeout period, ackPeriod, is limited such that:
1433
- * config.ackTimeMin <= ackPeriod <= config.ackTimeMax.
1434
- *
1435
- * The acknowledgement timer is always stopped by this function.
1436
- *
1437
- * @param expired true if timer has expired
1438
- */
1439
- adjustAckPeriod(expired) {
1440
- if (expired) {
1441
- // if expired, double the period
1442
- this.ackPeriod += this.ackPeriod;
1443
- }
1444
- else if (this.ackTimer) {
1445
- // adjust period only if running
1446
- // time elapsed since timer was started
1447
- let temp = this.ackPeriod;
1448
- // compute time to receive acknowledgement, then stop timer
1449
- const lastAckTime = Date.now() - this.ackTimer;
1450
- temp = (temp << 3) - temp;
1451
- temp += lastAckTime << 2;
1452
- temp >>= 3;
1453
- this.ackPeriod = (temp & 0xFFFF);
1454
- }
1455
- // keep ackPeriod within limits
1456
- if (this.ackPeriod > CONFIG_ACK_TIME_MAX) {
1457
- this.ackPeriod = CONFIG_ACK_TIME_MAX;
1458
- }
1459
- else if (this.ackPeriod < CONFIG_ACK_TIME_MIN) {
1460
- this.ackPeriod = CONFIG_ACK_TIME_MIN;
1461
- }
1462
- this.ackTimer = 0; // always stop the timer
1463
- }
1464
- /**
1465
- * Sets ACK Timer to the specified period and starts it running.
1466
- */
1467
- startAckTimer() {
1468
- this.ackTimer = Date.now();
1469
- }
1470
- /**
1471
- * Stops and clears ACK Timer.
1472
- */
1473
- stopAckTimer() {
1474
- this.ackTimer = 0;
1475
- }
1476
- /**
1477
- * Indicates whether or not ACK Timer has expired.
1478
- * If the timer is stopped (0) then it is not expired.
1479
- *
1480
- * @returns
1481
- */
1482
- ackTimerHasExpired() {
1483
- if (this.ackTimer === 0) {
1484
- // if timer is not running, return false
1485
- return false;
1486
- }
1487
- // return ((halCommonGetInt16uMillisecondTick() - this.ackTimer) >= this.ackPeriod);
1488
- return ((Date.now() - this.ackTimer) >= this.ackPeriod);
1489
- }
1490
- /**
1491
- * Indicates whether or not ACK Timer is currently running (!= 0).
1492
- * The timer may be running even if expired.
1493
- */
1494
- ackTimerIsNotRunning() {
1495
- return this.ackTimer === 0;
1496
- }
1497
- /**
1498
- * Increase counters based on frame type and direction.
1499
- * @param sent True if frame being sent, false if being received.
1500
- */
1501
- countFrame(sent) {
1502
- let control;
1503
- if (sent) {
1504
- control = this.txSHBuffer[0];
1505
- this.counters.txAllFrames += 1;
1506
- }
1507
- else {
1508
- control = this.rxSHBuffer[0];
1509
- this.counters.rxAllFrames += 1;
1510
- }
1511
- if ((control & consts_1.ASH_DFRAME_MASK) === enums_2.AshFrameType.DATA) {
1512
- if (sent) {
1513
- if (control & consts_1.ASH_RFLAG_MASK) {
1514
- this.counters.txReDataFrames += 1;
1515
- }
1516
- else {
1517
- this.counters.txDataFrames += 1;
1518
- }
1519
- }
1520
- else {
1521
- if (control & consts_1.ASH_RFLAG_MASK) {
1522
- this.counters.rxReDataFrames += 1;
1523
- }
1524
- else {
1525
- this.counters.rxDataFrames += 1;
1526
- }
1527
- }
1528
- }
1529
- else if ((control & consts_1.ASH_SHFRAME_MASK) === enums_2.AshFrameType.ACK) {
1530
- if (sent) {
1531
- this.counters.txAckFrames += 1;
1532
- if (control & consts_1.ASH_NFLAG_MASK) {
1533
- this.counters.txN1Frames += 1;
1534
- } /* else {
1535
- this.counters.txN0Frames += 1;
1536
- }*/
1537
- }
1538
- else {
1539
- this.counters.rxAckFrames += 1;
1540
- if (control & consts_1.ASH_NFLAG_MASK) {
1541
- this.counters.rxN1Frames += 1;
1542
- } /* else {
1543
- this.counters.rxN0Frames += 1;
1544
- }*/
1545
- }
1546
- }
1547
- else if ((control & consts_1.ASH_SHFRAME_MASK) === enums_2.AshFrameType.NAK) {
1548
- if (sent) {
1549
- this.counters.txNakFrames += 1;
1550
- if (control & consts_1.ASH_NFLAG_MASK) {
1551
- this.counters.txN1Frames += 1;
1552
- } /* else {
1553
- this.counters.txN0Frames += 1;
1554
- }*/
1555
- }
1556
- else {
1557
- this.counters.rxNakFrames += 1;
1558
- if (control & consts_1.ASH_NFLAG_MASK) {
1559
- this.counters.rxN1Frames += 1;
1560
- } /* else {
1561
- this.counters.rxN0Frames += 1;
1562
- }*/
1563
- }
1564
- }
1565
- }
1566
- /**
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'.
1608
- */
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);
1630
- }
1631
- }
1632
- exports.UartAsh = UartAsh;
1633
- //# sourceMappingURL=ash.js.map