@willieee802/zigbee-herdsman 0.48.3 → 0.49.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1045) 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 +1283 -0
  18. package/README.md +1 -1
  19. package/biome.json +103 -0
  20. package/dist/adapter/adapter.d.ts.map +1 -1
  21. package/dist/adapter/adapterDiscovery.d.ts.map +1 -0
  22. package/dist/adapter/const.d.ts.map +1 -0
  23. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  24. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
  25. package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -1
  26. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
  27. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
  28. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
  29. package/dist/adapter/ember/utils/initters.d.ts.map +1 -1
  30. package/dist/adapter/events.d.ts.map +1 -1
  31. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
  32. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  33. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
  34. package/dist/adapter/ezsp/driver/index.d.ts.map +1 -1
  35. package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
  36. package/dist/adapter/index.d.ts.map +1 -1
  37. package/dist/adapter/z-stack/adapter/endpoints.d.ts.map +1 -1
  38. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  39. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  40. package/dist/adapter/z-stack/models/startup-options.d.ts.map +1 -1
  41. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -0
  42. package/dist/adapter/zboss/driver.d.ts.map +1 -0
  43. package/dist/adapter/zboss/frame.d.ts.map +1 -0
  44. package/dist/adapter/zboss/frame.js +200 -0
  45. package/dist/adapter/zboss/frame.js.map +1 -0
  46. package/dist/adapter/zboss/uart.d.ts.map +1 -0
  47. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  48. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
  49. package/dist/adapter/zigate/driver/buffaloZiGate.js +70 -62
  50. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
  51. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
  52. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
  53. package/dist/adapter/zoh/adapter/zohAdapter.d.ts.map +1 -0
  54. package/dist/controller/controller.d.ts.map +1 -1
  55. package/dist/controller/controller.js +524 -350
  56. package/dist/controller/controller.js.map +1 -1
  57. package/dist/controller/database.d.ts.map +1 -1
  58. package/dist/controller/events.d.ts.map +1 -1
  59. package/dist/controller/events.js +0 -110
  60. package/dist/controller/events.js.map +1 -1
  61. package/dist/controller/greenPower.d.ts.map +1 -1
  62. package/dist/controller/greenPower.js +330 -121
  63. package/dist/controller/greenPower.js.map +1 -1
  64. package/dist/controller/helpers/index.d.ts.map +1 -1
  65. package/dist/controller/helpers/ota.d.ts.map +1 -0
  66. package/dist/controller/helpers/ota.js +467 -0
  67. package/dist/controller/helpers/ota.js.map +1 -0
  68. package/dist/controller/helpers/request.d.ts.map +1 -1
  69. package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
  70. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  71. package/dist/controller/helpers/zclFrameConverter.js +36 -22
  72. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  73. package/dist/controller/index.d.ts.map +1 -1
  74. package/dist/controller/model/device.d.ts.map +1 -1
  75. package/dist/controller/model/device.js +1052 -402
  76. package/dist/controller/model/device.js.map +1 -1
  77. package/dist/controller/model/endpoint.d.ts.map +1 -1
  78. package/dist/controller/model/endpoint.js +447 -292
  79. package/dist/controller/model/endpoint.js.map +1 -1
  80. package/dist/controller/model/entity.d.ts.map +1 -1
  81. package/dist/controller/model/group.d.ts.map +1 -1
  82. package/dist/controller/model/group.js +202 -85
  83. package/dist/controller/model/group.js.map +1 -1
  84. package/dist/controller/model/index.d.ts.map +1 -1
  85. package/dist/controller/model/zigbeeEntity.d.ts.map +1 -0
  86. package/dist/controller/touchlink.d.ts.map +1 -1
  87. package/dist/controller/tstype.d.ts.map +1 -1
  88. package/dist/controller/tstype.js +0 -6
  89. package/dist/controller/tstype.js.map +1 -1
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/utils/timeService.d.ts.map +1 -0
  92. package/dist/utils/timeService.js +127 -0
  93. package/dist/utils/timeService.js.map +1 -0
  94. package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
  95. package/dist/zspec/zcl/buffaloZcl.js +327 -287
  96. package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
  97. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
  98. package/dist/zspec/zcl/definition/cluster.js +6050 -4043
  99. package/dist/zspec/zcl/definition/cluster.js.map +1 -1
  100. package/dist/zspec/zcl/definition/clusters-types.d.ts +8135 -0
  101. package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -0
  102. package/dist/zspec/zcl/definition/clusters-types.js +3 -0
  103. package/dist/zspec/zcl/definition/clusters-types.js.map +1 -0
  104. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
  105. package/dist/zspec/zcl/definition/foundation.js +170 -99
  106. package/dist/zspec/zcl/definition/foundation.js.map +1 -1
  107. package/dist/zspec/zcl/definition/tstype.d.ts +190 -31
  108. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
  109. package/dist/zspec/zcl/definition/tstype.js +0 -1
  110. package/dist/zspec/zcl/definition/tstype.js.map +1 -1
  111. package/dist/zspec/zcl/index.d.ts.map +1 -1
  112. package/dist/zspec/zcl/index.js +23 -13
  113. package/dist/zspec/zcl/index.js.map +1 -1
  114. package/dist/zspec/zcl/utils.d.ts.map +1 -1
  115. package/dist/zspec/zcl/utils.js +288 -103
  116. package/dist/zspec/zcl/utils.js.map +1 -1
  117. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
  118. package/dist/zspec/zcl/zclFrame.js +121 -97
  119. package/dist/zspec/zcl/zclFrame.js.map +1 -1
  120. package/dist/zspec/zcl/zclHeader.d.ts.map +1 -1
  121. package/dist/zspec/zcl/zclHeader.js +13 -13
  122. package/dist/zspec/zcl/zclHeader.js.map +1 -1
  123. package/examples/join-and-log.js +18 -18
  124. package/package.json +23 -3
  125. package/release-please-config.json +8 -8
  126. package/scripts/check-clusters-changes.ts +328 -0
  127. package/scripts/clusters-changes.log +584 -0
  128. package/scripts/clusters-typegen.ts +608 -0
  129. package/scripts/utils.ts +88 -0
  130. package/scripts/zap-update-clusters-report.json +303 -0
  131. package/scripts/zap-update-clusters.ts +1520 -0
  132. package/scripts/zap-update-types.ts +707 -0
  133. package/scripts/zap-xml-clusters-overrides-data.ts +52 -0
  134. package/scripts/zap-xml-clusters-overrides.ts +400 -0
  135. package/scripts/zap-xml-types.ts +146 -0
  136. package/src/adapter/adapter.ts +210 -0
  137. package/src/adapter/adapterDiscovery.ts +736 -0
  138. package/src/adapter/const.ts +12 -0
  139. package/src/adapter/deconz/adapter/deconzAdapter.ts +888 -0
  140. package/src/adapter/deconz/driver/constants.ts +246 -0
  141. package/src/adapter/deconz/driver/driver.ts +1528 -0
  142. package/src/adapter/deconz/driver/frame.ts +11 -0
  143. package/src/adapter/deconz/driver/frameParser.ts +766 -0
  144. package/src/adapter/deconz/driver/parser.ts +45 -0
  145. package/src/adapter/deconz/driver/writer.ts +22 -0
  146. package/src/adapter/deconz/types.d.ts +13 -0
  147. package/src/adapter/ember/adapter/emberAdapter.ts +2262 -0
  148. package/src/adapter/ember/adapter/endpoints.ts +86 -0
  149. package/src/adapter/ember/adapter/oneWaitress.ts +324 -0
  150. package/src/adapter/ember/adapter/tokensManager.ts +780 -0
  151. package/src/adapter/ember/consts.ts +178 -0
  152. package/src/adapter/ember/enums.ts +1746 -0
  153. package/src/adapter/ember/ezsp/buffalo.ts +1392 -0
  154. package/src/adapter/ember/ezsp/consts.ts +148 -0
  155. package/src/adapter/ember/ezsp/enums.ts +1114 -0
  156. package/src/adapter/ember/ezsp/ezsp.ts +9073 -0
  157. package/src/adapter/ember/ezspError.ts +10 -0
  158. package/src/adapter/ember/types.ts +866 -0
  159. package/src/adapter/ember/uart/ash.ts +1933 -0
  160. package/src/adapter/ember/uart/consts.ts +109 -0
  161. package/src/adapter/ember/uart/enums.ts +192 -0
  162. package/src/adapter/ember/uart/parser.ts +42 -0
  163. package/src/adapter/ember/uart/queues.ts +247 -0
  164. package/src/adapter/ember/uart/writer.ts +50 -0
  165. package/src/adapter/ember/utils/initters.ts +58 -0
  166. package/src/adapter/ember/utils/math.ts +71 -0
  167. package/src/adapter/events.ts +21 -0
  168. package/src/adapter/ezsp/adapter/backup.ts +100 -0
  169. package/src/adapter/ezsp/adapter/ezspAdapter.ts +632 -0
  170. package/src/adapter/ezsp/driver/commands.ts +2497 -0
  171. package/src/adapter/ezsp/driver/consts.ts +11 -0
  172. package/src/adapter/ezsp/driver/driver.ts +1002 -0
  173. package/src/adapter/ezsp/driver/ezsp.ts +802 -0
  174. package/src/adapter/ezsp/driver/frame.ts +101 -0
  175. package/src/adapter/ezsp/driver/index.ts +4 -0
  176. package/src/adapter/ezsp/driver/multicast.ts +78 -0
  177. package/src/adapter/ezsp/driver/parser.ts +81 -0
  178. package/src/adapter/ezsp/driver/types/basic.ts +201 -0
  179. package/src/adapter/ezsp/driver/types/index.ts +239 -0
  180. package/src/adapter/ezsp/driver/types/named.ts +2330 -0
  181. package/src/adapter/ezsp/driver/types/struct.ts +844 -0
  182. package/src/adapter/ezsp/driver/uart.ts +460 -0
  183. package/src/adapter/ezsp/driver/utils/crc16ccitt.ts +44 -0
  184. package/src/adapter/ezsp/driver/utils/index.ts +32 -0
  185. package/src/adapter/ezsp/driver/writer.ts +64 -0
  186. package/src/adapter/index.ts +3 -0
  187. package/src/adapter/serialPort.ts +58 -0
  188. package/src/adapter/tstype.ts +57 -0
  189. package/src/adapter/utils.ts +41 -0
  190. package/src/adapter/z-stack/adapter/adapter-backup.ts +509 -0
  191. package/src/adapter/z-stack/adapter/adapter-nv-memory.ts +457 -0
  192. package/src/adapter/z-stack/adapter/endpoints.ts +60 -0
  193. package/src/adapter/z-stack/adapter/manager.ts +543 -0
  194. package/src/adapter/z-stack/adapter/tstype.ts +6 -0
  195. package/src/adapter/z-stack/adapter/zStackAdapter.ts +1350 -0
  196. package/src/adapter/z-stack/constants/af.ts +27 -0
  197. package/src/adapter/z-stack/constants/common.ts +285 -0
  198. package/src/adapter/z-stack/constants/dbg.ts +23 -0
  199. package/src/adapter/z-stack/constants/index.ts +11 -0
  200. package/src/adapter/z-stack/constants/mac.ts +128 -0
  201. package/src/adapter/z-stack/constants/sapi.ts +25 -0
  202. package/src/adapter/z-stack/constants/sys.ts +72 -0
  203. package/src/adapter/z-stack/constants/util.ts +82 -0
  204. package/src/adapter/z-stack/constants/utils.ts +14 -0
  205. package/src/adapter/z-stack/constants/zdo.ts +103 -0
  206. package/src/adapter/z-stack/models/startup-options.ts +13 -0
  207. package/src/adapter/z-stack/structs/entries/address-manager-entry.ts +44 -0
  208. package/src/adapter/z-stack/structs/entries/address-manager-table.ts +19 -0
  209. package/src/adapter/z-stack/structs/entries/aps-link-key-data-entry.ts +12 -0
  210. package/src/adapter/z-stack/structs/entries/aps-link-key-data-table.ts +21 -0
  211. package/src/adapter/z-stack/structs/entries/aps-tc-link-key-entry.ts +19 -0
  212. package/src/adapter/z-stack/structs/entries/aps-tc-link-key-table.ts +21 -0
  213. package/src/adapter/z-stack/structs/entries/channel-list.ts +8 -0
  214. package/src/adapter/z-stack/structs/entries/has-configured.ts +16 -0
  215. package/src/adapter/z-stack/structs/entries/index.ts +16 -0
  216. package/src/adapter/z-stack/structs/entries/nib.ts +66 -0
  217. package/src/adapter/z-stack/structs/entries/nwk-key-descriptor.ts +15 -0
  218. package/src/adapter/z-stack/structs/entries/nwk-key.ts +13 -0
  219. package/src/adapter/z-stack/structs/entries/nwk-pan-id.ts +8 -0
  220. package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.ts +20 -0
  221. package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.ts +19 -0
  222. package/src/adapter/z-stack/structs/entries/security-manager-entry.ts +33 -0
  223. package/src/adapter/z-stack/structs/entries/security-manager-table.ts +22 -0
  224. package/src/adapter/z-stack/structs/index.ts +4 -0
  225. package/src/adapter/z-stack/structs/serializable-memory-object.ts +14 -0
  226. package/src/adapter/z-stack/structs/struct.ts +367 -0
  227. package/src/adapter/z-stack/structs/table.ts +198 -0
  228. package/src/adapter/z-stack/unpi/constants.ts +33 -0
  229. package/src/adapter/z-stack/unpi/frame.ts +62 -0
  230. package/src/adapter/z-stack/unpi/index.ts +4 -0
  231. package/src/adapter/z-stack/unpi/parser.ts +67 -0
  232. package/src/adapter/z-stack/unpi/writer.ts +37 -0
  233. package/src/adapter/z-stack/utils/channel-list.ts +40 -0
  234. package/src/adapter/z-stack/utils/index.ts +2 -0
  235. package/src/adapter/z-stack/utils/network-options.ts +26 -0
  236. package/src/adapter/z-stack/znp/buffaloZnp.ts +175 -0
  237. package/src/adapter/z-stack/znp/definition.ts +2713 -0
  238. package/src/adapter/z-stack/znp/index.ts +2 -0
  239. package/src/adapter/z-stack/znp/parameterType.ts +22 -0
  240. package/src/adapter/z-stack/znp/tstype.ts +44 -0
  241. package/src/adapter/z-stack/znp/utils.ts +10 -0
  242. package/src/adapter/z-stack/znp/znp.ts +345 -0
  243. package/src/adapter/z-stack/znp/zpiObject.ts +148 -0
  244. package/src/adapter/zboss/adapter/zbossAdapter.ts +535 -0
  245. package/src/adapter/zboss/commands.ts +1184 -0
  246. package/src/adapter/zboss/consts.ts +9 -0
  247. package/src/adapter/zboss/driver.ts +422 -0
  248. package/src/adapter/zboss/enums.ts +360 -0
  249. package/src/adapter/zboss/frame.ts +227 -0
  250. package/src/adapter/zboss/reader.ts +65 -0
  251. package/src/adapter/zboss/types.ts +0 -0
  252. package/src/adapter/zboss/uart.ts +428 -0
  253. package/src/adapter/zboss/utils.ts +58 -0
  254. package/src/adapter/zboss/writer.ts +49 -0
  255. package/src/adapter/zigate/adapter/patchZdoBuffaloBE.ts +25 -0
  256. package/src/adapter/zigate/adapter/zigateAdapter.ts +633 -0
  257. package/src/adapter/zigate/driver/LICENSE +17 -0
  258. package/src/adapter/zigate/driver/buffaloZiGate.ts +210 -0
  259. package/src/adapter/zigate/driver/commandType.ts +418 -0
  260. package/src/adapter/zigate/driver/constants.ts +150 -0
  261. package/src/adapter/zigate/driver/frame.ts +197 -0
  262. package/src/adapter/zigate/driver/messageType.ts +287 -0
  263. package/src/adapter/zigate/driver/parameterType.ts +32 -0
  264. package/src/adapter/zigate/driver/ziGateObject.ts +146 -0
  265. package/src/adapter/zigate/driver/zigate.ts +422 -0
  266. package/src/adapter/zoh/adapter/utils.ts +27 -0
  267. package/src/adapter/zoh/adapter/zohAdapter.ts +931 -0
  268. package/src/buffalo/buffalo.ts +336 -0
  269. package/src/buffalo/index.ts +1 -0
  270. package/src/controller/controller.ts +1159 -0
  271. package/src/controller/database.ts +148 -0
  272. package/src/controller/events.ts +52 -0
  273. package/src/controller/greenPower.ts +613 -0
  274. package/src/controller/helpers/index.ts +1 -0
  275. package/src/controller/helpers/installCodes.ts +107 -0
  276. package/src/controller/helpers/ota.ts +578 -0
  277. package/src/controller/helpers/request.ts +96 -0
  278. package/src/controller/helpers/requestQueue.ts +126 -0
  279. package/src/controller/helpers/zclFrameConverter.ts +64 -0
  280. package/src/controller/helpers/zclTransactionSequenceNumber.ts +15 -0
  281. package/src/controller/index.ts +6 -0
  282. package/src/controller/model/device.ts +1791 -0
  283. package/src/controller/model/endpoint.ts +1235 -0
  284. package/src/controller/model/entity.ts +43 -0
  285. package/src/controller/model/group.ts +446 -0
  286. package/src/controller/model/index.ts +5 -0
  287. package/src/controller/model/konnextConfig.ts +6 -0
  288. package/src/controller/model/zigbeeEntity.ts +30 -0
  289. package/src/controller/touchlink.ts +195 -0
  290. package/src/controller/tstype.ts +374 -0
  291. package/src/index.ts +14 -0
  292. package/src/models/backup-storage-legacy.ts +48 -0
  293. package/src/models/backup-storage-unified.ts +47 -0
  294. package/src/models/backup.ts +37 -0
  295. package/src/models/index.ts +5 -0
  296. package/src/models/network-options.ts +11 -0
  297. package/src/utils/aes.ts +218 -0
  298. package/src/utils/async-mutex.ts +31 -0
  299. package/src/utils/backup.ts +152 -0
  300. package/src/utils/index.ts +5 -0
  301. package/src/utils/logger.ts +20 -0
  302. package/src/utils/patchBigIntSerialization.ts +8 -0
  303. package/src/utils/queue.ts +79 -0
  304. package/src/utils/timeService.ts +139 -0
  305. package/src/utils/utils.ts +19 -0
  306. package/src/utils/wait.ts +5 -0
  307. package/src/utils/waitress.ts +96 -0
  308. package/src/zspec/consts.ts +89 -0
  309. package/src/zspec/enums.ts +22 -0
  310. package/src/zspec/index.ts +3 -0
  311. package/src/zspec/tstypes.ts +18 -0
  312. package/src/zspec/utils.ts +247 -0
  313. package/src/zspec/zcl/buffaloZcl.ts +1073 -0
  314. package/src/zspec/zcl/definition/cluster.ts +7554 -0
  315. package/src/zspec/zcl/definition/clusters-types.ts +8228 -0
  316. package/src/zspec/zcl/definition/consts.ts +24 -0
  317. package/src/zspec/zcl/definition/datatypes.ts +2454 -0
  318. package/src/zspec/zcl/definition/enums.ts +224 -0
  319. package/src/zspec/zcl/definition/foundation.ts +342 -0
  320. package/src/zspec/zcl/definition/manufacturerCode.ts +730 -0
  321. package/src/zspec/zcl/definition/status.ts +69 -0
  322. package/src/zspec/zcl/definition/tstype.ts +432 -0
  323. package/src/zspec/zcl/index.ts +11 -0
  324. package/src/zspec/zcl/utils.ts +504 -0
  325. package/src/zspec/zcl/zclFrame.ts +383 -0
  326. package/src/zspec/zcl/zclHeader.ts +102 -0
  327. package/src/zspec/zcl/zclStatusError.ts +10 -0
  328. package/src/zspec/zdo/buffaloZdo.ts +2336 -0
  329. package/src/zspec/zdo/definition/clusters.ts +722 -0
  330. package/src/zspec/zdo/definition/consts.ts +16 -0
  331. package/src/zspec/zdo/definition/enums.ts +99 -0
  332. package/src/zspec/zdo/definition/status.ts +105 -0
  333. package/src/zspec/zdo/definition/tstypes.ts +1062 -0
  334. package/src/zspec/zdo/index.ts +7 -0
  335. package/src/zspec/zdo/utils.ts +76 -0
  336. package/src/zspec/zdo/zdoStatusError.ts +10 -0
  337. package/test/adapter/adapter.test.ts +1276 -0
  338. package/test/adapter/ember/ash.test.ts +337 -0
  339. package/test/adapter/ember/consts.ts +131 -0
  340. package/test/adapter/ember/emberAdapter.test.ts +3447 -0
  341. package/test/adapter/ember/ezsp.test.ts +389 -0
  342. package/test/adapter/ember/ezspBuffalo.test.ts +93 -0
  343. package/test/adapter/ember/ezspError.test.ts +12 -0
  344. package/test/adapter/ember/math.test.ts +190 -0
  345. package/test/adapter/ezsp/frame.test.ts +30 -0
  346. package/test/adapter/ezsp/uart.test.ts +181 -0
  347. package/test/adapter/z-stack/adapter.test.ts +4260 -0
  348. package/test/adapter/z-stack/constants.test.ts +33 -0
  349. package/test/adapter/z-stack/structs.test.ts +115 -0
  350. package/test/adapter/z-stack/unpi.test.ts +213 -0
  351. package/test/adapter/z-stack/znp.test.ts +1288 -0
  352. package/test/adapter/zboss/fixZdoResponse.test.ts +179 -0
  353. package/test/adapter/zigate/patchZdoBuffaloBE.test.ts +81 -0
  354. package/test/adapter/zigate/zdo.test.ts +187 -0
  355. package/test/adapter/zoh/utils.test.ts +36 -0
  356. package/test/adapter/zoh/zohAdapter.test.ts +1451 -0
  357. package/test/benchOptions.ts +14 -0
  358. package/test/buffalo.test.ts +431 -0
  359. package/test/controller.bench.ts +215 -0
  360. package/test/controller.test.ts +10038 -0
  361. package/test/data/integrity-code-1166-012B-24031511-upgradeMe-RB 249 T.zigbee +0 -0
  362. package/test/data/manuf-tags-tradfri-cv-cct-unified_release_prod_v587757105_33e34452-9267-4665-bc5a-844c8f61f063.ota +0 -0
  363. package/test/data/padded-tretakt_smart_plug_soc-0x1100-2.4.25-prod.ota.ota.signed +0 -0
  364. package/test/data/telink-aes-A60_RGBW_T-0x00B6-0x03483712-MF_DIS.OTA +0 -0
  365. package/test/data/zbminir2_v1.0.8.ota +0 -0
  366. package/test/device-ota.test.ts +3332 -0
  367. package/test/greenpower.test.ts +1409 -0
  368. package/test/mockAdapters.ts +95 -0
  369. package/test/mockDevices.ts +623 -0
  370. package/test/requests.bench.ts +321 -0
  371. package/test/testUtils.ts +20 -0
  372. package/test/timeService.test.ts +214 -0
  373. package/test/tsconfig.json +9 -0
  374. package/test/utils/math.ts +19 -0
  375. package/test/utils.test.ts +352 -0
  376. package/test/vitest.config.mts +28 -0
  377. package/test/vitest.ts +9 -0
  378. package/test/zcl.test.ts +2887 -0
  379. package/test/zspec/utils.test.ts +68 -0
  380. package/test/zspec/zcl/buffalo.test.ts +1316 -0
  381. package/test/zspec/zcl/frame.test.ts +1056 -0
  382. package/test/zspec/zcl/utils.test.ts +650 -0
  383. package/test/zspec/zdo/buffalo.test.ts +1850 -0
  384. package/test/zspec/zdo/utils.test.ts +241 -0
  385. package/tsconfig.json +8 -10
  386. package/.babelrc.js +0 -6
  387. package/.eslintignore +0 -3
  388. package/dist/adapter/adapter.d.ts +0 -64
  389. package/dist/adapter/adapter.js +0 -157
  390. package/dist/adapter/adapter.js.map +0 -1
  391. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +0 -71
  392. package/dist/adapter/deconz/adapter/deconzAdapter.js +0 -1072
  393. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +0 -1
  394. package/dist/adapter/deconz/adapter/index.d.ts +0 -3
  395. package/dist/adapter/deconz/adapter/index.d.ts.map +0 -1
  396. package/dist/adapter/deconz/adapter/index.js +0 -11
  397. package/dist/adapter/deconz/adapter/index.js.map +0 -1
  398. package/dist/adapter/deconz/driver/constants.d.ts +0 -105
  399. package/dist/adapter/deconz/driver/constants.d.ts.map +0 -1
  400. package/dist/adapter/deconz/driver/constants.js +0 -56
  401. package/dist/adapter/deconz/driver/constants.js.map +0 -1
  402. package/dist/adapter/deconz/driver/driver.d.ts +0 -82
  403. package/dist/adapter/deconz/driver/driver.d.ts.map +0 -1
  404. package/dist/adapter/deconz/driver/driver.js +0 -751
  405. package/dist/adapter/deconz/driver/driver.js.map +0 -1
  406. package/dist/adapter/deconz/driver/frame.d.ts +0 -7
  407. package/dist/adapter/deconz/driver/frame.d.ts.map +0 -1
  408. package/dist/adapter/deconz/driver/frame.js +0 -14
  409. package/dist/adapter/deconz/driver/frame.js.map +0 -1
  410. package/dist/adapter/deconz/driver/frameParser.d.ts +0 -3
  411. package/dist/adapter/deconz/driver/frameParser.d.ts.map +0 -1
  412. package/dist/adapter/deconz/driver/frameParser.js +0 -444
  413. package/dist/adapter/deconz/driver/frameParser.js.map +0 -1
  414. package/dist/adapter/deconz/driver/parser.d.ts +0 -13
  415. package/dist/adapter/deconz/driver/parser.d.ts.map +0 -1
  416. package/dist/adapter/deconz/driver/parser.js +0 -64
  417. package/dist/adapter/deconz/driver/parser.js.map +0 -1
  418. package/dist/adapter/deconz/driver/writer.d.ts +0 -9
  419. package/dist/adapter/deconz/driver/writer.d.ts.map +0 -1
  420. package/dist/adapter/deconz/driver/writer.js +0 -45
  421. package/dist/adapter/deconz/driver/writer.js.map +0 -1
  422. package/dist/adapter/ember/adapter/emberAdapter.d.ts +0 -806
  423. package/dist/adapter/ember/adapter/emberAdapter.js +0 -2942
  424. package/dist/adapter/ember/adapter/emberAdapter.js.map +0 -1
  425. package/dist/adapter/ember/adapter/endpoints.d.ts +0 -27
  426. package/dist/adapter/ember/adapter/endpoints.js +0 -68
  427. package/dist/adapter/ember/adapter/endpoints.js.map +0 -1
  428. package/dist/adapter/ember/adapter/index.d.ts +0 -3
  429. package/dist/adapter/ember/adapter/index.d.ts.map +0 -1
  430. package/dist/adapter/ember/adapter/index.js +0 -6
  431. package/dist/adapter/ember/adapter/index.js.map +0 -1
  432. package/dist/adapter/ember/adapter/oneWaitress.d.ts +0 -108
  433. package/dist/adapter/ember/adapter/oneWaitress.js +0 -241
  434. package/dist/adapter/ember/adapter/oneWaitress.js.map +0 -1
  435. package/dist/adapter/ember/adapter/requestQueue.d.ts +0 -57
  436. package/dist/adapter/ember/adapter/requestQueue.d.ts.map +0 -1
  437. package/dist/adapter/ember/adapter/requestQueue.js +0 -139
  438. package/dist/adapter/ember/adapter/requestQueue.js.map +0 -1
  439. package/dist/adapter/ember/adapter/tokensManager.d.ts +0 -69
  440. package/dist/adapter/ember/adapter/tokensManager.js +0 -688
  441. package/dist/adapter/ember/adapter/tokensManager.js.map +0 -1
  442. package/dist/adapter/ember/consts.d.ts +0 -191
  443. package/dist/adapter/ember/consts.d.ts.map +0 -1
  444. package/dist/adapter/ember/consts.js +0 -246
  445. package/dist/adapter/ember/consts.js.map +0 -1
  446. package/dist/adapter/ember/enums.d.ts +0 -2172
  447. package/dist/adapter/ember/enums.d.ts.map +0 -1
  448. package/dist/adapter/ember/enums.js +0 -2375
  449. package/dist/adapter/ember/enums.js.map +0 -1
  450. package/dist/adapter/ember/ezsp/buffalo.d.ts +0 -156
  451. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +0 -1
  452. package/dist/adapter/ember/ezsp/buffalo.js +0 -1033
  453. package/dist/adapter/ember/ezsp/buffalo.js.map +0 -1
  454. package/dist/adapter/ember/ezsp/consts.d.ts +0 -116
  455. package/dist/adapter/ember/ezsp/consts.d.ts.map +0 -1
  456. package/dist/adapter/ember/ezsp/consts.js +0 -128
  457. package/dist/adapter/ember/ezsp/consts.js.map +0 -1
  458. package/dist/adapter/ember/ezsp/enums.d.ts +0 -879
  459. package/dist/adapter/ember/ezsp/enums.d.ts.map +0 -1
  460. package/dist/adapter/ember/ezsp/enums.js +0 -948
  461. package/dist/adapter/ember/ezsp/enums.js.map +0 -1
  462. package/dist/adapter/ember/ezsp/ezsp.d.ts +0 -2662
  463. package/dist/adapter/ember/ezsp/ezsp.js +0 -6454
  464. package/dist/adapter/ember/ezsp/ezsp.js.map +0 -1
  465. package/dist/adapter/ember/types.d.ts +0 -733
  466. package/dist/adapter/ember/types.d.ts.map +0 -1
  467. package/dist/adapter/ember/types.js +0 -3
  468. package/dist/adapter/ember/types.js.map +0 -1
  469. package/dist/adapter/ember/uart/ash.d.ts +0 -464
  470. package/dist/adapter/ember/uart/ash.d.ts.map +0 -1
  471. package/dist/adapter/ember/uart/ash.js +0 -1633
  472. package/dist/adapter/ember/uart/ash.js.map +0 -1
  473. package/dist/adapter/ember/uart/consts.d.ts +0 -91
  474. package/dist/adapter/ember/uart/consts.d.ts.map +0 -1
  475. package/dist/adapter/ember/uart/consts.js +0 -100
  476. package/dist/adapter/ember/uart/consts.js.map +0 -1
  477. package/dist/adapter/ember/uart/enums.d.ts +0 -191
  478. package/dist/adapter/ember/uart/enums.d.ts.map +0 -1
  479. package/dist/adapter/ember/uart/enums.js +0 -197
  480. package/dist/adapter/ember/uart/enums.js.map +0 -1
  481. package/dist/adapter/ember/uart/parser.d.ts +0 -10
  482. package/dist/adapter/ember/uart/parser.d.ts.map +0 -1
  483. package/dist/adapter/ember/uart/parser.js +0 -37
  484. package/dist/adapter/ember/uart/parser.js.map +0 -1
  485. package/dist/adapter/ember/uart/queues.d.ts +0 -85
  486. package/dist/adapter/ember/uart/queues.d.ts.map +0 -1
  487. package/dist/adapter/ember/uart/queues.js +0 -214
  488. package/dist/adapter/ember/uart/queues.js.map +0 -1
  489. package/dist/adapter/ember/uart/writer.d.ts +0 -15
  490. package/dist/adapter/ember/uart/writer.d.ts.map +0 -1
  491. package/dist/adapter/ember/uart/writer.js +0 -46
  492. package/dist/adapter/ember/uart/writer.js.map +0 -1
  493. package/dist/adapter/ember/utils/initters.d.ts +0 -20
  494. package/dist/adapter/ember/utils/initters.js +0 -58
  495. package/dist/adapter/ember/utils/initters.js.map +0 -1
  496. package/dist/adapter/ember/utils/math.d.ts +0 -51
  497. package/dist/adapter/ember/utils/math.d.ts.map +0 -1
  498. package/dist/adapter/ember/utils/math.js +0 -102
  499. package/dist/adapter/ember/utils/math.js.map +0 -1
  500. package/dist/adapter/ember/zdo.d.ts +0 -925
  501. package/dist/adapter/ember/zdo.d.ts.map +0 -1
  502. package/dist/adapter/ember/zdo.js +0 -723
  503. package/dist/adapter/ember/zdo.js.map +0 -1
  504. package/dist/adapter/events.d.ts +0 -42
  505. package/dist/adapter/events.js +0 -13
  506. package/dist/adapter/events.js.map +0 -1
  507. package/dist/adapter/ezsp/adapter/backup.d.ts +0 -13
  508. package/dist/adapter/ezsp/adapter/backup.js +0 -101
  509. package/dist/adapter/ezsp/adapter/backup.js.map +0 -1
  510. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +0 -65
  511. package/dist/adapter/ezsp/adapter/ezspAdapter.js +0 -634
  512. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +0 -1
  513. package/dist/adapter/ezsp/adapter/index.d.ts +0 -3
  514. package/dist/adapter/ezsp/adapter/index.d.ts.map +0 -1
  515. package/dist/adapter/ezsp/adapter/index.js +0 -11
  516. package/dist/adapter/ezsp/adapter/index.js.map +0 -1
  517. package/dist/adapter/ezsp/driver/commands.d.ts +0 -37
  518. package/dist/adapter/ezsp/driver/commands.d.ts.map +0 -1
  519. package/dist/adapter/ezsp/driver/commands.js +0 -2387
  520. package/dist/adapter/ezsp/driver/commands.js.map +0 -1
  521. package/dist/adapter/ezsp/driver/consts.d.ts +0 -11
  522. package/dist/adapter/ezsp/driver/consts.d.ts.map +0 -1
  523. package/dist/adapter/ezsp/driver/consts.js +0 -14
  524. package/dist/adapter/ezsp/driver/consts.js.map +0 -1
  525. package/dist/adapter/ezsp/driver/driver.d.ts +0 -109
  526. package/dist/adapter/ezsp/driver/driver.js +0 -796
  527. package/dist/adapter/ezsp/driver/driver.js.map +0 -1
  528. package/dist/adapter/ezsp/driver/ezsp.d.ts +0 -106
  529. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +0 -1
  530. package/dist/adapter/ezsp/driver/ezsp.js +0 -664
  531. package/dist/adapter/ezsp/driver/ezsp.js.map +0 -1
  532. package/dist/adapter/ezsp/driver/frame.d.ts +0 -40
  533. package/dist/adapter/ezsp/driver/frame.d.ts.map +0 -1
  534. package/dist/adapter/ezsp/driver/frame.js +0 -101
  535. package/dist/adapter/ezsp/driver/frame.js.map +0 -1
  536. package/dist/adapter/ezsp/driver/index.d.ts +0 -4
  537. package/dist/adapter/ezsp/driver/index.js +0 -9
  538. package/dist/adapter/ezsp/driver/index.js.map +0 -1
  539. package/dist/adapter/ezsp/driver/multicast.d.ts +0 -13
  540. package/dist/adapter/ezsp/driver/multicast.js +0 -74
  541. package/dist/adapter/ezsp/driver/multicast.js.map +0 -1
  542. package/dist/adapter/ezsp/driver/parser.d.ts +0 -12
  543. package/dist/adapter/ezsp/driver/parser.d.ts.map +0 -1
  544. package/dist/adapter/ezsp/driver/parser.js +0 -105
  545. package/dist/adapter/ezsp/driver/parser.js.map +0 -1
  546. package/dist/adapter/ezsp/driver/types/basic.d.ts +0 -63
  547. package/dist/adapter/ezsp/driver/types/basic.d.ts.map +0 -1
  548. package/dist/adapter/ezsp/driver/types/basic.js +0 -209
  549. package/dist/adapter/ezsp/driver/types/basic.js.map +0 -1
  550. package/dist/adapter/ezsp/driver/types/index.d.ts +0 -10
  551. package/dist/adapter/ezsp/driver/types/index.d.ts.map +0 -1
  552. package/dist/adapter/ezsp/driver/types/index.js +0 -139
  553. package/dist/adapter/ezsp/driver/types/index.js.map +0 -1
  554. package/dist/adapter/ezsp/driver/types/named.d.ts +0 -1288
  555. package/dist/adapter/ezsp/driver/types/named.d.ts.map +0 -1
  556. package/dist/adapter/ezsp/driver/types/named.js +0 -2330
  557. package/dist/adapter/ezsp/driver/types/named.js.map +0 -1
  558. package/dist/adapter/ezsp/driver/types/struct.d.ts +0 -271
  559. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +0 -1
  560. package/dist/adapter/ezsp/driver/types/struct.js +0 -804
  561. package/dist/adapter/ezsp/driver/types/struct.js.map +0 -1
  562. package/dist/adapter/ezsp/driver/uart.d.ts +0 -49
  563. package/dist/adapter/ezsp/driver/uart.d.ts.map +0 -1
  564. package/dist/adapter/ezsp/driver/uart.js +0 -383
  565. package/dist/adapter/ezsp/driver/uart.js.map +0 -1
  566. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +0 -3
  567. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +0 -1
  568. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +0 -56
  569. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +0 -1
  570. package/dist/adapter/ezsp/driver/utils/index.d.ts +0 -20
  571. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +0 -1
  572. package/dist/adapter/ezsp/driver/utils/index.js +0 -73
  573. package/dist/adapter/ezsp/driver/utils/index.js.map +0 -1
  574. package/dist/adapter/ezsp/driver/writer.d.ts +0 -14
  575. package/dist/adapter/ezsp/driver/writer.d.ts.map +0 -1
  576. package/dist/adapter/ezsp/driver/writer.js +0 -83
  577. package/dist/adapter/ezsp/driver/writer.js.map +0 -1
  578. package/dist/adapter/index.d.ts +0 -5
  579. package/dist/adapter/index.js +0 -36
  580. package/dist/adapter/index.js.map +0 -1
  581. package/dist/adapter/serialPort.d.ts +0 -14
  582. package/dist/adapter/serialPort.d.ts.map +0 -1
  583. package/dist/adapter/serialPort.js +0 -47
  584. package/dist/adapter/serialPort.js.map +0 -1
  585. package/dist/adapter/serialPortUtils.d.ts +0 -13
  586. package/dist/adapter/serialPortUtils.d.ts.map +0 -1
  587. package/dist/adapter/serialPortUtils.js +0 -19
  588. package/dist/adapter/serialPortUtils.js.map +0 -1
  589. package/dist/adapter/socketPortUtils.d.ts +0 -11
  590. package/dist/adapter/socketPortUtils.d.ts.map +0 -1
  591. package/dist/adapter/socketPortUtils.js +0 -17
  592. package/dist/adapter/socketPortUtils.js.map +0 -1
  593. package/dist/adapter/tstype.d.ts +0 -86
  594. package/dist/adapter/tstype.d.ts.map +0 -1
  595. package/dist/adapter/tstype.js +0 -3
  596. package/dist/adapter/tstype.js.map +0 -1
  597. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +0 -62
  598. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +0 -1
  599. package/dist/adapter/z-stack/adapter/adapter-backup.js +0 -459
  600. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +0 -1
  601. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +0 -151
  602. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +0 -1
  603. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +0 -259
  604. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +0 -1
  605. package/dist/adapter/z-stack/adapter/endpoints.d.ts +0 -12
  606. package/dist/adapter/z-stack/adapter/endpoints.js +0 -74
  607. package/dist/adapter/z-stack/adapter/endpoints.js.map +0 -1
  608. package/dist/adapter/z-stack/adapter/index.d.ts +0 -3
  609. package/dist/adapter/z-stack/adapter/index.d.ts.map +0 -1
  610. package/dist/adapter/z-stack/adapter/index.js +0 -9
  611. package/dist/adapter/z-stack/adapter/index.js.map +0 -1
  612. package/dist/adapter/z-stack/adapter/manager.d.ts +0 -84
  613. package/dist/adapter/z-stack/adapter/manager.js +0 -474
  614. package/dist/adapter/z-stack/adapter/manager.js.map +0 -1
  615. package/dist/adapter/z-stack/adapter/tstype.d.ts +0 -7
  616. package/dist/adapter/z-stack/adapter/tstype.d.ts.map +0 -1
  617. package/dist/adapter/z-stack/adapter/tstype.js +0 -10
  618. package/dist/adapter/z-stack/adapter/tstype.js.map +0 -1
  619. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +0 -86
  620. package/dist/adapter/z-stack/adapter/zStackAdapter.js +0 -912
  621. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +0 -1
  622. package/dist/adapter/z-stack/constants/af.d.ts +0 -24
  623. package/dist/adapter/z-stack/constants/af.d.ts.map +0 -1
  624. package/dist/adapter/z-stack/constants/af.js +0 -28
  625. package/dist/adapter/z-stack/constants/af.js.map +0 -1
  626. package/dist/adapter/z-stack/constants/common.d.ts +0 -279
  627. package/dist/adapter/z-stack/constants/common.d.ts.map +0 -1
  628. package/dist/adapter/z-stack/constants/common.js +0 -293
  629. package/dist/adapter/z-stack/constants/common.js.map +0 -1
  630. package/dist/adapter/z-stack/constants/dbg.d.ts +0 -23
  631. package/dist/adapter/z-stack/constants/dbg.d.ts.map +0 -1
  632. package/dist/adapter/z-stack/constants/dbg.js +0 -25
  633. package/dist/adapter/z-stack/constants/dbg.js.map +0 -1
  634. package/dist/adapter/z-stack/constants/index.d.ts +0 -11
  635. package/dist/adapter/z-stack/constants/index.d.ts.map +0 -1
  636. package/dist/adapter/z-stack/constants/index.js +0 -48
  637. package/dist/adapter/z-stack/constants/index.js.map +0 -1
  638. package/dist/adapter/z-stack/constants/mac.d.ts +0 -128
  639. package/dist/adapter/z-stack/constants/mac.d.ts.map +0 -1
  640. package/dist/adapter/z-stack/constants/mac.js +0 -130
  641. package/dist/adapter/z-stack/constants/mac.js.map +0 -1
  642. package/dist/adapter/z-stack/constants/sapi.d.ts +0 -25
  643. package/dist/adapter/z-stack/constants/sapi.d.ts.map +0 -1
  644. package/dist/adapter/z-stack/constants/sapi.js +0 -27
  645. package/dist/adapter/z-stack/constants/sapi.js.map +0 -1
  646. package/dist/adapter/z-stack/constants/sys.d.ts +0 -72
  647. package/dist/adapter/z-stack/constants/sys.d.ts.map +0 -1
  648. package/dist/adapter/z-stack/constants/sys.js +0 -74
  649. package/dist/adapter/z-stack/constants/sys.js.map +0 -1
  650. package/dist/adapter/z-stack/constants/util.d.ts +0 -82
  651. package/dist/adapter/z-stack/constants/util.d.ts.map +0 -1
  652. package/dist/adapter/z-stack/constants/util.js +0 -84
  653. package/dist/adapter/z-stack/constants/util.js.map +0 -1
  654. package/dist/adapter/z-stack/constants/utils.d.ts +0 -5
  655. package/dist/adapter/z-stack/constants/utils.d.ts.map +0 -1
  656. package/dist/adapter/z-stack/constants/utils.js +0 -15
  657. package/dist/adapter/z-stack/constants/utils.js.map +0 -1
  658. package/dist/adapter/z-stack/constants/zdo.d.ts +0 -103
  659. package/dist/adapter/z-stack/constants/zdo.d.ts.map +0 -1
  660. package/dist/adapter/z-stack/constants/zdo.js +0 -105
  661. package/dist/adapter/z-stack/constants/zdo.js.map +0 -1
  662. package/dist/adapter/z-stack/models/index.d.ts +0 -2
  663. package/dist/adapter/z-stack/models/index.d.ts.map +0 -1
  664. package/dist/adapter/z-stack/models/index.js +0 -18
  665. package/dist/adapter/z-stack/models/index.js.map +0 -1
  666. package/dist/adapter/z-stack/models/startup-options.d.ts +0 -13
  667. package/dist/adapter/z-stack/models/startup-options.js +0 -3
  668. package/dist/adapter/z-stack/models/startup-options.js.map +0 -1
  669. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +0 -24
  670. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +0 -1
  671. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +0 -46
  672. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +0 -1
  673. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +0 -11
  674. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +0 -1
  675. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +0 -23
  676. package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +0 -1
  677. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +0 -11
  678. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts.map +0 -1
  679. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +0 -22
  680. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +0 -1
  681. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +0 -11
  682. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +0 -1
  683. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +0 -24
  684. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +0 -1
  685. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +0 -11
  686. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts.map +0 -1
  687. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +0 -25
  688. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +0 -1
  689. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +0 -11
  690. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +0 -1
  691. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +0 -24
  692. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +0 -1
  693. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +0 -9
  694. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts.map +0 -1
  695. package/dist/adapter/z-stack/structs/entries/channel-list.js +0 -16
  696. package/dist/adapter/z-stack/structs/entries/channel-list.js.map +0 -1
  697. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +0 -9
  698. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +0 -1
  699. package/dist/adapter/z-stack/structs/entries/has-configured.js +0 -17
  700. package/dist/adapter/z-stack/structs/entries/has-configured.js.map +0 -1
  701. package/dist/adapter/z-stack/structs/entries/index.d.ts +0 -17
  702. package/dist/adapter/z-stack/structs/entries/index.d.ts.map +0 -1
  703. package/dist/adapter/z-stack/structs/entries/index.js +0 -33
  704. package/dist/adapter/z-stack/structs/entries/index.js.map +0 -1
  705. package/dist/adapter/z-stack/structs/entries/nib.d.ts +0 -11
  706. package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +0 -1
  707. package/dist/adapter/z-stack/structs/entries/nib.js +0 -69
  708. package/dist/adapter/z-stack/structs/entries/nib.js.map +0 -1
  709. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +0 -11
  710. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +0 -1
  711. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +0 -19
  712. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +0 -1
  713. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +0 -9
  714. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +0 -1
  715. package/dist/adapter/z-stack/structs/entries/nwk-key.js +0 -16
  716. package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +0 -1
  717. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +0 -9
  718. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts.map +0 -1
  719. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +0 -16
  720. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +0 -1
  721. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +0 -14
  722. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts.map +0 -1
  723. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +0 -24
  724. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +0 -1
  725. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +0 -11
  726. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +0 -1
  727. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +0 -23
  728. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +0 -1
  729. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +0 -21
  730. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts.map +0 -1
  731. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +0 -37
  732. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +0 -1
  733. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +0 -11
  734. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +0 -1
  735. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +0 -25
  736. package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +0 -1
  737. package/dist/adapter/z-stack/structs/index.d.ts +0 -5
  738. package/dist/adapter/z-stack/structs/index.d.ts.map +0 -1
  739. package/dist/adapter/z-stack/structs/index.js +0 -21
  740. package/dist/adapter/z-stack/structs/index.js.map +0 -1
  741. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +0 -14
  742. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts.map +0 -1
  743. package/dist/adapter/z-stack/structs/serializable-memory-object.js +0 -3
  744. package/dist/adapter/z-stack/structs/serializable-memory-object.js.map +0 -1
  745. package/dist/adapter/z-stack/structs/struct.d.ts +0 -100
  746. package/dist/adapter/z-stack/structs/struct.d.ts.map +0 -1
  747. package/dist/adapter/z-stack/structs/struct.js +0 -297
  748. package/dist/adapter/z-stack/structs/struct.js.map +0 -1
  749. package/dist/adapter/z-stack/structs/table.d.ts +0 -95
  750. package/dist/adapter/z-stack/structs/table.d.ts.map +0 -1
  751. package/dist/adapter/z-stack/structs/table.js +0 -164
  752. package/dist/adapter/z-stack/structs/table.js.map +0 -1
  753. package/dist/adapter/z-stack/unpi/constants.d.ts +0 -29
  754. package/dist/adapter/z-stack/unpi/constants.d.ts.map +0 -1
  755. package/dist/adapter/z-stack/unpi/constants.js +0 -40
  756. package/dist/adapter/z-stack/unpi/constants.js.map +0 -1
  757. package/dist/adapter/z-stack/unpi/frame.d.ts +0 -17
  758. package/dist/adapter/z-stack/unpi/frame.d.ts.map +0 -1
  759. package/dist/adapter/z-stack/unpi/frame.js +0 -55
  760. package/dist/adapter/z-stack/unpi/frame.js.map +0 -1
  761. package/dist/adapter/z-stack/unpi/index.d.ts +0 -6
  762. package/dist/adapter/z-stack/unpi/index.d.ts.map +0 -1
  763. package/dist/adapter/z-stack/unpi/index.js +0 -38
  764. package/dist/adapter/z-stack/unpi/index.js.map +0 -1
  765. package/dist/adapter/z-stack/unpi/parser.d.ts +0 -13
  766. package/dist/adapter/z-stack/unpi/parser.d.ts.map +0 -1
  767. package/dist/adapter/z-stack/unpi/parser.js +0 -86
  768. package/dist/adapter/z-stack/unpi/parser.js.map +0 -1
  769. package/dist/adapter/z-stack/unpi/writer.d.ts +0 -12
  770. package/dist/adapter/z-stack/unpi/writer.d.ts.map +0 -1
  771. package/dist/adapter/z-stack/unpi/writer.js +0 -55
  772. package/dist/adapter/z-stack/unpi/writer.js.map +0 -1
  773. package/dist/adapter/z-stack/utils/channel-list.d.ts +0 -21
  774. package/dist/adapter/z-stack/utils/channel-list.d.ts.map +0 -1
  775. package/dist/adapter/z-stack/utils/channel-list.js +0 -41
  776. package/dist/adapter/z-stack/utils/channel-list.js.map +0 -1
  777. package/dist/adapter/z-stack/utils/index.d.ts +0 -3
  778. package/dist/adapter/z-stack/utils/index.d.ts.map +0 -1
  779. package/dist/adapter/z-stack/utils/index.js +0 -19
  780. package/dist/adapter/z-stack/utils/index.js.map +0 -1
  781. package/dist/adapter/z-stack/utils/network-options.d.ts +0 -9
  782. package/dist/adapter/z-stack/utils/network-options.d.ts.map +0 -1
  783. package/dist/adapter/z-stack/utils/network-options.js +0 -23
  784. package/dist/adapter/z-stack/utils/network-options.js.map +0 -1
  785. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +0 -14
  786. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +0 -1
  787. package/dist/adapter/z-stack/znp/buffaloZnp.js +0 -243
  788. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +0 -1
  789. package/dist/adapter/z-stack/znp/definition.d.ts +0 -6
  790. package/dist/adapter/z-stack/znp/definition.d.ts.map +0 -1
  791. package/dist/adapter/z-stack/znp/definition.js +0 -3052
  792. package/dist/adapter/z-stack/znp/definition.js.map +0 -1
  793. package/dist/adapter/z-stack/znp/index.d.ts +0 -4
  794. package/dist/adapter/z-stack/znp/index.d.ts.map +0 -1
  795. package/dist/adapter/z-stack/znp/index.js +0 -11
  796. package/dist/adapter/z-stack/znp/index.js.map +0 -1
  797. package/dist/adapter/z-stack/znp/parameterType.d.ts +0 -23
  798. package/dist/adapter/z-stack/znp/parameterType.d.ts.map +0 -1
  799. package/dist/adapter/z-stack/znp/parameterType.js +0 -26
  800. package/dist/adapter/z-stack/znp/parameterType.js.map +0 -1
  801. package/dist/adapter/z-stack/znp/tstype.d.ts +0 -23
  802. package/dist/adapter/z-stack/znp/tstype.d.ts.map +0 -1
  803. package/dist/adapter/z-stack/znp/tstype.js +0 -3
  804. package/dist/adapter/z-stack/znp/tstype.js.map +0 -1
  805. package/dist/adapter/z-stack/znp/znp.d.ts +0 -47
  806. package/dist/adapter/z-stack/znp/znp.d.ts.map +0 -1
  807. package/dist/adapter/z-stack/znp/znp.js +0 -322
  808. package/dist/adapter/z-stack/znp/znp.js.map +0 -1
  809. package/dist/adapter/z-stack/znp/zpiObject.d.ts +0 -20
  810. package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +0 -1
  811. package/dist/adapter/z-stack/znp/zpiObject.js +0 -103
  812. package/dist/adapter/z-stack/znp/zpiObject.js.map +0 -1
  813. package/dist/adapter/zigate/adapter/index.d.ts +0 -3
  814. package/dist/adapter/zigate/adapter/index.d.ts.map +0 -1
  815. package/dist/adapter/zigate/adapter/index.js +0 -11
  816. package/dist/adapter/zigate/adapter/index.js.map +0 -1
  817. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +0 -72
  818. package/dist/adapter/zigate/adapter/zigateAdapter.js +0 -681
  819. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +0 -1
  820. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +0 -18
  821. package/dist/adapter/zigate/driver/commandType.d.ts +0 -43
  822. package/dist/adapter/zigate/driver/commandType.d.ts.map +0 -1
  823. package/dist/adapter/zigate/driver/commandType.js +0 -390
  824. package/dist/adapter/zigate/driver/commandType.js.map +0 -1
  825. package/dist/adapter/zigate/driver/constants.d.ts +0 -277
  826. package/dist/adapter/zigate/driver/constants.d.ts.map +0 -1
  827. package/dist/adapter/zigate/driver/constants.js +0 -372
  828. package/dist/adapter/zigate/driver/constants.js.map +0 -1
  829. package/dist/adapter/zigate/driver/frame.d.ts +0 -27
  830. package/dist/adapter/zigate/driver/frame.d.ts.map +0 -1
  831. package/dist/adapter/zigate/driver/frame.js +0 -173
  832. package/dist/adapter/zigate/driver/frame.js.map +0 -1
  833. package/dist/adapter/zigate/driver/messageType.d.ts +0 -13
  834. package/dist/adapter/zigate/driver/messageType.d.ts.map +0 -1
  835. package/dist/adapter/zigate/driver/messageType.js +0 -284
  836. package/dist/adapter/zigate/driver/messageType.js.map +0 -1
  837. package/dist/adapter/zigate/driver/parameterType.d.ts +0 -28
  838. package/dist/adapter/zigate/driver/parameterType.d.ts.map +0 -1
  839. package/dist/adapter/zigate/driver/parameterType.js +0 -33
  840. package/dist/adapter/zigate/driver/parameterType.js.map +0 -1
  841. package/dist/adapter/zigate/driver/ziGateObject.d.ts +0 -24
  842. package/dist/adapter/zigate/driver/ziGateObject.js +0 -111
  843. package/dist/adapter/zigate/driver/ziGateObject.js.map +0 -1
  844. package/dist/adapter/zigate/driver/zigate.d.ts +0 -50
  845. package/dist/adapter/zigate/driver/zigate.js +0 -289
  846. package/dist/adapter/zigate/driver/zigate.js.map +0 -1
  847. package/dist/buffalo/buffalo.d.ts +0 -55
  848. package/dist/buffalo/buffalo.d.ts.map +0 -1
  849. package/dist/buffalo/buffalo.js +0 -230
  850. package/dist/buffalo/buffalo.js.map +0 -1
  851. package/dist/buffalo/index.d.ts +0 -3
  852. package/dist/buffalo/index.d.ts.map +0 -1
  853. package/dist/buffalo/index.js +0 -9
  854. package/dist/buffalo/index.js.map +0 -1
  855. package/dist/controller/controller.d.ts +0 -119
  856. package/dist/controller/database.d.ts +0 -20
  857. package/dist/controller/database.js +0 -94
  858. package/dist/controller/database.js.map +0 -1
  859. package/dist/controller/events.d.ts +0 -59
  860. package/dist/controller/greenPower.d.ts +0 -14
  861. package/dist/controller/helpers/index.d.ts +0 -3
  862. package/dist/controller/helpers/index.js +0 -29
  863. package/dist/controller/helpers/index.js.map +0 -1
  864. package/dist/controller/helpers/request.d.ts +0 -22
  865. package/dist/controller/helpers/request.js +0 -78
  866. package/dist/controller/helpers/request.js.map +0 -1
  867. package/dist/controller/helpers/requestQueue.d.ts +0 -13
  868. package/dist/controller/helpers/requestQueue.js +0 -106
  869. package/dist/controller/helpers/requestQueue.js.map +0 -1
  870. package/dist/controller/helpers/zclFrameConverter.d.ts +0 -9
  871. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +0 -6
  872. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts.map +0 -1
  873. package/dist/controller/helpers/zclTransactionSequenceNumber.js +0 -14
  874. package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +0 -1
  875. package/dist/controller/index.d.ts +0 -6
  876. package/dist/controller/index.js +0 -9
  877. package/dist/controller/index.js.map +0 -1
  878. package/dist/controller/model/device.d.ts +0 -140
  879. package/dist/controller/model/endpoint.d.ts +0 -134
  880. package/dist/controller/model/entity.d.ts +0 -15
  881. package/dist/controller/model/entity.js +0 -27
  882. package/dist/controller/model/entity.js.map +0 -1
  883. package/dist/controller/model/group.d.ts +0 -39
  884. package/dist/controller/model/index.d.ts +0 -6
  885. package/dist/controller/model/index.js +0 -15
  886. package/dist/controller/model/index.js.map +0 -1
  887. package/dist/controller/model/konnextConfig.d.ts +0 -7
  888. package/dist/controller/model/konnextConfig.d.ts.map +0 -1
  889. package/dist/controller/model/konnextConfig.js +0 -3
  890. package/dist/controller/model/konnextConfig.js.map +0 -1
  891. package/dist/controller/touchlink.d.ts +0 -20
  892. package/dist/controller/touchlink.js +0 -157
  893. package/dist/controller/touchlink.js.map +0 -1
  894. package/dist/controller/tstype.d.ts +0 -21
  895. package/dist/index.d.ts +0 -6
  896. package/dist/index.js +0 -37
  897. package/dist/index.js.map +0 -1
  898. package/dist/models/backup-storage-legacy.d.ts +0 -27
  899. package/dist/models/backup-storage-legacy.d.ts.map +0 -1
  900. package/dist/models/backup-storage-legacy.js +0 -3
  901. package/dist/models/backup-storage-legacy.js.map +0 -1
  902. package/dist/models/backup-storage-unified.d.ts +0 -50
  903. package/dist/models/backup-storage-unified.d.ts.map +0 -1
  904. package/dist/models/backup-storage-unified.js +0 -3
  905. package/dist/models/backup-storage-unified.js.map +0 -1
  906. package/dist/models/backup.d.ts +0 -38
  907. package/dist/models/backup.d.ts.map +0 -1
  908. package/dist/models/backup.js +0 -3
  909. package/dist/models/backup.js.map +0 -1
  910. package/dist/models/index.d.ts +0 -5
  911. package/dist/models/index.d.ts.map +0 -1
  912. package/dist/models/index.js +0 -21
  913. package/dist/models/index.js.map +0 -1
  914. package/dist/models/network-options.d.ts +0 -13
  915. package/dist/models/network-options.d.ts.map +0 -1
  916. package/dist/models/network-options.js +0 -3
  917. package/dist/models/network-options.js.map +0 -1
  918. package/dist/utils/aes.d.ts +0 -40
  919. package/dist/utils/aes.d.ts.map +0 -1
  920. package/dist/utils/aes.js +0 -198
  921. package/dist/utils/aes.js.map +0 -1
  922. package/dist/utils/assertString.d.ts +0 -3
  923. package/dist/utils/assertString.d.ts.map +0 -1
  924. package/dist/utils/assertString.js +0 -9
  925. package/dist/utils/assertString.js.map +0 -1
  926. package/dist/utils/backup.d.ts +0 -21
  927. package/dist/utils/backup.d.ts.map +0 -1
  928. package/dist/utils/backup.js +0 -190
  929. package/dist/utils/backup.js.map +0 -1
  930. package/dist/utils/equalsPartial.d.ts +0 -3
  931. package/dist/utils/equalsPartial.d.ts.map +0 -1
  932. package/dist/utils/equalsPartial.js +0 -12
  933. package/dist/utils/equalsPartial.js.map +0 -1
  934. package/dist/utils/index.d.ts +0 -10
  935. package/dist/utils/index.d.ts.map +0 -1
  936. package/dist/utils/index.js +0 -46
  937. package/dist/utils/index.js.map +0 -1
  938. package/dist/utils/isNumberArray.d.ts +0 -3
  939. package/dist/utils/isNumberArray.d.ts.map +0 -1
  940. package/dist/utils/isNumberArray.js +0 -7
  941. package/dist/utils/isNumberArray.js.map +0 -1
  942. package/dist/utils/logger.d.ts +0 -9
  943. package/dist/utils/logger.d.ts.map +0 -1
  944. package/dist/utils/logger.js +0 -14
  945. package/dist/utils/logger.js.map +0 -1
  946. package/dist/utils/queue.d.ts +0 -12
  947. package/dist/utils/queue.d.ts.map +0 -1
  948. package/dist/utils/queue.js +0 -62
  949. package/dist/utils/queue.js.map +0 -1
  950. package/dist/utils/realpathSync.d.ts +0 -3
  951. package/dist/utils/realpathSync.d.ts.map +0 -1
  952. package/dist/utils/realpathSync.js +0 -13
  953. package/dist/utils/realpathSync.js.map +0 -1
  954. package/dist/utils/wait.d.ts +0 -3
  955. package/dist/utils/wait.d.ts.map +0 -1
  956. package/dist/utils/wait.js +0 -9
  957. package/dist/utils/wait.js.map +0 -1
  958. package/dist/utils/waitress.d.ts +0 -22
  959. package/dist/utils/waitress.d.ts.map +0 -1
  960. package/dist/utils/waitress.js +0 -69
  961. package/dist/utils/waitress.js.map +0 -1
  962. package/dist/zspec/consts.d.ts +0 -60
  963. package/dist/zspec/consts.d.ts.map +0 -1
  964. package/dist/zspec/consts.js +0 -64
  965. package/dist/zspec/consts.js.map +0 -1
  966. package/dist/zspec/enums.d.ts +0 -19
  967. package/dist/zspec/enums.d.ts.map +0 -1
  968. package/dist/zspec/enums.js +0 -28
  969. package/dist/zspec/enums.js.map +0 -1
  970. package/dist/zspec/index.d.ts +0 -4
  971. package/dist/zspec/index.d.ts.map +0 -1
  972. package/dist/zspec/index.js +0 -43
  973. package/dist/zspec/index.js.map +0 -1
  974. package/dist/zspec/tstypes.d.ts +0 -19
  975. package/dist/zspec/tstypes.d.ts.map +0 -1
  976. package/dist/zspec/tstypes.js +0 -3
  977. package/dist/zspec/tstypes.js.map +0 -1
  978. package/dist/zspec/utils.d.ts +0 -14
  979. package/dist/zspec/utils.d.ts.map +0 -1
  980. package/dist/zspec/utils.js +0 -29
  981. package/dist/zspec/utils.js.map +0 -1
  982. package/dist/zspec/zcl/buffaloZcl.d.ts +0 -55
  983. package/dist/zspec/zcl/definition/cluster.d.ts +0 -3
  984. package/dist/zspec/zcl/definition/consts.d.ts +0 -9
  985. package/dist/zspec/zcl/definition/consts.d.ts.map +0 -1
  986. package/dist/zspec/zcl/definition/consts.js +0 -27
  987. package/dist/zspec/zcl/definition/consts.js.map +0 -1
  988. package/dist/zspec/zcl/definition/enums.d.ts +0 -177
  989. package/dist/zspec/zcl/definition/enums.d.ts.map +0 -1
  990. package/dist/zspec/zcl/definition/enums.js +0 -187
  991. package/dist/zspec/zcl/definition/enums.js.map +0 -1
  992. package/dist/zspec/zcl/definition/foundation.d.ts +0 -11
  993. package/dist/zspec/zcl/definition/manufacturerCode.d.ts +0 -727
  994. package/dist/zspec/zcl/definition/manufacturerCode.d.ts.map +0 -1
  995. package/dist/zspec/zcl/definition/manufacturerCode.js +0 -733
  996. package/dist/zspec/zcl/definition/manufacturerCode.js.map +0 -1
  997. package/dist/zspec/zcl/definition/status.d.ts +0 -69
  998. package/dist/zspec/zcl/definition/status.d.ts.map +0 -1
  999. package/dist/zspec/zcl/definition/status.js +0 -74
  1000. package/dist/zspec/zcl/definition/status.js.map +0 -1
  1001. package/dist/zspec/zcl/index.d.ts +0 -11
  1002. package/dist/zspec/zcl/utils.d.ts +0 -7
  1003. package/dist/zspec/zcl/zclFrame.d.ts +0 -36
  1004. package/dist/zspec/zcl/zclHeader.d.ts +0 -17
  1005. package/dist/zspec/zcl/zclStatusError.d.ts +0 -6
  1006. package/dist/zspec/zcl/zclStatusError.d.ts.map +0 -1
  1007. package/dist/zspec/zcl/zclStatusError.js +0 -13
  1008. package/dist/zspec/zcl/zclStatusError.js.map +0 -1
  1009. package/dist/zspec/zdo/buffaloZdo.d.ts +0 -438
  1010. package/dist/zspec/zdo/buffaloZdo.d.ts.map +0 -1
  1011. package/dist/zspec/zdo/buffaloZdo.js +0 -1892
  1012. package/dist/zspec/zdo/buffaloZdo.js.map +0 -1
  1013. package/dist/zspec/zdo/definition/clusters.d.ts +0 -624
  1014. package/dist/zspec/zdo/definition/clusters.d.ts.map +0 -1
  1015. package/dist/zspec/zdo/definition/clusters.js +0 -687
  1016. package/dist/zspec/zdo/definition/clusters.js.map +0 -1
  1017. package/dist/zspec/zdo/definition/consts.d.ts +0 -13
  1018. package/dist/zspec/zdo/definition/consts.d.ts.map +0 -1
  1019. package/dist/zspec/zdo/definition/consts.js +0 -16
  1020. package/dist/zspec/zdo/definition/consts.js.map +0 -1
  1021. package/dist/zspec/zdo/definition/enums.d.ts +0 -75
  1022. package/dist/zspec/zdo/definition/enums.d.ts.map +0 -1
  1023. package/dist/zspec/zdo/definition/enums.js +0 -97
  1024. package/dist/zspec/zdo/definition/enums.js.map +0 -1
  1025. package/dist/zspec/zdo/definition/status.d.ts +0 -99
  1026. package/dist/zspec/zdo/definition/status.d.ts.map +0 -1
  1027. package/dist/zspec/zdo/definition/status.js +0 -109
  1028. package/dist/zspec/zdo/definition/status.js.map +0 -1
  1029. package/dist/zspec/zdo/definition/tstypes.d.ts +0 -787
  1030. package/dist/zspec/zdo/definition/tstypes.d.ts.map +0 -1
  1031. package/dist/zspec/zdo/definition/tstypes.js +0 -3
  1032. package/dist/zspec/zdo/definition/tstypes.js.map +0 -1
  1033. package/dist/zspec/zdo/index.d.ts +0 -7
  1034. package/dist/zspec/zdo/index.d.ts.map +0 -1
  1035. package/dist/zspec/zdo/index.js +0 -39
  1036. package/dist/zspec/zdo/index.js.map +0 -1
  1037. package/dist/zspec/zdo/utils.d.ts +0 -25
  1038. package/dist/zspec/zdo/utils.d.ts.map +0 -1
  1039. package/dist/zspec/zdo/utils.js +0 -75
  1040. package/dist/zspec/zdo/utils.js.map +0 -1
  1041. package/dist/zspec/zdo/zdoStatusError.d.ts +0 -6
  1042. package/dist/zspec/zdo/zdoStatusError.d.ts.map +0 -1
  1043. package/dist/zspec/zdo/zdoStatusError.js +0 -13
  1044. package/dist/zspec/zdo/zdoStatusError.js.map +0 -1
  1045. package/typedoc-tsconfig.json +0 -44
