@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,1056 @@
1
+ import {describe, expect, it} from "vitest";
2
+ import * as Zcl from "../../../src/zspec/zcl";
3
+ import {BuffaloZcl} from "../../../src/zspec/zcl/buffaloZcl";
4
+ import {uint16To8Array, uint32To8Array, uint56To8Array} from "../../utils/math";
5
+
6
+ /** Header with Global frame type */
7
+ const GLOBAL_HEADER = new Zcl.Header(
8
+ {
9
+ frameType: Zcl.FrameType.GLOBAL,
10
+ manufacturerSpecific: false,
11
+ direction: Zcl.Direction.CLIENT_TO_SERVER,
12
+ disableDefaultResponse: false,
13
+ reservedBits: 0,
14
+ },
15
+ undefined,
16
+ 123,
17
+ Zcl.Foundation.read.ID,
18
+ );
19
+ const GLOBAL_HEADER_BUFFER = Buffer.from([0, 123, Zcl.Foundation.read.ID]);
20
+
21
+ /** Header with Global frame type and server to client direction */
22
+ const GLOBAL_RSP_HEADER = new Zcl.Header(
23
+ {
24
+ frameType: Zcl.FrameType.GLOBAL,
25
+ manufacturerSpecific: false,
26
+ direction: Zcl.Direction.SERVER_TO_CLIENT,
27
+ disableDefaultResponse: false,
28
+ reservedBits: 0,
29
+ },
30
+ undefined,
31
+ 78,
32
+ Zcl.Foundation.readRsp.ID,
33
+ );
34
+ const GLOBAL_RSP_HEADER_BUFFER = Buffer.from([8, 78, Zcl.Foundation.readRsp.ID]);
35
+
36
+ /** Header with Global frame type with command report */
37
+ const GLOBAL_HEADER_REPORT = new Zcl.Header(
38
+ {
39
+ frameType: Zcl.FrameType.GLOBAL,
40
+ manufacturerSpecific: false,
41
+ direction: Zcl.Direction.CLIENT_TO_SERVER,
42
+ disableDefaultResponse: false,
43
+ reservedBits: 0,
44
+ },
45
+ undefined,
46
+ 123,
47
+ Zcl.Foundation.report.ID,
48
+ );
49
+ const GLOBAL_HEADER_REPORT_BUFFER = Buffer.from([0, 123, Zcl.Foundation.report.ID]);
50
+
51
+ /** Header with Global frame type and server to client direction including condition-based parameters */
52
+ const GLOBAL_CONDITION_HEADER = new Zcl.Header(
53
+ {
54
+ frameType: Zcl.FrameType.GLOBAL,
55
+ manufacturerSpecific: false,
56
+ direction: Zcl.Direction.SERVER_TO_CLIENT,
57
+ disableDefaultResponse: false,
58
+ reservedBits: 0,
59
+ },
60
+ undefined,
61
+ 78,
62
+ Zcl.Foundation.configReport.ID,
63
+ );
64
+ const GLOBAL_CONDITION_HEADER_BUFFER = Buffer.from([8, 78, Zcl.Foundation.configReport.ID]);
65
+
66
+ /** Header with Specific frame type */
67
+ const SPECIFIC_HEADER = new Zcl.Header(
68
+ {
69
+ frameType: Zcl.FrameType.SPECIFIC,
70
+ manufacturerSpecific: false,
71
+ direction: Zcl.Direction.CLIENT_TO_SERVER,
72
+ disableDefaultResponse: false,
73
+ reservedBits: 0,
74
+ },
75
+ undefined,
76
+ 44,
77
+ Zcl.Clusters.genAlarms.commands.getAlarm.ID,
78
+ );
79
+ const SPECIFIC_HEADER_BUFFER = Buffer.from([1, 44, Zcl.Clusters.genAlarms.commands.getAlarm.ID]);
80
+
81
+ /** Header with Specific frame type including condition-based parameters */
82
+ const SPECIFIC_CONDITION_HEADER = new Zcl.Header(
83
+ {
84
+ frameType: Zcl.FrameType.SPECIFIC,
85
+ manufacturerSpecific: false,
86
+ direction: Zcl.Direction.SERVER_TO_CLIENT,
87
+ disableDefaultResponse: false,
88
+ reservedBits: 0,
89
+ },
90
+ undefined,
91
+ 45,
92
+ Zcl.Clusters.genOta.commandsResponse.queryNextImageResponse.ID,
93
+ );
94
+ const SPECIFIC_CONDITION_HEADER_BUFFER = Buffer.from([9, 45, Zcl.Clusters.genOta.commandsResponse.queryNextImageResponse.ID]);
95
+
96
+ /** Header with Specific frame type and server to client direction */
97
+ const SPECIFIC_RSP_HEADER = new Zcl.Header(
98
+ {
99
+ frameType: Zcl.FrameType.SPECIFIC,
100
+ manufacturerSpecific: false,
101
+ direction: Zcl.Direction.SERVER_TO_CLIENT,
102
+ disableDefaultResponse: false,
103
+ reservedBits: 0,
104
+ },
105
+ undefined,
106
+ 53,
107
+ Zcl.Clusters.genAlarms.commandsResponse.alarm.ID,
108
+ );
109
+ const SPECIFIC_RSP_HEADER_BUFFER = Buffer.from([9, 53, Zcl.Clusters.genAlarms.commandsResponse.alarm.ID]);
110
+
111
+ /** Header with manufacturer-specific */
112
+ const MANUF_SPE_HEADER = new Zcl.Header(
113
+ {
114
+ frameType: Zcl.FrameType.GLOBAL,
115
+ manufacturerSpecific: true,
116
+ direction: Zcl.Direction.CLIENT_TO_SERVER,
117
+ disableDefaultResponse: false,
118
+ reservedBits: 0,
119
+ },
120
+ Zcl.ManufacturerCode.AAC_TECHNOLOGIES_HOLDING,
121
+ 234,
122
+ Zcl.Foundation.read.ID,
123
+ );
124
+ const MANUF_SPE_HEADER_BUFFER = Buffer.from([4, ...uint16To8Array(Zcl.ManufacturerCode.AAC_TECHNOLOGIES_HOLDING), 234, Zcl.Foundation.read.ID]);
125
+
126
+ /** Frame of Global type */
127
+ const GLOBAL_FRAME = Zcl.Frame.create(
128
+ GLOBAL_HEADER.frameControl.frameType,
129
+ GLOBAL_HEADER.frameControl.direction,
130
+ GLOBAL_HEADER.frameControl.disableDefaultResponse,
131
+ GLOBAL_HEADER.manufacturerCode,
132
+ GLOBAL_HEADER.transactionSequenceNumber,
133
+ GLOBAL_HEADER.commandIdentifier,
134
+ Zcl.Clusters.genBasic.ID,
135
+ [{attrId: 256}] /*payload*/,
136
+ {} /*custom clusters*/,
137
+ GLOBAL_HEADER.frameControl.reservedBits,
138
+ );
139
+ const GLOBAL_FRAME_BUFFER = Buffer.concat([GLOBAL_HEADER_BUFFER, Buffer.from(uint16To8Array(256))]);
140
+ const GLOBAL_FRAME_STRING = `{"header":{"frameControl":{"reservedBits":0,"frameType":0,"direction":0,"disableDefaultResponse":false,"manufacturerSpecific":false},"transactionSequenceNumber":123,"commandIdentifier":0},"payload":[{"attrId":256}],"command":{"ID":0,"name":"read","parameters":[{"name":"attrId","type":9}],"response":1}}`;
141
+
142
+ /** Frame of Global type with BigInt */
143
+ const GLOBAL_FRAME_BIG_INT = Zcl.Frame.create(
144
+ GLOBAL_HEADER_REPORT.frameControl.frameType,
145
+ GLOBAL_HEADER_REPORT.frameControl.direction,
146
+ GLOBAL_HEADER_REPORT.frameControl.disableDefaultResponse,
147
+ GLOBAL_HEADER_REPORT.manufacturerCode,
148
+ GLOBAL_HEADER_REPORT.transactionSequenceNumber,
149
+ GLOBAL_HEADER_REPORT.commandIdentifier,
150
+ Zcl.Clusters.haApplianceIdentification.ID,
151
+ [{attrId: 0, dataType: Zcl.DataType.UINT56, attrData: 200n}] /*payload*/,
152
+ {} /*custom clusters*/,
153
+ GLOBAL_HEADER_REPORT.frameControl.reservedBits,
154
+ );
155
+ const GLOBAL_FRAME_BIG_INT_BUFFER = Buffer.concat([
156
+ GLOBAL_HEADER_REPORT_BUFFER,
157
+ Buffer.from(uint16To8Array(0)),
158
+ Buffer.from([Zcl.DataType.UINT56]),
159
+ Buffer.from(uint56To8Array(200n)),
160
+ ]);
161
+ const GLOBAL_FRAME_BIG_INT_STRING = `{"header":{"frameControl":{"reservedBits":0,"frameType":0,"direction":0,"disableDefaultResponse":false,"manufacturerSpecific":false},"transactionSequenceNumber":123,"commandIdentifier":10},"payload":[{"attrId":0,"dataType":38,"attrData":"200"}],"command":{"ID":10,"name":"report","parameters":[{"name":"attrId","type":9},{"name":"dataType","type":8},{"name":"attrData","type":1000}]}}`;
162
+
163
+ /** Frame of Global type and response command */
164
+ const GLOBAL_RSP_FRAME = Zcl.Frame.create(
165
+ GLOBAL_RSP_HEADER.frameControl.frameType,
166
+ GLOBAL_RSP_HEADER.frameControl.direction,
167
+ GLOBAL_RSP_HEADER.frameControl.disableDefaultResponse,
168
+ GLOBAL_RSP_HEADER.manufacturerCode,
169
+ GLOBAL_RSP_HEADER.transactionSequenceNumber,
170
+ GLOBAL_RSP_HEADER.commandIdentifier,
171
+ Zcl.Clusters.genPowerCfg.ID,
172
+ [{attrId: 256, status: Zcl.Status.SUCCESS, dataType: Zcl.DataType.ENUM8, attrData: 127}] /*payload*/,
173
+ {} /*custom clusters*/,
174
+ GLOBAL_RSP_HEADER.frameControl.reservedBits,
175
+ );
176
+ const GLOBAL_RSP_FRAME_BUFFER = Buffer.concat([
177
+ GLOBAL_RSP_HEADER_BUFFER,
178
+ Buffer.from([...uint16To8Array(256), Zcl.Status.SUCCESS, Zcl.DataType.ENUM8, 127]),
179
+ ]);
180
+ const GLOBAL_RSP_FRAME_STRING = `{"header":{"frameControl":{"reservedBits":0,"frameType":0,"direction":1,"disableDefaultResponse":false,"manufacturerSpecific":false},"transactionSequenceNumber":78,"commandIdentifier":1},"payload":[{"attrId":256,"status":0,"dataType":48,"attrData":127}],"command":{"ID":1,"name":"readRsp","parameters":[{"name":"attrId","type":9},{"name":"status","type":8},{"name":"dataType","type":8,"conditions":[{"type":"fieldEquals","field":"status","value":0}]},{"name":"attrData","type":1000,"conditions":[{"type":"fieldEquals","field":"status","value":0}]}]}}`;
181
+
182
+ /** Frame of Global type with no payload */
183
+ const GLOBAL_FRAME_NO_PAYLOAD = Zcl.Frame.create(
184
+ GLOBAL_HEADER.frameControl.frameType,
185
+ GLOBAL_HEADER.frameControl.direction,
186
+ GLOBAL_HEADER.frameControl.disableDefaultResponse,
187
+ GLOBAL_HEADER.manufacturerCode,
188
+ GLOBAL_HEADER.transactionSequenceNumber,
189
+ GLOBAL_HEADER.commandIdentifier,
190
+ Zcl.Clusters.genBasic.ID,
191
+ [] /*payload*/,
192
+ {} /*custom clusters*/,
193
+ GLOBAL_HEADER.frameControl.reservedBits,
194
+ );
195
+ const GLOBAL_FRAME_NO_PAYLOAD_BUFFER = Buffer.concat([GLOBAL_HEADER_BUFFER]);
196
+ const GLOBAL_FRAME_NO_PAYLOAD_STRING = `{"header":{"frameControl":{"reservedBits":0,"frameType":0,"direction":0,"disableDefaultResponse":false,"manufacturerSpecific":false},"transactionSequenceNumber":123,"commandIdentifier":0},"payload":[],"command":{"ID":0,"name":"read","parameters":[{"name":"attrId","type":9}],"response":1}}`;
197
+
198
+ /** Frame of Global type with condition-based parameters */
199
+ const GLOBAL_CONDITION_FRAME = Zcl.Frame.create(
200
+ GLOBAL_CONDITION_HEADER.frameControl.frameType,
201
+ GLOBAL_CONDITION_HEADER.frameControl.direction,
202
+ GLOBAL_CONDITION_HEADER.frameControl.disableDefaultResponse,
203
+ GLOBAL_CONDITION_HEADER.manufacturerCode,
204
+ GLOBAL_CONDITION_HEADER.transactionSequenceNumber,
205
+ GLOBAL_CONDITION_HEADER.commandIdentifier,
206
+ Zcl.Clusters.genOnOff.ID,
207
+ [{direction: Zcl.Direction.SERVER_TO_CLIENT, attrId: 256, timeout: 10000}] /*payload*/,
208
+ {} /*custom clusters*/,
209
+ GLOBAL_CONDITION_HEADER.frameControl.reservedBits,
210
+ );
211
+ const GLOBAL_CONDITION_FRAME_BUFFER = Buffer.concat([
212
+ GLOBAL_CONDITION_HEADER_BUFFER,
213
+ Buffer.from([Zcl.Direction.SERVER_TO_CLIENT, ...uint16To8Array(256), ...uint16To8Array(10000)]),
214
+ ]);
215
+ const GLOBAL_CONDITION_FRAME_STRING = `{"header":{"frameControl":{"reservedBits":0,"frameType":0,"direction":1,"disableDefaultResponse":false,"manufacturerSpecific":false},"transactionSequenceNumber":78,"commandIdentifier":6},"payload":[{"direction":1,"attrId":256,"timeout":10000}],"command":{"ID":6,"name":"configReport","parameters":[{"name":"direction","type":8},{"name":"attrId","type":9},{"name":"dataType","type":8,"conditions":[{"type":"fieldEquals","field":"direction","value":0}]},{"name":"minRepIntval","type":9,"conditions":[{"type":"fieldEquals","field":"direction","value":0}]},{"name":"maxRepIntval","type":9,"conditions":[{"type":"fieldEquals","field":"direction","value":0}]},{"name":"repChange","type":1000,"conditions":[{"type":"fieldEquals","field":"direction","value":0},{"type":"dataTypeValueTypeEquals","value":"ANALOG"}]},{"name":"timeout","type":9,"conditions":[{"type":"fieldEquals","field":"direction","value":1}]}],"response":7}}`;
216
+
217
+ /** Frame of Specific type */
218
+ const SPECIFIC_FRAME = Zcl.Frame.create(
219
+ SPECIFIC_HEADER.frameControl.frameType,
220
+ SPECIFIC_HEADER.frameControl.direction,
221
+ SPECIFIC_HEADER.frameControl.disableDefaultResponse,
222
+ SPECIFIC_HEADER.manufacturerCode,
223
+ SPECIFIC_HEADER.transactionSequenceNumber,
224
+ SPECIFIC_HEADER.commandIdentifier,
225
+ Zcl.Clusters.genAlarms.ID,
226
+ {} /*payload*/,
227
+ {} /*custom clusters*/,
228
+ SPECIFIC_HEADER.frameControl.reservedBits,
229
+ );
230
+ const SPECIFIC_FRAME_BUFFER = Buffer.concat([SPECIFIC_HEADER_BUFFER]);
231
+ const SPECIFIC_FRAME_STRING = `{"header":{"frameControl":{"reservedBits":0,"frameType":1,"direction":0,"disableDefaultResponse":false,"manufacturerSpecific":false},"transactionSequenceNumber":44,"commandIdentifier":2},"payload":{},"command":{"ID":2,"parameters":[],"name":"getAlarm"}}`;
232
+
233
+ /** Frame of Specific type and response command */
234
+ const SPECIFIC_RSP_FRAME = Zcl.Frame.create(
235
+ SPECIFIC_RSP_HEADER.frameControl.frameType,
236
+ SPECIFIC_RSP_HEADER.frameControl.direction,
237
+ SPECIFIC_RSP_HEADER.frameControl.disableDefaultResponse,
238
+ SPECIFIC_RSP_HEADER.manufacturerCode,
239
+ SPECIFIC_RSP_HEADER.transactionSequenceNumber,
240
+ SPECIFIC_RSP_HEADER.commandIdentifier,
241
+ Zcl.Clusters.genAlarms.ID,
242
+ {alarmcode: 246, clusterid: 3456} /*payload*/,
243
+ {} /*custom clusters*/,
244
+ SPECIFIC_RSP_HEADER.frameControl.reservedBits,
245
+ );
246
+ const SPECIFIC_RSP_FRAME_BUFFER = Buffer.concat([SPECIFIC_RSP_HEADER_BUFFER, Buffer.from([246, ...uint16To8Array(3456)])]);
247
+ const SPECIFIC_RSP_FRAME_STRING = `{"header":{"frameControl":{"reservedBits":0,"frameType":1,"direction":1,"disableDefaultResponse":false,"manufacturerSpecific":false},"transactionSequenceNumber":53,"commandIdentifier":0},"payload":{"alarmcode":246,"clusterid":3456},"command":{"ID":0,"parameters":[{"name":"alarmcode","type":48},{"name":"clusterid","type":232}],"required":true,"name":"alarm"}}`;
248
+
249
+ /** Frame of Specific type with condition-based parameters */
250
+ const SPECIFIC_CONDITION_FRAME = Zcl.Frame.create(
251
+ SPECIFIC_CONDITION_HEADER.frameControl.frameType,
252
+ SPECIFIC_CONDITION_HEADER.frameControl.direction,
253
+ SPECIFIC_CONDITION_HEADER.frameControl.disableDefaultResponse,
254
+ SPECIFIC_CONDITION_HEADER.manufacturerCode,
255
+ SPECIFIC_CONDITION_HEADER.transactionSequenceNumber,
256
+ SPECIFIC_CONDITION_HEADER.commandIdentifier,
257
+ Zcl.Clusters.genOta.ID,
258
+ {status: Zcl.Status.ABORT} /*payload*/,
259
+ {} /*custom clusters*/,
260
+ SPECIFIC_CONDITION_HEADER.frameControl.reservedBits,
261
+ );
262
+ const SPECIFIC_CONDITION_FRAME_BUFFER = Buffer.concat([SPECIFIC_CONDITION_HEADER_BUFFER, Buffer.from([149])]);
263
+ const SPECIFIC_CONDITION_FRAME_STRING = `{"header":{"frameControl":{"reservedBits":0,"frameType":1,"direction":1,"disableDefaultResponse":false,"manufacturerSpecific":false},"transactionSequenceNumber":45,"commandIdentifier":2},"payload":{"status":149},"command":{"ID":2,"parameters":[{"name":"status","type":48},{"name":"manufacturerCode","type":33,"conditions":[{"type":"fieldEquals","field":"status","value":0}]},{"name":"imageType","type":33,"conditions":[{"type":"fieldEquals","field":"status","value":0}],"max":65471},{"name":"fileVersion","type":35,"conditions":[{"type":"fieldEquals","field":"status","value":0}]},{"name":"imageSize","type":35,"conditions":[{"type":"fieldEquals","field":"status","value":0}]}],"required":true,"name":"queryNextImageResponse"}}`;
264
+
265
+ /** Frame manufacturer-specific */
266
+ const MANUF_SPE_FRAME = Zcl.Frame.create(
267
+ MANUF_SPE_HEADER.frameControl.frameType,
268
+ MANUF_SPE_HEADER.frameControl.direction,
269
+ MANUF_SPE_HEADER.frameControl.disableDefaultResponse,
270
+ MANUF_SPE_HEADER.manufacturerCode,
271
+ MANUF_SPE_HEADER.transactionSequenceNumber,
272
+ MANUF_SPE_HEADER.commandIdentifier,
273
+ Zcl.Foundation.read.ID,
274
+ [{attrId: 256}] /*payload*/,
275
+ {} /*custom clusters*/,
276
+ MANUF_SPE_HEADER.frameControl.reservedBits,
277
+ );
278
+ const MANUF_SPE_FRAME_BUFFER = Buffer.concat([MANUF_SPE_HEADER_BUFFER, Buffer.from(uint16To8Array(256))]);
279
+ const MANUF_SPE_FRAME_STRING = `{"header":{"frameControl":{"reservedBits":0,"frameType":0,"direction":0,"disableDefaultResponse":false,"manufacturerSpecific":true},"manufacturerCode":4344,"transactionSequenceNumber":234,"commandIdentifier":0},"payload":[{"attrId":256}],"command":{"ID":0,"name":"read","parameters":[{"name":"attrId","type":9}],"response":1}}`;
280
+
281
+ describe("ZCL Frame", () => {
282
+ describe("Validates Parameter Condition", () => {
283
+ it("MINIMUM_REMAINING_BUFFER_BYTES", () => {
284
+ expect(Zcl.Frame.conditionsValid(Zcl.Foundation.configReportRsp.parameters[1], {status: 1}, 3)).toBeTruthy();
285
+ expect(Zcl.Frame.conditionsValid(Zcl.Foundation.configReportRsp.parameters[1], {status: 1}, 2)).toBeFalsy();
286
+ });
287
+
288
+ it("BITMASK_SET", () => {
289
+ expect(Zcl.Frame.conditionsValid(Zcl.Clusters.greenPower.commands.notification.parameters[8], {options: 0x4000}, undefined)).toBeTruthy();
290
+ expect(Zcl.Frame.conditionsValid(Zcl.Clusters.greenPower.commands.notification.parameters[8], {options: 0x4150}, undefined)).toBeTruthy();
291
+ expect(Zcl.Frame.conditionsValid(Zcl.Clusters.greenPower.commands.notification.parameters[8], {options: 0x0400}, undefined)).toBeFalsy();
292
+ expect(Zcl.Frame.conditionsValid(Zcl.Clusters.greenPower.commands.notification.parameters[8], {options: 0x1400}, undefined)).toBeFalsy();
293
+ });
294
+
295
+ it("BITFIELD_ENUM", () => {
296
+ // {param:'options', offset: 0, size: 3, value: 0b000}
297
+ expect(Zcl.Frame.conditionsValid(Zcl.Clusters.greenPower.commands.notification.parameters[1], {options: 0b000}, undefined)).toBeTruthy();
298
+ expect(Zcl.Frame.conditionsValid(Zcl.Clusters.greenPower.commands.notification.parameters[1], {options: 0b1000}, undefined)).toBeTruthy();
299
+ expect(Zcl.Frame.conditionsValid(Zcl.Clusters.greenPower.commands.notification.parameters[1], {options: 0b001}, undefined)).toBeFalsy();
300
+ expect(Zcl.Frame.conditionsValid(Zcl.Clusters.greenPower.commands.notification.parameters[1], {options: 0b011}, undefined)).toBeFalsy();
301
+ expect(Zcl.Frame.conditionsValid(Zcl.Clusters.greenPower.commands.notification.parameters[1], {options: 0b100}, undefined)).toBeFalsy();
302
+ expect(Zcl.Frame.conditionsValid(Zcl.Clusters.greenPower.commands.notification.parameters[1], {options: 0b1010}, undefined)).toBeFalsy();
303
+ });
304
+
305
+ it("multiple including DATA_TYPE_CLASS_EQUAL", () => {
306
+ expect(
307
+ Zcl.Frame.conditionsValid(
308
+ Zcl.Foundation.configReport.parameters[5],
309
+ {direction: Zcl.Direction.CLIENT_TO_SERVER, dataType: Zcl.DataType.UINT8},
310
+ undefined,
311
+ ),
312
+ ).toBeTruthy();
313
+ expect(
314
+ Zcl.Frame.conditionsValid(
315
+ Zcl.Foundation.configReport.parameters[5],
316
+ {direction: Zcl.Direction.CLIENT_TO_SERVER, dataType: Zcl.DataType.DATA8},
317
+ undefined,
318
+ ),
319
+ ).toBeFalsy();
320
+ expect(
321
+ Zcl.Frame.conditionsValid(
322
+ Zcl.Foundation.configReport.parameters[5],
323
+ {direction: Zcl.Direction.SERVER_TO_CLIENT, dataType: Zcl.DataType.UINT8},
324
+ undefined,
325
+ ),
326
+ ).toBeFalsy();
327
+ expect(
328
+ Zcl.Frame.conditionsValid(
329
+ Zcl.Foundation.configReport.parameters[5],
330
+ {direction: Zcl.Direction.SERVER_TO_CLIENT, dataType: Zcl.DataType.DATA8},
331
+ undefined,
332
+ ),
333
+ ).toBeFalsy();
334
+ });
335
+
336
+ it("FIELD_EQUAL", () => {
337
+ expect(Zcl.Frame.conditionsValid(Zcl.Foundation.readRsp.parameters[2], {status: 0}, undefined)).toBeTruthy();
338
+ expect(Zcl.Frame.conditionsValid(Zcl.Foundation.readRsp.parameters[2], {status: 1}, undefined)).toBeFalsy();
339
+ expect(Zcl.Frame.conditionsValid(Zcl.Foundation.writeRsp.parameters[1], {status: 1}, undefined)).toBeTruthy();
340
+ expect(Zcl.Frame.conditionsValid(Zcl.Foundation.writeRsp.parameters[1], {status: 0}, undefined)).toBeFalsy();
341
+ expect(
342
+ Zcl.Frame.conditionsValid(Zcl.Foundation.configReport.parameters[2], {direction: Zcl.Direction.CLIENT_TO_SERVER}, undefined),
343
+ ).toBeTruthy();
344
+ expect(
345
+ Zcl.Frame.conditionsValid(Zcl.Foundation.configReport.parameters[2], {direction: Zcl.Direction.SERVER_TO_CLIENT}, undefined),
346
+ ).toBeFalsy();
347
+ expect(
348
+ Zcl.Frame.conditionsValid(Zcl.Foundation.configReport.parameters[6], {direction: Zcl.Direction.SERVER_TO_CLIENT}, undefined),
349
+ ).toBeTruthy();
350
+ expect(
351
+ Zcl.Frame.conditionsValid(Zcl.Foundation.configReport.parameters[6], {direction: Zcl.Direction.CLIENT_TO_SERVER}, undefined),
352
+ ).toBeFalsy();
353
+ expect(
354
+ Zcl.Frame.conditionsValid(Zcl.Clusters.touchlink.commandsResponse.scanResponse.parameters[13], {numberOfSubDevices: 1}, undefined),
355
+ ).toBeTruthy();
356
+ expect(
357
+ Zcl.Frame.conditionsValid(Zcl.Clusters.touchlink.commandsResponse.scanResponse.parameters[13], {numberOfSubDevices: 0}, undefined),
358
+ ).toBeFalsy();
359
+ expect(
360
+ Zcl.Frame.conditionsValid(Zcl.Clusters.touchlink.commandsResponse.scanResponse.parameters[13], {numberOfSubDevices: 3}, undefined),
361
+ ).toBeFalsy();
362
+ expect(
363
+ Zcl.Frame.conditionsValid(Zcl.Clusters.genOta.commandsResponse.imageNotify.parameters[2], {payloadType: 0}, undefined),
364
+ ).toBeFalsy();
365
+ expect(
366
+ Zcl.Frame.conditionsValid(Zcl.Clusters.genOta.commandsResponse.imageNotify.parameters[2], {payloadType: 1}, undefined),
367
+ ).toBeTruthy();
368
+ expect(
369
+ Zcl.Frame.conditionsValid(Zcl.Clusters.genOta.commandsResponse.imageNotify.parameters[3], {payloadType: 1}, undefined),
370
+ ).toBeFalsy();
371
+ expect(
372
+ Zcl.Frame.conditionsValid(Zcl.Clusters.genOta.commandsResponse.imageNotify.parameters[3], {payloadType: 2}, undefined),
373
+ ).toBeTruthy();
374
+ expect(
375
+ Zcl.Frame.conditionsValid(Zcl.Clusters.genOta.commandsResponse.imageNotify.parameters[4], {payloadType: 2}, undefined),
376
+ ).toBeFalsy();
377
+ expect(
378
+ Zcl.Frame.conditionsValid(Zcl.Clusters.genOta.commandsResponse.imageNotify.parameters[4], {payloadType: 3}, undefined),
379
+ ).toBeTruthy();
380
+ });
381
+ });
382
+
383
+ describe("Header", () => {
384
+ it.each([
385
+ [
386
+ "global",
387
+ {
388
+ frameControl: GLOBAL_HEADER.frameControl,
389
+ manufacturerCode: GLOBAL_HEADER.manufacturerCode,
390
+ transactionSequenceNumber: GLOBAL_HEADER.transactionSequenceNumber,
391
+ commandId: GLOBAL_HEADER.commandIdentifier,
392
+ },
393
+ {written: GLOBAL_HEADER_BUFFER},
394
+ ],
395
+ [
396
+ "global response",
397
+ {
398
+ frameControl: GLOBAL_RSP_HEADER.frameControl,
399
+ manufacturerCode: GLOBAL_RSP_HEADER.manufacturerCode,
400
+ transactionSequenceNumber: GLOBAL_RSP_HEADER.transactionSequenceNumber,
401
+ commandId: GLOBAL_RSP_HEADER.commandIdentifier,
402
+ },
403
+ {written: GLOBAL_RSP_HEADER_BUFFER},
404
+ ],
405
+ [
406
+ "specific",
407
+ {
408
+ frameControl: SPECIFIC_HEADER.frameControl,
409
+ manufacturerCode: SPECIFIC_HEADER.manufacturerCode,
410
+ transactionSequenceNumber: SPECIFIC_HEADER.transactionSequenceNumber,
411
+ commandId: SPECIFIC_HEADER.commandIdentifier,
412
+ },
413
+ {written: SPECIFIC_HEADER_BUFFER},
414
+ ],
415
+ [
416
+ "manufacturer-specific",
417
+ {
418
+ frameControl: MANUF_SPE_HEADER.frameControl,
419
+ manufacturerCode: MANUF_SPE_HEADER.manufacturerCode,
420
+ transactionSequenceNumber: MANUF_SPE_HEADER.transactionSequenceNumber,
421
+ commandId: MANUF_SPE_HEADER.commandIdentifier,
422
+ },
423
+ {written: MANUF_SPE_HEADER_BUFFER},
424
+ ],
425
+ [
426
+ "disable default response",
427
+ {
428
+ frameControl: {
429
+ frameType: Zcl.FrameType.GLOBAL,
430
+ manufacturerSpecific: false,
431
+ direction: Zcl.Direction.CLIENT_TO_SERVER,
432
+ disableDefaultResponse: true,
433
+ reservedBits: 0,
434
+ },
435
+ manufacturerCode: undefined,
436
+ transactionSequenceNumber: 234,
437
+ commandId: 1,
438
+ },
439
+ {written: Buffer.from([16, 234, 1])},
440
+ ],
441
+ [
442
+ "reserved bits - non-compliant use",
443
+ {
444
+ frameControl: {
445
+ frameType: Zcl.FrameType.GLOBAL,
446
+ manufacturerSpecific: false,
447
+ direction: Zcl.Direction.CLIENT_TO_SERVER,
448
+ disableDefaultResponse: false,
449
+ reservedBits: 7,
450
+ },
451
+ manufacturerCode: undefined,
452
+ transactionSequenceNumber: 234,
453
+ commandId: 1,
454
+ },
455
+ {written: Buffer.from([224, 234, 1])},
456
+ ],
457
+ [
458
+ "specific manufacturer-specific",
459
+ {
460
+ frameControl: {
461
+ frameType: Zcl.FrameType.SPECIFIC,
462
+ manufacturerSpecific: true,
463
+ direction: Zcl.Direction.CLIENT_TO_SERVER,
464
+ disableDefaultResponse: false,
465
+ reservedBits: 0,
466
+ },
467
+ manufacturerCode: Zcl.ManufacturerCode.S3C,
468
+ transactionSequenceNumber: 234,
469
+ commandId: 1,
470
+ },
471
+ {written: Buffer.from([5, ...uint16To8Array(Zcl.ManufacturerCode.S3C), 234, 1])},
472
+ ],
473
+ [
474
+ "all non-zero - non-compliant use of reservedBits",
475
+ {
476
+ frameControl: {
477
+ frameType: Zcl.FrameType.SPECIFIC,
478
+ manufacturerSpecific: true,
479
+ direction: Zcl.Direction.SERVER_TO_CLIENT,
480
+ disableDefaultResponse: true,
481
+ reservedBits: 3,
482
+ },
483
+ manufacturerCode: Zcl.ManufacturerCode.BOSCH_SECURITY_SYSTEMS_INC,
484
+ transactionSequenceNumber: 234,
485
+ commandId: 1,
486
+ },
487
+ {written: Buffer.from([125, ...uint16To8Array(Zcl.ManufacturerCode.BOSCH_SECURITY_SYSTEMS_INC), 234, 1])},
488
+ ],
489
+ ])("Reads & Writes %s", (_name, payload, expected) => {
490
+ // write
491
+ {
492
+ const header = new Zcl.Header(payload.frameControl, payload.manufacturerCode, payload.transactionSequenceNumber, payload.commandId);
493
+ const buffer = Buffer.alloc(10);
494
+ const buffalo = new BuffaloZcl(buffer);
495
+ header.write(buffalo);
496
+
497
+ expect(buffer.subarray(0, header.length)).toStrictEqual(expected.written);
498
+ expect(header.length).toStrictEqual(expected.written.length);
499
+ expect(header.isGlobal).toStrictEqual(payload.frameControl.frameType === Zcl.FrameType.GLOBAL);
500
+ expect(header.isSpecific).toStrictEqual(payload.frameControl.frameType === Zcl.FrameType.SPECIFIC);
501
+ }
502
+ // read
503
+ {
504
+ const header = Zcl.Header.fromBuffer(expected.written)!;
505
+
506
+ expect(header).toBeInstanceOf(Zcl.Header);
507
+ expect(header.length).toStrictEqual(expected.written.length);
508
+ expect(header.isGlobal).toStrictEqual(payload.frameControl.frameType === Zcl.FrameType.GLOBAL);
509
+ expect(header.isSpecific).toStrictEqual(payload.frameControl.frameType === Zcl.FrameType.SPECIFIC);
510
+ expect(header.frameControl).toStrictEqual(payload.frameControl);
511
+ expect(header.manufacturerCode).toStrictEqual(payload.manufacturerCode);
512
+ expect(header.transactionSequenceNumber).toStrictEqual(payload.transactionSequenceNumber);
513
+ expect(header.commandIdentifier).toStrictEqual(payload.commandId);
514
+ }
515
+ });
516
+
517
+ it.each([
518
+ ["basic", {value: [0, 234]}],
519
+ ["manufacturer specific", {value: [4, ...uint16To8Array(1234), 234]}],
520
+ ])("Reads non-compliant header as undefined %s", (_name, payload) => {
521
+ expect(Zcl.Header.fromBuffer(Buffer.from(payload.value))).toStrictEqual(undefined);
522
+ });
523
+ });
524
+
525
+ it.each([
526
+ ["global", GLOBAL_FRAME, {string: GLOBAL_FRAME_STRING, header: GLOBAL_HEADER, written: GLOBAL_FRAME_BUFFER}],
527
+ [
528
+ "global BigInt",
529
+ GLOBAL_FRAME_BIG_INT,
530
+ {string: GLOBAL_FRAME_BIG_INT_STRING, header: GLOBAL_HEADER_REPORT, written: GLOBAL_FRAME_BIG_INT_BUFFER},
531
+ ],
532
+ ["global response", GLOBAL_RSP_FRAME, {string: GLOBAL_RSP_FRAME_STRING, header: GLOBAL_RSP_HEADER, written: GLOBAL_RSP_FRAME_BUFFER}],
533
+ [
534
+ "global no payload",
535
+ GLOBAL_FRAME_NO_PAYLOAD,
536
+ {string: GLOBAL_FRAME_NO_PAYLOAD_STRING, header: GLOBAL_HEADER, written: GLOBAL_FRAME_NO_PAYLOAD_BUFFER},
537
+ ],
538
+ [
539
+ "global with condition-based parameters",
540
+ GLOBAL_CONDITION_FRAME,
541
+ {string: GLOBAL_CONDITION_FRAME_STRING, header: GLOBAL_CONDITION_HEADER, written: GLOBAL_CONDITION_FRAME_BUFFER},
542
+ ],
543
+ ["specific", SPECIFIC_FRAME, {string: SPECIFIC_FRAME_STRING, header: SPECIFIC_HEADER, written: SPECIFIC_FRAME_BUFFER}],
544
+ [
545
+ "specific response",
546
+ SPECIFIC_RSP_FRAME,
547
+ {string: SPECIFIC_RSP_FRAME_STRING, header: SPECIFIC_RSP_HEADER, written: SPECIFIC_RSP_FRAME_BUFFER},
548
+ ],
549
+ [
550
+ "specific with condition-based parameters",
551
+ SPECIFIC_CONDITION_FRAME,
552
+ {string: SPECIFIC_CONDITION_FRAME_STRING, header: SPECIFIC_CONDITION_HEADER, written: SPECIFIC_CONDITION_FRAME_BUFFER},
553
+ ],
554
+ ["manufacturer-specific", MANUF_SPE_FRAME, {string: MANUF_SPE_FRAME_STRING, header: MANUF_SPE_HEADER, written: MANUF_SPE_FRAME_BUFFER}],
555
+ ])("Writes & Reads frame %s", (_name, frame, expected) => {
556
+ expect(frame).toBeDefined();
557
+ expect(frame.toString()).toStrictEqual(expected.string);
558
+ expect(frame.header).toStrictEqual(expected.header);
559
+
560
+ expect(frame.toBuffer()).toStrictEqual(expected.written);
561
+ expect(Zcl.Frame.fromBuffer(frame.cluster.ID, frame.header, expected.written, {}).toString()).toStrictEqual(expected.string);
562
+ });
563
+
564
+ it("Writes & Reads repetitive strategy", () => {
565
+ const expected = [{attrId: 256}, {attrId: 127}];
566
+ const header = new Zcl.Header(
567
+ {
568
+ frameType: Zcl.FrameType.GLOBAL,
569
+ manufacturerSpecific: false,
570
+ direction: Zcl.Direction.CLIENT_TO_SERVER,
571
+ disableDefaultResponse: false,
572
+ reservedBits: 0,
573
+ },
574
+ undefined,
575
+ 123,
576
+ Zcl.Foundation.read.ID,
577
+ );
578
+ const frame = Zcl.Frame.create(
579
+ header.frameControl.frameType,
580
+ header.frameControl.direction,
581
+ header.frameControl.disableDefaultResponse,
582
+ header.manufacturerCode,
583
+ header.transactionSequenceNumber,
584
+ header.commandIdentifier,
585
+ Zcl.Foundation.read.ID,
586
+ expected /*payload*/,
587
+ {} /*custom clusters*/,
588
+ header.frameControl.reservedBits,
589
+ );
590
+
591
+ expect(frame.payload).toStrictEqual(expected);
592
+
593
+ const buffer = frame.toBuffer();
594
+ const readHeader = Zcl.Header.fromBuffer(buffer)!;
595
+ const readFrame = Zcl.Frame.fromBuffer(0 /*Foundation*/, readHeader, buffer, {} /*custom clusters*/);
596
+
597
+ expect(readFrame.payload).toStrictEqual(expected);
598
+ });
599
+
600
+ it("Writes & Reads flat strategy", () => {
601
+ const expected = {cmdId: 253, statusCode: 127};
602
+ const header = new Zcl.Header(
603
+ {
604
+ frameType: Zcl.FrameType.GLOBAL,
605
+ manufacturerSpecific: false,
606
+ direction: Zcl.Direction.CLIENT_TO_SERVER,
607
+ disableDefaultResponse: false,
608
+ reservedBits: 0,
609
+ },
610
+ undefined,
611
+ 123,
612
+ Zcl.Foundation.defaultRsp.ID,
613
+ );
614
+ const frame = Zcl.Frame.create(
615
+ header.frameControl.frameType,
616
+ header.frameControl.direction,
617
+ header.frameControl.disableDefaultResponse,
618
+ header.manufacturerCode,
619
+ header.transactionSequenceNumber,
620
+ header.commandIdentifier,
621
+ Zcl.Foundation.defaultRsp.ID,
622
+ expected /*payload*/,
623
+ {} /*custom clusters*/,
624
+ header.frameControl.reservedBits,
625
+ );
626
+
627
+ expect(frame.payload).toStrictEqual(expected);
628
+
629
+ const buffer = frame.toBuffer();
630
+ const readHeader = Zcl.Header.fromBuffer(buffer)!;
631
+ const readFrame = Zcl.Frame.fromBuffer(0 /*Foundation*/, readHeader, buffer, {} /*custom clusters*/);
632
+
633
+ expect(readFrame.payload).toStrictEqual(expected);
634
+ });
635
+
636
+ it("Writes & Reads oneof strategy", () => {
637
+ const expected = {
638
+ discComplete: 123,
639
+ attrInfos: [
640
+ {attrId: 32, dataType: Zcl.DataType.UINT16},
641
+ {attrId: 67, dataType: Zcl.DataType.ARRAY},
642
+ ],
643
+ };
644
+ const header = new Zcl.Header(
645
+ {
646
+ frameType: Zcl.FrameType.GLOBAL,
647
+ manufacturerSpecific: false,
648
+ direction: Zcl.Direction.CLIENT_TO_SERVER,
649
+ disableDefaultResponse: false,
650
+ reservedBits: 0,
651
+ },
652
+ undefined,
653
+ 123,
654
+ Zcl.Foundation.discoverRsp.ID,
655
+ );
656
+ const frame = Zcl.Frame.create(
657
+ header.frameControl.frameType,
658
+ header.frameControl.direction,
659
+ header.frameControl.disableDefaultResponse,
660
+ header.manufacturerCode,
661
+ header.transactionSequenceNumber,
662
+ header.commandIdentifier,
663
+ Zcl.Foundation.discoverRsp.ID,
664
+ expected /*payload*/,
665
+ {} /*custom clusters*/,
666
+ header.frameControl.reservedBits,
667
+ );
668
+
669
+ expect(frame.payload).toStrictEqual(expected);
670
+
671
+ const buffer = frame.toBuffer();
672
+ const readHeader = Zcl.Header.fromBuffer(buffer)!;
673
+ const readFrame = Zcl.Frame.fromBuffer(0 /*Foundation*/, readHeader, buffer, {} /*custom clusters*/);
674
+
675
+ expect(readFrame.payload).toStrictEqual(expected);
676
+ });
677
+
678
+ it("Throws when writting invalid frame type", () => {
679
+ expect(() => {
680
+ const frame = Zcl.Frame.create(
681
+ // @ts-expect-error invalid on purpose
682
+ 3,
683
+ Zcl.Direction.CLIENT_TO_SERVER,
684
+ false,
685
+ null,
686
+ 123,
687
+ Zcl.Clusters.genAlarms.commands.reset.ID,
688
+ Zcl.Clusters.genAlarms.ID,
689
+ {} /*payload*/,
690
+ {} /*custom clusters*/,
691
+ 0 /*reserved bits*/,
692
+ );
693
+
694
+ frame.toBuffer();
695
+ }).toThrow(`Frametype '3' not valid`);
696
+ });
697
+
698
+ it("Throws when reading invalid frame type", () => {
699
+ expect(() => {
700
+ Zcl.Frame.fromBuffer(
701
+ Zcl.Clusters.genBasic.ID,
702
+ Zcl.Header.fromBuffer(Buffer.from([2, 123, 0]))!,
703
+ Buffer.from([]) /*payload*/,
704
+ {} /*custom clusters*/,
705
+ );
706
+ }).toThrow(`Unsupported frameType '2'`);
707
+ });
708
+
709
+ it("Throws when reading frame without header", () => {
710
+ expect(() => {
711
+ Zcl.Frame.fromBuffer(
712
+ Zcl.Clusters.genBasic.ID,
713
+ // @ts-expect-error invalid of purpose
714
+ null,
715
+ Buffer.from([]) /*payload*/,
716
+ {} /*custom clusters*/,
717
+ );
718
+ }).toThrow("Invalid ZclHeader.");
719
+ });
720
+
721
+ it("Throws when writting missing payload", () => {
722
+ expect(() => {
723
+ const frame = Zcl.Frame.create(
724
+ SPECIFIC_RSP_HEADER.frameControl.frameType,
725
+ SPECIFIC_RSP_HEADER.frameControl.direction,
726
+ SPECIFIC_RSP_HEADER.frameControl.disableDefaultResponse,
727
+ SPECIFIC_RSP_HEADER.manufacturerCode,
728
+ SPECIFIC_RSP_HEADER.transactionSequenceNumber,
729
+ SPECIFIC_RSP_HEADER.commandIdentifier,
730
+ Zcl.Clusters.genAlarms.ID,
731
+ {alarmcode: 246 /*clusterid: 3456*/} /*payload*/,
732
+ {} /*custom clusters*/,
733
+ SPECIFIC_RSP_HEADER.frameControl.reservedBits,
734
+ );
735
+
736
+ frame.toBuffer();
737
+ }).toThrow(`Parameter 'clusterid' is missing`);
738
+ });
739
+
740
+ it("Checks cluster match by name", () => {
741
+ expect(GLOBAL_FRAME.isCluster("genBasic")).toBeTruthy();
742
+ expect(GLOBAL_FRAME.isCluster("discoverCommands")).toBeFalsy();
743
+ // @ts-expect-error invalid on purpose
744
+ expect(GLOBAL_FRAME.isCluster("notacluster")).toBeFalsy();
745
+ expect(SPECIFIC_FRAME.isCluster("genAlarms")).toBeTruthy();
746
+ expect(SPECIFIC_FRAME.isCluster("genAnalogInput")).toBeFalsy();
747
+ // @ts-expect-error invalid on purpose
748
+ expect(SPECIFIC_FRAME.isCluster("notacluster")).toBeFalsy();
749
+ });
750
+
751
+ it("Checks command match by name", () => {
752
+ expect(GLOBAL_FRAME.isCommand("read")).toBeTruthy();
753
+ expect(GLOBAL_FRAME.isCommand("discoverCommands")).toBeFalsy();
754
+ // @ts-expect-error invalid on purpose
755
+ expect(GLOBAL_FRAME.isCommand("notacommand")).toBeFalsy();
756
+ expect(SPECIFIC_FRAME.isCommand("getAlarm")).toBeTruthy();
757
+ expect(SPECIFIC_FRAME.isCommand("enrollReq")).toBeFalsy();
758
+ // @ts-expect-error invalid on purpose
759
+ expect(SPECIFIC_FRAME.isCommand("notacommand")).toBeFalsy();
760
+ });
761
+
762
+ it("[workaround] Reads Foundation char str as Mi struct for Xiaomi attridId=65281", () => {
763
+ const expected = [
764
+ {attrId: 5, dataType: Zcl.DataType.CHAR_STR, attrData: "lumi.sensor_wleak.aq1"},
765
+ {attrId: 65281, dataType: Zcl.DataType.CHAR_STR, attrData: {1: 3285, 3: 33, 4: 5032, 5: 43, 6: 327680, 8: 516, 10: 0, 100: 0}},
766
+ ];
767
+ const buffer = Buffer.from([
768
+ 28,
769
+ ...uint16To8Array(Zcl.ManufacturerCode.LUMI_UNITED_TECHOLOGY_LTD_SHENZHEN),
770
+ 3,
771
+ 10 /*header*/,
772
+ // regular attr parsing
773
+ 5,
774
+ 0,
775
+ Zcl.DataType.CHAR_STR,
776
+ 21,
777
+ 108,
778
+ 117,
779
+ 109,
780
+ 105,
781
+ 46,
782
+ 115,
783
+ 101,
784
+ 110,
785
+ 115,
786
+ 111,
787
+ 114,
788
+ 95,
789
+ 119,
790
+ 108,
791
+ 101,
792
+ 97,
793
+ 107,
794
+ 46,
795
+ 97,
796
+ 113,
797
+ 49,
798
+ // workaround parsing
799
+ 1,
800
+ 255,
801
+ Zcl.DataType.CHAR_STR,
802
+ 34,
803
+ 1,
804
+ Zcl.DataType.UINT16,
805
+ ...uint16To8Array(3285),
806
+ 3,
807
+ Zcl.DataType.INT8,
808
+ 33,
809
+ 4,
810
+ Zcl.DataType.UINT16,
811
+ ...uint16To8Array(5032),
812
+ 5,
813
+ Zcl.DataType.UINT16,
814
+ ...uint16To8Array(43),
815
+ 6,
816
+ Zcl.DataType.UINT40,
817
+ ...uint32To8Array(327680),
818
+ 0,
819
+ 8,
820
+ Zcl.DataType.UINT16,
821
+ ...uint16To8Array(516),
822
+ 10,
823
+ Zcl.DataType.UINT16,
824
+ ...uint16To8Array(0),
825
+ 100,
826
+ Zcl.DataType.BOOLEAN,
827
+ 0,
828
+ ]);
829
+ const header = Zcl.Header.fromBuffer(buffer)!;
830
+ const frame = Zcl.Frame.fromBuffer(0 /*Foundation*/, header, buffer, {});
831
+
832
+ expect(frame.payload).toStrictEqual(expected);
833
+ });
834
+
835
+ it("[workaround] Reads Foundation struct with extra payload to match zcl-packet", () => {
836
+ const expected = [
837
+ {
838
+ attrId: 65282,
839
+ dataType: Zcl.DataType.STRUCT,
840
+ numElms: 6,
841
+ structElms: [
842
+ {elmType: Zcl.DataType.BOOLEAN, elmVal: 1},
843
+ {elmType: Zcl.DataType.UINT16, elmVal: 3022},
844
+ {elmType: Zcl.DataType.UINT16, elmVal: 17320},
845
+ {elmType: Zcl.DataType.UINT40, elmVal: 1},
846
+ {elmType: Zcl.DataType.UINT16, elmVal: 560},
847
+ {elmType: Zcl.DataType.UINT8, elmVal: 86},
848
+ ],
849
+ attrData: [
850
+ {elmType: Zcl.DataType.BOOLEAN, elmVal: 1},
851
+ {elmType: Zcl.DataType.UINT16, elmVal: 3022},
852
+ {elmType: Zcl.DataType.UINT16, elmVal: 17320},
853
+ {elmType: Zcl.DataType.UINT40, elmVal: 1},
854
+ {elmType: Zcl.DataType.UINT16, elmVal: 560},
855
+ {elmType: Zcl.DataType.UINT8, elmVal: 86},
856
+ ],
857
+ },
858
+ ];
859
+ const buffer = Buffer.from([
860
+ 28,
861
+ ...uint16To8Array(Zcl.ManufacturerCode.DSR_CORPORATION),
862
+ 194,
863
+ 10 /*header*/,
864
+ ...uint16To8Array(65282),
865
+ Zcl.DataType.STRUCT,
866
+ 6,
867
+ 0,
868
+ Zcl.DataType.BOOLEAN,
869
+ 1,
870
+ Zcl.DataType.UINT16,
871
+ ...uint16To8Array(3022),
872
+ Zcl.DataType.UINT16,
873
+ ...uint16To8Array(17320),
874
+ Zcl.DataType.UINT40,
875
+ ...uint32To8Array(1),
876
+ 0,
877
+ Zcl.DataType.UINT16,
878
+ ...uint16To8Array(560),
879
+ Zcl.DataType.UINT8,
880
+ 86,
881
+ ]);
882
+ const header = Zcl.Header.fromBuffer(buffer)!;
883
+ const frame = Zcl.Frame.fromBuffer(0 /*Foundation*/, header, buffer, {});
884
+
885
+ expect(frame.payload).toStrictEqual(expected);
886
+ });
887
+
888
+ it("Reads/writes Touchlink Scan Response with different size payloads", () => {
889
+ const full = Buffer.from([
890
+ 0x19, 0x0, 0x1, 0xe0, 0xde, 0x5e, 0x2f, 0xa, 0x5, 0x0, 0x12, 0x0, 0x3d, 0x30, 0x1d, 0x4a, 0x8f, 0xb7, 0xdc, 0x1c, 0x0, 0x4b, 0x12, 0x0,
891
+ 0x0, 0xf, 0x62, 0x1a, 0xb3, 0xaa, 0x1, 0x0, 0xb, 0x5e, 0xc0, 0x10, 0x2, 0x2, 0x0,
892
+ ]);
893
+ const short = Buffer.from([
894
+ 0x19, 0x0, 0x1, 0xe0, 0xde, 0x5e, 0x2f, 0xa, 0x5, 0x0, 0x12, 0x0, 0x3d, 0x30, 0x1d, 0x4a, 0x8f, 0xb7, 0xdc, 0x1c, 0x0, 0x4b, 0x12, 0x0,
895
+ 0x0, 0xf, 0x62, 0x1a, 0xb3, 0xaa, 0x0, 0x0,
896
+ ]);
897
+ const short2 = Buffer.from([
898
+ 0x19, 0x0, 0x1, 0xe0, 0xde, 0x5e, 0x2f, 0xa, 0x5, 0x0, 0x12, 0x0, 0x3d, 0x30, 0x1d, 0x4a, 0x8f, 0xb7, 0xdc, 0x1c, 0x0, 0x4b, 0x12, 0x0,
899
+ 0x0, 0xf, 0x62, 0x1a, 0xb3, 0xaa, 0x3, 0x0,
900
+ ]);
901
+
902
+ const fullZcl = Zcl.Frame.fromBuffer(0x1000, Zcl.Header.fromBuffer(full), full, {});
903
+ expect(fullZcl.payload.numberOfSubDevices).toStrictEqual(1);
904
+ expect(fullZcl.payload.endpointID).toStrictEqual(11);
905
+ expect(fullZcl.payload.profileID).toStrictEqual(0xc05e);
906
+ expect(fullZcl.payload.deviceID).toStrictEqual(0x0210);
907
+ expect(fullZcl.payload.version).toStrictEqual(0x02);
908
+ expect(fullZcl.payload.groupIDCount).toStrictEqual(0);
909
+
910
+ const shortZcl = Zcl.Frame.fromBuffer(0x1000, Zcl.Header.fromBuffer(short), short, {});
911
+ expect(shortZcl.payload.numberOfSubDevices).toStrictEqual(0);
912
+ expect(shortZcl.payload.endpointID).toStrictEqual(undefined);
913
+ expect(shortZcl.payload.profileID).toStrictEqual(undefined);
914
+ expect(shortZcl.payload.deviceID).toStrictEqual(undefined);
915
+ expect(shortZcl.payload.version).toStrictEqual(undefined);
916
+ expect(shortZcl.payload.groupIDCount).toStrictEqual(undefined);
917
+
918
+ const short2Zcl = Zcl.Frame.fromBuffer(0x1000, Zcl.Header.fromBuffer(short2), short2, {});
919
+ expect(short2Zcl.payload.numberOfSubDevices).toStrictEqual(3);
920
+ expect(short2Zcl.payload.endpointID).toStrictEqual(undefined);
921
+ expect(short2Zcl.payload.profileID).toStrictEqual(undefined);
922
+ expect(short2Zcl.payload.deviceID).toStrictEqual(undefined);
923
+ expect(short2Zcl.payload.version).toStrictEqual(undefined);
924
+ expect(short2Zcl.payload.groupIDCount).toStrictEqual(undefined);
925
+
926
+ const fullNew = fullZcl.toBuffer();
927
+ expect(fullNew).toStrictEqual(full);
928
+
929
+ const shortNew = shortZcl.toBuffer();
930
+ expect(shortNew).toStrictEqual(short);
931
+
932
+ const short2New = short2Zcl.toBuffer();
933
+ expect(short2New).toStrictEqual(short2);
934
+ });
935
+
936
+ it("throws when payload too short to continue reading", () => {
937
+ const b = Buffer.from([1, 3, 3, 0, 33, 16, 18, 0, 255, 69, 81, 0, 62, 0, 0, 0]);
938
+
939
+ expect(() => {
940
+ Zcl.Frame.fromBuffer(Zcl.Clusters.genOta.ID, Zcl.Header.fromBuffer(b), b, {});
941
+ }).toThrow(
942
+ `Cannot parse 'imageBlockRequest:maximumDataSize' (The value of "offset" is out of range. It must be >= 0 and <= 15. Received 16)`,
943
+ );
944
+ });
945
+
946
+ // https://github.com/Koenkk/zigbee2mqtt/issues/28217
947
+ it("[workaround] Reads genOta imageBlockRequest even if minimumBlockPeriod is missing", () => {
948
+ const b = Buffer.from([1, 3, 3, 2, 33, 16, 18, 0, 255, 69, 81, 0, 62, 0, 0, 0, 8]);
949
+ const frame = Zcl.Frame.fromBuffer(Zcl.Clusters.genOta.ID, Zcl.Header.fromBuffer(b), b, {});
950
+
951
+ expect(frame.payload).toStrictEqual({
952
+ fieldControl: 2,
953
+ manufacturerCode: 4129,
954
+ imageType: 18,
955
+ fileVersion: 5326335,
956
+ fileOffset: 62,
957
+ maximumDataSize: 8,
958
+ });
959
+ });
960
+
961
+ it("Keeps MINIMUM_REMAINING_BUFFER_BYTES parameters when present", () => {
962
+ // moveToLevelWithOnOff with optionsMask/optionsOverride
963
+ const payload = {level: 150, transtime: 0, optionsMask: 0, optionsOverride: 1};
964
+ const frame = Zcl.Frame.create(
965
+ Zcl.FrameType.SPECIFIC,
966
+ Zcl.Direction.CLIENT_TO_SERVER,
967
+ false,
968
+ undefined,
969
+ 1,
970
+ "moveToLevelWithOnOff",
971
+ Zcl.Clusters.genLevelCtrl.ID,
972
+ payload,
973
+ {},
974
+ );
975
+
976
+ const buffer = frame.toBuffer();
977
+ expect(buffer).toStrictEqual(Buffer.from([0x01, 0x01, 0x04, 0x96, 0x00, 0x00, 0x00, 0x01]));
978
+ });
979
+
980
+ it("Allows omitting MINIMUM_REMAINING_BUFFER_BYTES parameters", () => {
981
+ // moveToLevelWithOnOff without optionsMask/optionsOverride
982
+ const payload = {level: 150, transtime: 0};
983
+ const frame = Zcl.Frame.create(
984
+ Zcl.FrameType.SPECIFIC,
985
+ Zcl.Direction.CLIENT_TO_SERVER,
986
+ false,
987
+ undefined,
988
+ 1,
989
+ "moveToLevelWithOnOff",
990
+ Zcl.Clusters.genLevelCtrl.ID,
991
+ payload,
992
+ {},
993
+ );
994
+
995
+ const buffer = frame.toBuffer();
996
+ expect(buffer).toStrictEqual(Buffer.from([0x01, 0x01, 0x04, 0x96, 0x00, 0x00]));
997
+ });
998
+
999
+ it("Allows omitting parameters with false conditions", () => {
1000
+ // Touchlink scanResponse without sub-device fields when numberOfSubDevices != 1
1001
+ const payload = {
1002
+ transactionID: 1,
1003
+ rssiCorrection: 10,
1004
+ zigbeeInformation: 5,
1005
+ touchlinkInformation: 3,
1006
+ keyBitmask: 15,
1007
+ responseID: 100,
1008
+ extendedPanID: "0x0011223344556677",
1009
+ networkUpdateID: 1,
1010
+ logicalChannel: 11,
1011
+ panID: 0x1234,
1012
+ networkAddress: 0x5678,
1013
+ numberOfSubDevices: 0,
1014
+ totalGroupIdentifiers: 0,
1015
+ };
1016
+
1017
+ const frame = Zcl.Frame.create(
1018
+ Zcl.FrameType.SPECIFIC,
1019
+ Zcl.Direction.SERVER_TO_CLIENT,
1020
+ false,
1021
+ undefined,
1022
+ 2,
1023
+ "scanResponse",
1024
+ Zcl.Clusters.touchlink.ID,
1025
+ payload,
1026
+ {},
1027
+ );
1028
+
1029
+ const buffer = frame.toBuffer();
1030
+ expect(buffer).toStrictEqual(
1031
+ Buffer.from([
1032
+ 0x09, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x05, 0x03, 0x0f, 0x00, 0x64, 0x00, 0x00, 0x00, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22,
1033
+ 0x11, 0x00, 0x01, 0x0b, 0x34, 0x12, 0x78, 0x56, 0x00, 0x00,
1034
+ ]),
1035
+ );
1036
+ });
1037
+
1038
+ it("Requires parameters when conditions are true", () => {
1039
+ // queryNextImageResponse with status=SUCCESS requires manufacturerCode
1040
+ const payload = {status: 0}; // SUCCESS but missing required fields
1041
+
1042
+ expect(() => {
1043
+ Zcl.Frame.create(
1044
+ Zcl.FrameType.SPECIFIC,
1045
+ Zcl.Direction.SERVER_TO_CLIENT,
1046
+ false,
1047
+ undefined,
1048
+ 3,
1049
+ "queryNextImageResponse",
1050
+ Zcl.Clusters.genOta.ID,
1051
+ payload,
1052
+ {},
1053
+ ).toBuffer();
1054
+ }).toThrow("Parameter 'manufacturerCode' is missing");
1055
+ });
1056
+ });