@@ -0,0 +1,1073 @@
1
+ import {Buffalo} from "../../buffalo";
2
+ import {logger} from "../../utils/logger";
3
+ import {isNumberArray} from "../../utils/utils";
4
+ import {ZCL_TYPE_INVALID_BY_TYPE, ZclType} from "./definition/datatypes";
5
+ import {BuffaloZclDataType, DataType, StructuredIndicatorType} from "./definition/enums";
6
+ import type {
7
+ BuffaloZclOptions,
8
+ ExtensionFieldSet,
9
+ Gpd,
10
+ GpdAttributeReport,
11
+ GpdChannelConfiguration,
12
+ GpdChannelRequest,
13
+ GpdCommissioningReply,
14
+ GpdCustomReply,
15
+ KeyZclValue,
16
+ MiboxerZone,
17
+ Struct,
18
+ StructuredSelector,
19
+ ThermoTransition,
20
+ TuyaDataPointValue,
21
+ ZclArray,
22
+ ZclDate,
23
+ ZclTimeOfDay,
24
+ ZoneInfo,
25
+ } from "./definition/tstype";
26
+ import * as Utils from "./utils";
27
+
28
+ const NS = "zh:zcl:buffalo";
29
+
30
+ const UINT8_NON_VALUE = ZCL_TYPE_INVALID_BY_TYPE[ZclType.Uint8] as number;
31
+ const UINT16_NON_VALUE = ZCL_TYPE_INVALID_BY_TYPE[ZclType.Uint16] as number;
32
+
33
+ const SEC_KEY_LENGTH = 16;
34
+
35
+ const EXTENSION_FIELD_SETS_DATA_TYPE: {[key: number]: DataType[]} = {
36
+ 6: [DataType.UINT8],
37
+ 8: [DataType.UINT8],
38
+ 258: [DataType.UINT8, DataType.UINT8],
39
+ 768: [DataType.UINT16, DataType.UINT16, DataType.UINT16, DataType.UINT8, DataType.UINT8, DataType.UINT8, DataType.UINT16, DataType.UINT16],
40
+ };
41
+
42
+ export class BuffaloZcl extends Buffalo {
43
+ private readLengthUInt8(): number {
44
+ const value = this.readUInt8();
45
+
46
+ return value === UINT8_NON_VALUE ? Number.NaN : value;
47
+ }
48
+
49
+ private readLengthUInt16(): number {
50
+ const value = this.readUInt16();
51
+
52
+ return value === UINT16_NON_VALUE ? Number.NaN : value;
53
+ }
54
+
55
+ private writeOctetStr(value?: number[]): void {
56
+ if (value) {
57
+ this.writeUInt8(value.length);
58
+ this.writeBuffer(value, value.length);
59
+ } else {
60
+ this.writeUInt8(UINT8_NON_VALUE);
61
+ }
62
+ }
63
+
64
+ private readOctetStr(): Buffer {
65
+ const length = this.readLengthUInt8();
66
+ return Number.isNaN(length) ? Buffer.from([]) : this.readBuffer(length);
67
+ }
68
+
69
+ // TODO: support read/write with specific `length` from attribute metadata (CHAR_STR & LONG_CHAR_STR)
70
+ private writeCharStr(value?: string | number[]): void {
71
+ // In case of an empty string, send 0 length, from the spec:
72
+ // "Setting this sub-field to 0x00 represents a character string with no character data (an “empty string”). Setting
73
+ // this sub-field to 0xff represents the non-value. In both cases the character data sub-field has zero length."
74
+ if (value != null) {
75
+ if (typeof value === "string") {
76
+ this.writeUInt8(Buffer.byteLength(value, "utf8"));
77
+ this.writeUtf8String(value);
78
+ } else {
79
+ // XXX: value.length not written?
80
+ this.writeBuffer(value, value.length);
81
+ }
82
+ } else {
83
+ this.writeUInt8(UINT8_NON_VALUE);
84
+ }
85
+ }
86
+
87
+ private readCharStr(): string {
88
+ const length = this.readLengthUInt8();
89
+
90
+ return Number.isNaN(length) ? "" : this.readUtf8String(length);
91
+ }
92
+
93
+ private writeLongOctetStr(value?: number[]): void {
94
+ if (value) {
95
+ this.writeUInt16(value.length);
96
+ this.writeBuffer(value, value.length);
97
+ } else {
98
+ this.writeUInt16(UINT16_NON_VALUE);
99
+ }
100
+ }
101
+
102
+ private readLongOctetStr(): Buffer {
103
+ const length = this.readLengthUInt16();
104
+ return Number.isNaN(length) ? Buffer.from([]) : this.readBuffer(length);
105
+ }
106
+
107
+ private writeLongCharStr(value?: string): void {
108
+ // In case of an empty string, send 0 length, from the spec:
109
+ // "Setting this sub-field to 0x0000 represents a long character string with no character data (an “empty string”).
110
+ // Setting this sub-field to 0xffff represents an non-value long character string value. In both cases the character
111
+ // data sub-field has zero length"
112
+ if (value != null) {
113
+ this.writeUInt16(Buffer.byteLength(value, "utf8"));
114
+ this.writeUtf8String(value);
115
+ } else {
116
+ this.writeUInt16(UINT16_NON_VALUE);
117
+ }
118
+ }
119
+
120
+ private readLongCharStr(): string {
121
+ const length = this.readLengthUInt16();
122
+ return Number.isNaN(length) ? "" : this.readUtf8String(length);
123
+ }
124
+
125
+ private writeArray(value?: ZclArray): void {
126
+ if (value) {
127
+ const elTypeNumeric = typeof value.elementType === "number" ? value.elementType : DataType[value.elementType];
128
+ this.writeUInt8(elTypeNumeric);
129
+ this.writeUInt16(value.elements.length);
130
+
131
+ for (const element of value.elements) {
132
+ this.write(elTypeNumeric, element, {});
133
+ }
134
+ } else {
135
+ this.writeUInt8(DataType.NO_DATA); // XXX: correct value?
136
+ this.writeUInt16(UINT16_NON_VALUE);
137
+ }
138
+ }
139
+
140
+ // TODO: support read [] with specific length (`arrayLengthSize` & `arrayLengthField`) from parameter metadata
141
+ private readArray(): unknown[] {
142
+ const values: unknown[] = [];
143
+
144
+ const elementType = this.readUInt8();
145
+ const numberOfElements = this.readLengthUInt16();
146
+
147
+ if (!Number.isNaN(numberOfElements)) {
148
+ // not non-value
149
+ for (let i = 0; i < numberOfElements; i++) {
150
+ const value = this.read(elementType, {});
151
+ values.push(value);
152
+ }
153
+ }
154
+
155
+ return values;
156
+ }
157
+
158
+ private writeStruct(value?: Struct[]): void {
159
+ if (value) {
160
+ this.writeUInt16(value.length);
161
+
162
+ for (const v of value) {
163
+ this.writeUInt8(v.elmType);
164
+ this.write(v.elmType, v.elmVal, {});
165
+ }
166
+ } else {
167
+ this.writeUInt16(UINT16_NON_VALUE);
168
+ }
169
+ }
170
+
171
+ private readStruct(): Struct[] {
172
+ const values: Struct[] = [];
173
+ const numberOfElements = this.readLengthUInt16();
174
+
175
+ if (!Number.isNaN(numberOfElements)) {
176
+ // not non-value
177
+ for (let i = 0; i < numberOfElements; i++) {
178
+ const elementType = this.readUInt8();
179
+ const value = this.read(elementType, {});
180
+ values.push({elmType: elementType, elmVal: value});
181
+ }
182
+ }
183
+
184
+ return values;
185
+ }
186
+
187
+ private writeToD(value: ZclTimeOfDay): void {
188
+ this.writeUInt8(value.hours == null || Number.isNaN(value.hours) ? UINT8_NON_VALUE : value.hours);
189
+ this.writeUInt8(value.minutes == null || Number.isNaN(value.minutes) ? UINT8_NON_VALUE : value.minutes);
190
+ this.writeUInt8(value.seconds == null || Number.isNaN(value.seconds) ? UINT8_NON_VALUE : value.seconds);
191
+ this.writeUInt8(value.hundredths == null || Number.isNaN(value.hundredths) ? UINT8_NON_VALUE : value.hundredths);
192
+ }
193
+
194
+ private readToD(): ZclTimeOfDay {
195
+ const hours = this.readLengthUInt8();
196
+ const minutes = this.readLengthUInt8();
197
+ const seconds = this.readLengthUInt8();
198
+ const hundredths = this.readLengthUInt8();
199
+
200
+ return {
201
+ hours,
202
+ minutes,
203
+ seconds,
204
+ hundredths,
205
+ };
206
+ }
207
+
208
+ private writeDate(value: ZclDate): void {
209
+ this.writeUInt8(value.year == null || Number.isNaN(value.year) ? UINT8_NON_VALUE : value.year - 1900);
210
+ this.writeUInt8(value.month == null || Number.isNaN(value.month) ? UINT8_NON_VALUE : value.month);
211
+ this.writeUInt8(value.dayOfMonth == null || Number.isNaN(value.dayOfMonth) ? UINT8_NON_VALUE : value.dayOfMonth);
212
+ this.writeUInt8(value.dayOfWeek == null || Number.isNaN(value.dayOfWeek) ? UINT8_NON_VALUE : value.dayOfWeek);
213
+ }
214
+
215
+ private readDate(): ZclDate {
216
+ const year = this.readLengthUInt8();
217
+ const month = this.readLengthUInt8();
218
+ const dayOfMonth = this.readLengthUInt8();
219
+ const dayOfWeek = this.readLengthUInt8();
220
+
221
+ return {
222
+ year: year + 1900, // remains NaN if year is NaN
223
+ month,
224
+ dayOfMonth,
225
+ dayOfWeek,
226
+ };
227
+ }
228
+
229
+ //--- BuffaloZclDataType
230
+
231
+ private writeListZoneInfo(values: ZoneInfo[]): void {
232
+ for (const value of values) {
233
+ this.writeUInt8(value.zoneID);
234
+ this.writeUInt16(value.zoneStatus);
235
+ }
236
+ }
237
+
238
+ private readListZoneInfo(length: number): ZoneInfo[] {
239
+ const value: ZoneInfo[] = [];
240
+ for (let i = 0; i < length; i++) {
241
+ value.push({
242
+ zoneID: this.readUInt8(),
243
+ zoneStatus: this.readUInt16(),
244
+ });
245
+ }
246
+
247
+ return value;
248
+ }
249
+
250
+ private writeExtensionFieldSets(values: {clstId: number; len: number; extField: number[]}[]): void {
251
+ for (const value of values) {
252
+ this.writeUInt16(value.clstId);
253
+ this.writeUInt8(value.len);
254
+ let index = 0;
255
+
256
+ for (const entry of value.extField) {
257
+ this.write(EXTENSION_FIELD_SETS_DATA_TYPE[value.clstId][index], entry, {});
258
+ index++;
259
+ }
260
+ }
261
+ }
262
+
263
+ private readExtensionFieldSets(): ExtensionFieldSet[] {
264
+ const value: ExtensionFieldSet[] = [];
265
+
266
+ // XXX: doesn't work if buffer has more unrelated fields after this one
267
+ while (this.isMore()) {
268
+ const clstId = this.readUInt16();
269
+ const len = this.readUInt8();
270
+ const end = this.getPosition() + len;
271
+ let index = 0;
272
+ const extField: unknown[] = [];
273
+
274
+ while (this.getPosition() < end) {
275
+ extField.push(this.read(EXTENSION_FIELD_SETS_DATA_TYPE[clstId][index], {}));
276
+ index++;
277
+ }
278
+
279
+ value.push({extField, clstId, len});
280
+ }
281
+
282
+ return value;
283
+ }
284
+
285
+ private writeListThermoTransitions(value: ThermoTransition[]): void {
286
+ for (const entry of value) {
287
+ this.writeUInt16(entry.transitionTime);
288
+
289
+ if (entry.heatSetpoint != null) {
290
+ this.writeInt16(entry.heatSetpoint);
291
+ }
292
+
293
+ if (entry.coolSetpoint != null) {
294
+ this.writeInt16(entry.coolSetpoint);
295
+ }
296
+ }
297
+ }
298
+
299
+ private readListThermoTransitions(options: BuffaloZclOptions): ThermoTransition[] {
300
+ if (options.payload == null || options.payload.mode == null || options.payload.numoftrans == null) {
301
+ throw new Error("Cannot read LIST_THERMO_TRANSITIONS without required payload options specified");
302
+ }
303
+
304
+ const heat = options.payload.mode & 1;
305
+ const cool = options.payload.mode & 2;
306
+ const result: ThermoTransition[] = [];
307
+
308
+ for (let i = 0; i < options.payload.numoftrans; i++) {
309
+ const entry: ThermoTransition = {
310
+ transitionTime: this.readUInt16(),
311
+ };
312
+
313
+ if (heat) {
314
+ entry.heatSetpoint = this.readInt16();
315
+ }
316
+
317
+ if (cool) {
318
+ entry.coolSetpoint = this.readInt16();
319
+ }
320
+
321
+ result.push(entry);
322
+ }
323
+
324
+ return result;
325
+ }
326
+
327
+ private writeGpdFrame(value: GpdCommissioningReply | GpdChannelConfiguration | GpdCustomReply): void {
328
+ if (value.commandID === 0xf0) {
329
+ // Commissioning Reply
330
+ const v = value as GpdCommissioningReply;
331
+
332
+ const panIDPresent = Boolean(v.options & 0x1);
333
+ const gpdSecurityKeyPresent = Boolean(v.options & 0x2);
334
+ const gpdKeyEncryption = Boolean((v.options >> 2) & 0x1);
335
+ const securityLevel = (v.options >> 3) & 0x3;
336
+ const hasGPDKeyMIC = gpdKeyEncryption && gpdSecurityKeyPresent;
337
+ const hasFrameCounter = gpdSecurityKeyPresent && gpdKeyEncryption && (securityLevel === 0b10 || securityLevel === 0b11);
338
+
339
+ this.writeUInt8(1 + (panIDPresent ? 2 : 0) + (gpdSecurityKeyPresent ? 16 : 0) + (hasGPDKeyMIC ? 4 : 0) + (hasFrameCounter ? 4 : 0)); // Length
340
+ this.writeUInt8(v.options);
341
+
342
+ if (panIDPresent) {
343
+ // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
344
+ this.writeUInt16(v.panID!);
345
+ }
346
+
347
+ if (gpdSecurityKeyPresent) {
348
+ // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
349
+ this.writeBuffer(v.securityKey!, 16);
350
+ }
351
+
352
+ if (hasGPDKeyMIC) {
353
+ // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
354
+ this.writeUInt32(v.keyMic!);
355
+ }
356
+
357
+ if (hasFrameCounter) {
358
+ // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
359
+ this.writeUInt32(v.frameCounter!);
360
+ }
361
+ } else if (value.commandID === 0xf3) {
362
+ // Channel configuration
363
+ const v = value as GpdChannelConfiguration;
364
+
365
+ this.writeUInt8(1);
366
+ this.writeUInt8((v.operationalChannel & 0xf) | ((v.basic ? 1 : 0) << 4));
367
+ } else if (value.commandID === 0xf4 || value.commandID === 0xf5 || (value.commandID >= 0xf7 && value.commandID <= 0xff)) {
368
+ // Other commands sent to GPD
369
+ const v = value as GpdCustomReply;
370
+
371
+ this.writeUInt8(v.buffer.length);
372
+ this.writeBuffer(v.buffer, v.buffer.length);
373
+ }
374
+ // 0xf1: Write Attributes
375
+ // 0xf2: Read Attributes
376
+ // 0xf6: ZCL Tunneling
377
+ }
378
+
379
+ private readGpdFrame(options: BuffaloZclOptions): Gpd | GpdChannelRequest | GpdAttributeReport | {raw: Buffer} | Record<string, never> {
380
+ if (options.payload?.payloadSize === undefined) {
381
+ throw new Error("Cannot read GPD_FRAME without required payload options specified");
382
+ }
383
+
384
+ if (Number.isNaN(options.payload.payloadSize) || options.payload.payloadSize === 0) {
385
+ return {}; // non-value, don't move position
386
+ }
387
+
388
+ // ensure offset by options.payload.payloadSize (if any) at end of parsing to not cause issues with spec changes (until supported)
389
+ const startPosition = this.position;
390
+
391
+ if (options.payload.commandID === 0xe0) {
392
+ // Commisioning
393
+ const frame = {
394
+ deviceID: this.readUInt8(),
395
+ options: this.readUInt8(),
396
+ extendedOptions: 0,
397
+ securityKey: Buffer.alloc(16) as Buffer<ArrayBufferLike>,
398
+ keyMic: 0,
399
+ outgoingCounter: 0,
400
+ applicationInfo: 0,
401
+ manufacturerID: 0,
402
+ modelID: 0,
403
+ numGpdCommands: 0,
404
+ gpdCommandIdList: Buffer.alloc(0) as Buffer<ArrayBufferLike>,
405
+ numServerClusters: 0,
406
+ numClientClusters: 0,
407
+ gpdServerClusters: Buffer.alloc(0) as Buffer<ArrayBufferLike>,
408
+ gpdClientClusters: Buffer.alloc(0) as Buffer<ArrayBufferLike>,
409
+ genericSwitchConfig: 0,
410
+ currentContactStatus: 0,
411
+ };
412
+
413
+ if (frame.options & 0x80) {
414
+ frame.extendedOptions = this.readUInt8();
415
+ }
416
+
417
+ if (frame.extendedOptions & 0x20) {
418
+ frame.securityKey = this.readBuffer(16);
419
+ }
420
+
421
+ if (frame.extendedOptions & 0x40) {
422
+ frame.keyMic = this.readUInt32();
423
+ }
424
+
425
+ if (frame.extendedOptions & 0x80) {
426
+ frame.outgoingCounter = this.readUInt32();
427
+ }
428
+
429
+ if (frame.options & 0x04) {
430
+ frame.applicationInfo = this.readUInt8();
431
+ }
432
+
433
+ if (frame.applicationInfo & 0x01) {
434
+ frame.manufacturerID = this.readUInt16();
435
+ }
436
+
437
+ if (frame.applicationInfo & 0x02) {
438
+ frame.modelID = this.readUInt16();
439
+ }
440
+
441
+ if (frame.applicationInfo & 0x04) {
442
+ frame.numGpdCommands = this.readUInt8();
443
+ frame.gpdCommandIdList = this.readBuffer(frame.numGpdCommands);
444
+ }
445
+
446
+ if (frame.applicationInfo & 0x08) {
447
+ const len = this.readUInt8();
448
+ frame.numServerClusters = len & 0xf;
449
+ frame.numClientClusters = (len >> 4) & 0xf;
450
+
451
+ frame.gpdServerClusters = this.readBuffer(2 * frame.numServerClusters);
452
+ frame.gpdClientClusters = this.readBuffer(2 * frame.numClientClusters);
453
+ }
454
+
455
+ if (frame.applicationInfo & 0x10) {
456
+ const len = this.readUInt8();
457
+
458
+ if (len >= 1) {
459
+ frame.genericSwitchConfig = this.readUInt8();
460
+ }
461
+
462
+ if (len >= 2) {
463
+ frame.currentContactStatus = this.readUInt8();
464
+ }
465
+ }
466
+
467
+ this.setPosition(startPosition + options.payload.payloadSize);
468
+
469
+ return frame;
470
+ }
471
+
472
+ if (options.payload.commandID === 0xe3) {
473
+ // Channel Request
474
+ const channelOpts = this.readUInt8();
475
+
476
+ this.setPosition(startPosition + options.payload.payloadSize);
477
+
478
+ return {
479
+ nextChannel: channelOpts & 0xf,
480
+ nextNextChannel: channelOpts >> 4,
481
+ };
482
+ }
483
+
484
+ if (options.payload.commandID === 0xa1) {
485
+ // Manufacturer-specific Attribute Reporting
486
+ const start = this.position;
487
+ const frame = {
488
+ manufacturerCode: this.readUInt16(),
489
+ clusterID: this.readUInt16(),
490
+ attributes: {} as KeyZclValue,
491
+ };
492
+
493
+ const cluster = Utils.getCluster(frame.clusterID, frame.manufacturerCode, {});
494
+
495
+ while (this.position - start < options.payload.payloadSize) {
496
+ const attributeID = this.readUInt16();
497
+ const type = this.readUInt8();
498
+ /* v8 ignore next */
499
+ let attribute: string | undefined | number = cluster.getAttribute(attributeID)?.name;
500
+
501
+ // number type is only used when going into this if
502
+ if (!attribute) {
503
+ // this is spammy because of the many manufacturer-specific attributes not currently used
504
+ logger.debug(`Unknown attribute ${attributeID} in cluster ${cluster.name}`, NS);
505
+
506
+ attribute = attributeID;
507
+ }
508
+
509
+ frame.attributes[attribute] = this.read(type, options);
510
+ }
511
+
512
+ this.setPosition(startPosition + options.payload.payloadSize);
513
+
514
+ return frame;
515
+ }
516
+
517
+ // might contain `gppNwkAddr`, `gppGpdLink` & `mic` from ZCL cluster after this, so limit by `payloadSize`
518
+ return {raw: this.readBuffer(options.payload.payloadSize)};
519
+ }
520
+
521
+ private writeStructuredSelector(value: StructuredSelector): void {
522
+ if (value != null) {
523
+ const indexes = value.indexes || [];
524
+ const indicatorType = value.indicatorType || StructuredIndicatorType.Whole;
525
+ const indicator = indexes.length + indicatorType;
526
+
527
+ this.writeUInt8(indicator);
528
+
529
+ for (const index of indexes) {
530
+ this.writeUInt16(index);
531
+ }
532
+ }
533
+ }
534
+
535
+ private readStructuredSelector(): StructuredSelector {
536
+ /** [0-15] range */
537
+ const indicator = this.readUInt8();
538
+
539
+ if (indicator === 0) {
540
+ // no indexes, whole attribute value is to be read
541
+ return {indicatorType: StructuredIndicatorType.Whole};
542
+ }
543
+
544
+ if (indicator < StructuredIndicatorType.WriteAdd) {
545
+ const indexes: StructuredSelector["indexes"] = [];
546
+
547
+ for (let i = 0; i < indicator; i++) {
548
+ const index = this.readUInt16();
549
+ indexes.push(index);
550
+ }
551
+
552
+ return {indexes};
553
+ }
554
+
555
+ throw new Error("Read structured selector was outside [0-15] range.");
556
+ }
557
+
558
+ private writeListTuyaDataPointValues(dpValues: TuyaDataPointValue[]): void {
559
+ for (const dpValue of dpValues) {
560
+ this.writeUInt8(dpValue.dp);
561
+ this.writeUInt8(dpValue.datatype);
562
+ const dataLen = dpValue.data.length;
563
+ // UInt16BE
564
+ this.writeUInt8((dataLen >> 8) & 0xff);
565
+ this.writeUInt8(dataLen & 0xff);
566
+ this.writeBuffer(dpValue.data, dataLen);
567
+ }
568
+ }
569
+
570
+ private readListTuyaDataPointValues(): TuyaDataPointValue[] {
571
+ const value: TuyaDataPointValue[] = [];
572
+
573
+ // XXX: doesn't work if buffer has more unrelated fields after this one
574
+ while (this.isMore()) {
575
+ try {
576
+ const dp = this.readUInt8();
577
+ const datatype = this.readUInt8();
578
+ const len_hi = this.readUInt8();
579
+ const len_lo = this.readUInt8();
580
+ const data = this.readBuffer(len_lo + (len_hi << 8));
581
+ value.push({dp, datatype, data});
582
+ } catch {
583
+ break;
584
+ }
585
+ }
586
+
587
+ return value;
588
+ }
589
+
590
+ private writeListMiboxerZones(values: MiboxerZone[]): void {
591
+ this.writeUInt8(values.length);
592
+
593
+ for (const value of values) {
594
+ this.writeUInt16(value.groupId);
595
+ this.writeUInt8(value.zoneNum);
596
+ }
597
+ }
598
+
599
+ private readListMiboxerZones(): MiboxerZone[] {
600
+ const value: MiboxerZone[] = [];
601
+ const len = this.readUInt8();
602
+
603
+ for (let i = 0; i < len; i++) {
604
+ const groupId = this.readUInt16();
605
+ const zoneNum = this.readUInt8();
606
+
607
+ value.push({groupId, zoneNum});
608
+ }
609
+
610
+ return value;
611
+ }
612
+
613
+ private writeBigEndianUInt24(value: number): void {
614
+ this.position = this.buffer.writeUIntBE(value, this.position, 3);
615
+ }
616
+
617
+ private readBigEndianUInt24(): number {
618
+ const value = this.buffer.readUIntBE(this.position, 3);
619
+ this.position += 3;
620
+ return value;
621
+ }
622
+
623
+ // NOTE: writeMiStruct is not supported.
624
+ private readMiStruct(): Record<number, number | number[]> {
625
+ const length = this.readUInt8();
626
+ const value: Record<number, number | number[]> = {};
627
+
628
+ if (length === UINT8_NON_VALUE) {
629
+ return value;
630
+ }
631
+
632
+ for (let i = 0; i < length; i++) {
633
+ const index = this.readUInt8();
634
+ const dataType = this.readUInt8();
635
+ value[index] = this.read(dataType, {});
636
+
637
+ const remaining = this.buffer.length - this.position;
638
+ if (remaining <= 1) {
639
+ if (remaining === 1) {
640
+ // Some Xiaomi structs have a trailing byte, skip it.
641
+ this.position += 1;
642
+ }
643
+ break;
644
+ }
645
+ }
646
+
647
+ return value;
648
+ }
649
+ // biome-ignore lint/suspicious/noExplicitAny: API
650
+ public write(type: DataType | BuffaloZclDataType, value: any, options: BuffaloZclOptions): void {
651
+ switch (type) {
652
+ case DataType.NO_DATA:
653
+ case DataType.UNKNOWN: {
654
+ return; // nothing to write
655
+ }
656
+ case DataType.BOOLEAN:
657
+ case DataType.DATA8:
658
+ case DataType.BITMAP8:
659
+ case DataType.UINT8:
660
+ case DataType.ENUM8: {
661
+ this.writeUInt8(value);
662
+ break;
663
+ }
664
+ case DataType.DATA16:
665
+ case DataType.BITMAP16:
666
+ case DataType.UINT16:
667
+ case DataType.ENUM16:
668
+ case DataType.CLUSTER_ID:
669
+ case DataType.ATTR_ID: {
670
+ this.writeUInt16(value);
671
+ break;
672
+ }
673
+ case DataType.DATA24:
674
+ case DataType.BITMAP24:
675
+ case DataType.UINT24: {
676
+ this.writeUInt24(value);
677
+ break;
678
+ }
679
+ case DataType.DATA32:
680
+ case DataType.BITMAP32:
681
+ case DataType.UINT32:
682
+ case DataType.UTC:
683
+ case DataType.BAC_OID: {
684
+ this.writeUInt32(value);
685
+ break;
686
+ }
687
+ case DataType.DATA40:
688
+ case DataType.BITMAP40:
689
+ case DataType.UINT40: {
690
+ this.writeUInt40(value);
691
+ break;
692
+ }
693
+ case DataType.DATA48:
694
+ case DataType.BITMAP48:
695
+ case DataType.UINT48: {
696
+ this.writeUInt48(value);
697
+ break;
698
+ }
699
+ case DataType.DATA56:
700
+ case DataType.BITMAP56:
701
+ case DataType.UINT56: {
702
+ this.writeUInt56(value);
703
+ break;
704
+ }
705
+ case DataType.DATA64:
706
+ case DataType.BITMAP64:
707
+ case DataType.UINT64: {
708
+ this.writeUInt64(value);
709
+ break;
710
+ }
711
+ case DataType.INT8: {
712
+ this.writeInt8(value);
713
+ break;
714
+ }
715
+ case DataType.INT16: {
716
+ this.writeInt16(value);
717
+ break;
718
+ }
719
+ case DataType.INT24: {
720
+ this.writeInt24(value);
721
+ break;
722
+ }
723
+ case DataType.INT32: {
724
+ this.writeInt32(value);
725
+ break;
726
+ }
727
+ case DataType.INT40: {
728
+ this.writeInt40(value);
729
+ break;
730
+ }
731
+ case DataType.INT48: {
732
+ this.writeInt48(value);
733
+ break;
734
+ }
735
+ case DataType.INT56: {
736
+ this.writeInt56(value);
737
+ break;
738
+ }
739
+ case DataType.INT64: {
740
+ this.writeInt64(value);
741
+ break;
742
+ }
743
+ // case DataType.SEMI_PREC: {
744
+ // // https://tc39.es/proposal-float16array/
745
+ // // not currently used
746
+ // this.writeSemiFloatLE(value);
747
+ // break;
748
+ // }
749
+ case DataType.SINGLE_PREC: {
750
+ this.writeFloatLE(value);
751
+ break;
752
+ }
753
+ case DataType.DOUBLE_PREC: {
754
+ this.writeDoubleLE(value);
755
+ break;
756
+ }
757
+ case DataType.OCTET_STR: {
758
+ this.writeOctetStr(value);
759
+ break;
760
+ }
761
+ case DataType.CHAR_STR: {
762
+ this.writeCharStr(value);
763
+ break;
764
+ }
765
+ case DataType.LONG_OCTET_STR: {
766
+ this.writeLongOctetStr(value);
767
+ break;
768
+ }
769
+ case DataType.LONG_CHAR_STR: {
770
+ this.writeLongCharStr(value);
771
+ break;
772
+ }
773
+ case DataType.ARRAY:
774
+ case DataType.SET:
775
+ case DataType.BAG: {
776
+ this.writeArray(value);
777
+ break;
778
+ }
779
+ case DataType.STRUCT: {
780
+ this.writeStruct(value);
781
+ break;
782
+ }
783
+ case DataType.TOD: {
784
+ this.writeToD(value);
785
+ break;
786
+ }
787
+ case DataType.DATE: {
788
+ this.writeDate(value);
789
+ break;
790
+ }
791
+ case DataType.IEEE_ADDR: {
792
+ this.writeIeeeAddr(value);
793
+ break;
794
+ }
795
+ case DataType.SEC_KEY: {
796
+ this.writeBuffer(value, SEC_KEY_LENGTH);
797
+ break;
798
+ }
799
+ case BuffaloZclDataType.USE_DATA_TYPE: {
800
+ if (options.dataType == null) {
801
+ if (Buffer.isBuffer(value) || isNumberArray(value)) {
802
+ this.writeBuffer(value, value.length);
803
+ break;
804
+ }
805
+
806
+ throw new Error("Cannot write USE_DATA_TYPE without dataType option specified");
807
+ }
808
+
809
+ this.write(options.dataType, value, options);
810
+ break;
811
+ }
812
+ case BuffaloZclDataType.LIST_UINT8: {
813
+ this.writeListUInt8(value);
814
+ break;
815
+ }
816
+ case BuffaloZclDataType.LIST_UINT16: {
817
+ this.writeListUInt16(value);
818
+ break;
819
+ }
820
+ case BuffaloZclDataType.LIST_UINT24: {
821
+ this.writeListUInt24(value);
822
+ break;
823
+ }
824
+ case BuffaloZclDataType.LIST_UINT32: {
825
+ this.writeListUInt32(value);
826
+ break;
827
+ }
828
+ case BuffaloZclDataType.LIST_ZONEINFO: {
829
+ this.writeListZoneInfo(value);
830
+ break;
831
+ }
832
+ case BuffaloZclDataType.EXTENSION_FIELD_SETS: {
833
+ this.writeExtensionFieldSets(value);
834
+ break;
835
+ }
836
+ case BuffaloZclDataType.LIST_THERMO_TRANSITIONS: {
837
+ this.writeListThermoTransitions(value);
838
+ break;
839
+ }
840
+ case BuffaloZclDataType.BUFFER: {
841
+ // XXX: inconsistent with read that allows partial with options.length, here always "whole"
842
+ this.writeBuffer(value, value.length);
843
+ break;
844
+ }
845
+ case BuffaloZclDataType.GPD_FRAME: {
846
+ this.writeGpdFrame(value);
847
+ break;
848
+ }
849
+ case BuffaloZclDataType.STRUCTURED_SELECTOR: {
850
+ this.writeStructuredSelector(value);
851
+ break;
852
+ }
853
+ case BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES: {
854
+ this.writeListTuyaDataPointValues(value);
855
+ break;
856
+ }
857
+ case BuffaloZclDataType.LIST_MIBOXER_ZONES: {
858
+ this.writeListMiboxerZones(value);
859
+ break;
860
+ }
861
+ case BuffaloZclDataType.BIG_ENDIAN_UINT24: {
862
+ this.writeBigEndianUInt24(value);
863
+ break;
864
+ }
865
+ default: {
866
+ // In case the type is undefined, write it as a buffer to easily allow for custom types
867
+ // e.g. for https://github.com/Koenkk/zigbee-herdsman/issues/127
868
+ if (Buffer.isBuffer(value) || isNumberArray(value)) {
869
+ this.writeBuffer(value, value.length);
870
+ break;
871
+ }
872
+
873
+ throw new Error(`Write for '${type}' not available`);
874
+ }
875
+ }
876
+ }
877
+
878
+ // biome-ignore lint/suspicious/noExplicitAny: API
879
+ public read(type: DataType | BuffaloZclDataType, options: BuffaloZclOptions): any {
880
+ switch (type) {
881
+ case DataType.NO_DATA:
882
+ case DataType.UNKNOWN: {
883
+ return; // nothing to write
884
+ }
885
+ case DataType.BOOLEAN:
886
+ case DataType.DATA8:
887
+ case DataType.BITMAP8:
888
+ case DataType.UINT8:
889
+ case DataType.ENUM8: {
890
+ return this.readUInt8();
891
+ }
892
+ case DataType.DATA16:
893
+ case DataType.BITMAP16:
894
+ case DataType.UINT16:
895
+ case DataType.ENUM16:
896
+ case DataType.CLUSTER_ID:
897
+ case DataType.ATTR_ID: {
898
+ return this.readUInt16();
899
+ }
900
+ case DataType.DATA24:
901
+ case DataType.BITMAP24:
902
+ case DataType.UINT24: {
903
+ return this.readUInt24();
904
+ }
905
+ case DataType.DATA32:
906
+ case DataType.BITMAP32:
907
+ case DataType.UINT32:
908
+ case DataType.UTC:
909
+ case DataType.BAC_OID: {
910
+ return this.readUInt32();
911
+ }
912
+ case DataType.DATA40:
913
+ case DataType.BITMAP40:
914
+ case DataType.UINT40: {
915
+ return this.readUInt40();
916
+ }
917
+ case DataType.DATA48:
918
+ case DataType.BITMAP48:
919
+ case DataType.UINT48: {
920
+ return this.readUInt48();
921
+ }
922
+ case DataType.DATA56:
923
+ case DataType.BITMAP56:
924
+ case DataType.UINT56: {
925
+ return this.readUInt56();
926
+ }
927
+ case DataType.DATA64:
928
+ case DataType.BITMAP64:
929
+ case DataType.UINT64: {
930
+ return this.readUInt64();
931
+ }
932
+ case DataType.INT8: {
933
+ return this.readInt8();
934
+ }
935
+ case DataType.INT16: {
936
+ return this.readInt16();
937
+ }
938
+ case DataType.INT24: {
939
+ return this.readInt24();
940
+ }
941
+ case DataType.INT32: {
942
+ return this.readInt32();
943
+ }
944
+ case DataType.INT40: {
945
+ return this.readInt40();
946
+ }
947
+ case DataType.INT48: {
948
+ return this.readInt48();
949
+ }
950
+ case DataType.INT56: {
951
+ return this.readInt56();
952
+ }
953
+ case DataType.INT64: {
954
+ return this.readInt64();
955
+ }
956
+ // case DataType.SEMI_PREC: {
957
+ // // https://tc39.es/proposal-float16array/
958
+ // // not currently used
959
+ // return this.readSemiFloatLE();
960
+ // }
961
+ case DataType.SINGLE_PREC: {
962
+ return this.readFloatLE();
963
+ }
964
+ case DataType.DOUBLE_PREC: {
965
+ return this.readDoubleLE();
966
+ }
967
+ case DataType.OCTET_STR: {
968
+ return this.readOctetStr();
969
+ }
970
+ case DataType.CHAR_STR: {
971
+ return this.readCharStr();
972
+ }
973
+ case DataType.LONG_OCTET_STR: {
974
+ return this.readLongOctetStr();
975
+ }
976
+ case DataType.LONG_CHAR_STR: {
977
+ return this.readLongCharStr();
978
+ }
979
+ case DataType.ARRAY:
980
+ case DataType.SET:
981
+ case DataType.BAG: {
982
+ return this.readArray();
983
+ }
984
+ case DataType.STRUCT: {
985
+ return this.readStruct();
986
+ }
987
+ case DataType.TOD: {
988
+ return this.readToD();
989
+ }
990
+ case DataType.DATE: {
991
+ return this.readDate();
992
+ }
993
+ case DataType.IEEE_ADDR: {
994
+ return this.readIeeeAddr();
995
+ }
996
+ case DataType.SEC_KEY: {
997
+ return this.readBuffer(SEC_KEY_LENGTH);
998
+ }
999
+ case BuffaloZclDataType.USE_DATA_TYPE: {
1000
+ if (options.dataType == null) {
1001
+ return this.readBuffer(options.length ?? this.buffer.length);
1002
+ }
1003
+
1004
+ return this.read(options.dataType, options);
1005
+ }
1006
+ case BuffaloZclDataType.LIST_UINT8: {
1007
+ if (options.length == null) {
1008
+ throw new Error("Cannot read LIST_UINT8 without length option specified");
1009
+ }
1010
+
1011
+ return this.readListUInt8(options.length);
1012
+ }
1013
+ case BuffaloZclDataType.LIST_UINT16: {
1014
+ if (options.length == null) {
1015
+ throw new Error("Cannot read LIST_UINT16 without length option specified");
1016
+ }
1017
+
1018
+ return this.readListUInt16(options.length);
1019
+ }
1020
+ case BuffaloZclDataType.LIST_UINT24: {
1021
+ if (options.length == null) {
1022
+ throw new Error("Cannot read LIST_UINT24 without length option specified");
1023
+ }
1024
+
1025
+ return this.readListUInt24(options.length);
1026
+ }
1027
+ case BuffaloZclDataType.LIST_UINT32: {
1028
+ if (options.length == null) {
1029
+ throw new Error("Cannot read LIST_UINT32 without length option specified");
1030
+ }
1031
+
1032
+ return this.readListUInt32(options.length);
1033
+ }
1034
+ case BuffaloZclDataType.LIST_ZONEINFO: {
1035
+ if (options.length == null) {
1036
+ throw new Error("Cannot read LIST_ZONEINFO without length option specified");
1037
+ }
1038
+
1039
+ return this.readListZoneInfo(options.length);
1040
+ }
1041
+ case BuffaloZclDataType.EXTENSION_FIELD_SETS: {
1042
+ return this.readExtensionFieldSets();
1043
+ }
1044
+ case BuffaloZclDataType.LIST_THERMO_TRANSITIONS: {
1045
+ return this.readListThermoTransitions(options);
1046
+ }
1047
+ case BuffaloZclDataType.BUFFER: {
1048
+ // if length option not specified, read the whole buffer
1049
+ return this.readBuffer(options.length ?? this.buffer.length);
1050
+ }
1051
+ case BuffaloZclDataType.GPD_FRAME: {
1052
+ return this.readGpdFrame(options);
1053
+ }
1054
+ case BuffaloZclDataType.STRUCTURED_SELECTOR: {
1055
+ return this.readStructuredSelector();
1056
+ }
1057
+ case BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES: {
1058
+ return this.readListTuyaDataPointValues();
1059
+ }
1060
+ case BuffaloZclDataType.LIST_MIBOXER_ZONES: {
1061
+ return this.readListMiboxerZones();
1062
+ }
1063
+ case BuffaloZclDataType.BIG_ENDIAN_UINT24: {
1064
+ return this.readBigEndianUInt24();
1065
+ }
1066
+ case BuffaloZclDataType.MI_STRUCT: {
1067
+ return this.readMiStruct();
1068
+ }
1069
+ }
1070
+
1071
+ throw new Error(`Read for '${type}' not available`);
1072
+ }
1073
+ }