@willieee802/zigbee-herdsman 0.48.3 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1025) hide show
  1. package/.github/ISSUE_TEMPLATE/config.yml +5 -0
  2. package/.github/copilot-instructions.md +689 -0
  3. package/.github/dependabot.yml +22 -0
  4. package/.github/prompts/copilot-instructions-blueprint-generator.prompt.md +294 -0
  5. package/.github/prompts/create-agentsmd.prompt.md +249 -0
  6. package/.github/prompts/create-specification.prompt.md +127 -0
  7. package/.github/prompts/review-and-refactor.prompt.md +15 -0
  8. package/.github/prompts/update-specification.prompt.md +127 -0
  9. package/.github/workflows/ci.yml +70 -0
  10. package/.github/workflows/release-please.yml +18 -0
  11. package/.github/workflows/stale.yml +20 -0
  12. package/.github/workflows/typedoc.yaml +47 -0
  13. package/.release-please-manifest.json +2 -2
  14. package/.vscode/extensions.json +3 -0
  15. package/.vscode/settings.json +11 -0
  16. package/AGENTS.md +441 -0
  17. package/CHANGELOG.md +1245 -0
  18. package/README.md +1 -1
  19. package/biome.json +103 -0
  20. package/examples/join-and-log.js +18 -18
  21. package/package.json +83 -70
  22. package/release-please-config.json +8 -8
  23. package/scripts/check-clusters-changes.ts +328 -0
  24. package/scripts/clusters-changes.log +584 -0
  25. package/scripts/clusters-typegen.ts +608 -0
  26. package/scripts/utils.ts +88 -0
  27. package/scripts/zap-update-clusters-report.json +303 -0
  28. package/scripts/zap-update-clusters.ts +1520 -0
  29. package/scripts/zap-update-types.ts +707 -0
  30. package/scripts/zap-xml-clusters-overrides-data.ts +52 -0
  31. package/scripts/zap-xml-clusters-overrides.ts +400 -0
  32. package/scripts/zap-xml-types.ts +146 -0
  33. package/src/adapter/adapter.ts +210 -0
  34. package/src/adapter/adapterDiscovery.ts +736 -0
  35. package/src/adapter/const.ts +12 -0
  36. package/src/adapter/deconz/adapter/deconzAdapter.ts +888 -0
  37. package/src/adapter/deconz/driver/constants.ts +246 -0
  38. package/src/adapter/deconz/driver/driver.ts +1528 -0
  39. package/src/adapter/deconz/driver/frame.ts +11 -0
  40. package/src/adapter/deconz/driver/frameParser.ts +766 -0
  41. package/src/adapter/deconz/driver/parser.ts +45 -0
  42. package/src/adapter/deconz/driver/writer.ts +22 -0
  43. package/src/adapter/deconz/types.d.ts +13 -0
  44. package/src/adapter/ember/adapter/emberAdapter.ts +2262 -0
  45. package/src/adapter/ember/adapter/endpoints.ts +86 -0
  46. package/src/adapter/ember/adapter/oneWaitress.ts +324 -0
  47. package/src/adapter/ember/adapter/tokensManager.ts +780 -0
  48. package/src/adapter/ember/consts.ts +178 -0
  49. package/src/adapter/ember/enums.ts +1746 -0
  50. package/src/adapter/ember/ezsp/buffalo.ts +1392 -0
  51. package/src/adapter/ember/ezsp/consts.ts +148 -0
  52. package/src/adapter/ember/ezsp/enums.ts +1114 -0
  53. package/src/adapter/ember/ezsp/ezsp.ts +9073 -0
  54. package/src/adapter/ember/ezspError.ts +10 -0
  55. package/src/adapter/ember/types.ts +866 -0
  56. package/src/adapter/ember/uart/ash.ts +1933 -0
  57. package/src/adapter/ember/uart/consts.ts +109 -0
  58. package/src/adapter/ember/uart/enums.ts +192 -0
  59. package/src/adapter/ember/uart/parser.ts +42 -0
  60. package/src/adapter/ember/uart/queues.ts +247 -0
  61. package/src/adapter/ember/uart/writer.ts +50 -0
  62. package/src/adapter/ember/utils/initters.ts +58 -0
  63. package/src/adapter/ember/utils/math.ts +71 -0
  64. package/src/adapter/events.ts +21 -0
  65. package/src/adapter/ezsp/adapter/backup.ts +100 -0
  66. package/src/adapter/ezsp/adapter/ezspAdapter.ts +632 -0
  67. package/src/adapter/ezsp/driver/commands.ts +2497 -0
  68. package/src/adapter/ezsp/driver/consts.ts +11 -0
  69. package/src/adapter/ezsp/driver/driver.ts +1002 -0
  70. package/src/adapter/ezsp/driver/ezsp.ts +802 -0
  71. package/src/adapter/ezsp/driver/frame.ts +101 -0
  72. package/src/adapter/ezsp/driver/index.ts +4 -0
  73. package/src/adapter/ezsp/driver/multicast.ts +78 -0
  74. package/src/adapter/ezsp/driver/parser.ts +81 -0
  75. package/src/adapter/ezsp/driver/types/basic.ts +201 -0
  76. package/src/adapter/ezsp/driver/types/index.ts +239 -0
  77. package/src/adapter/ezsp/driver/types/named.ts +2330 -0
  78. package/src/adapter/ezsp/driver/types/struct.ts +844 -0
  79. package/src/adapter/ezsp/driver/uart.ts +460 -0
  80. package/src/adapter/ezsp/driver/utils/crc16ccitt.ts +44 -0
  81. package/src/adapter/ezsp/driver/utils/index.ts +32 -0
  82. package/src/adapter/ezsp/driver/writer.ts +64 -0
  83. package/src/adapter/index.ts +3 -0
  84. package/src/adapter/serialPort.ts +58 -0
  85. package/src/adapter/tstype.ts +57 -0
  86. package/src/adapter/utils.ts +41 -0
  87. package/src/adapter/z-stack/adapter/adapter-backup.ts +509 -0
  88. package/src/adapter/z-stack/adapter/adapter-nv-memory.ts +457 -0
  89. package/src/adapter/z-stack/adapter/endpoints.ts +60 -0
  90. package/src/adapter/z-stack/adapter/manager.ts +543 -0
  91. package/src/adapter/z-stack/adapter/tstype.ts +6 -0
  92. package/src/adapter/z-stack/adapter/zStackAdapter.ts +1350 -0
  93. package/src/adapter/z-stack/constants/af.ts +27 -0
  94. package/src/adapter/z-stack/constants/common.ts +285 -0
  95. package/src/adapter/z-stack/constants/dbg.ts +23 -0
  96. package/src/adapter/z-stack/constants/index.ts +11 -0
  97. package/src/adapter/z-stack/constants/mac.ts +128 -0
  98. package/src/adapter/z-stack/constants/sapi.ts +25 -0
  99. package/src/adapter/z-stack/constants/sys.ts +72 -0
  100. package/src/adapter/z-stack/constants/util.ts +82 -0
  101. package/src/adapter/z-stack/constants/utils.ts +14 -0
  102. package/src/adapter/z-stack/constants/zdo.ts +103 -0
  103. package/src/adapter/z-stack/models/startup-options.ts +13 -0
  104. package/src/adapter/z-stack/structs/entries/address-manager-entry.ts +44 -0
  105. package/src/adapter/z-stack/structs/entries/address-manager-table.ts +19 -0
  106. package/src/adapter/z-stack/structs/entries/aps-link-key-data-entry.ts +12 -0
  107. package/src/adapter/z-stack/structs/entries/aps-link-key-data-table.ts +21 -0
  108. package/src/adapter/z-stack/structs/entries/aps-tc-link-key-entry.ts +19 -0
  109. package/src/adapter/z-stack/structs/entries/aps-tc-link-key-table.ts +21 -0
  110. package/src/adapter/z-stack/structs/entries/channel-list.ts +8 -0
  111. package/src/adapter/z-stack/structs/entries/has-configured.ts +16 -0
  112. package/src/adapter/z-stack/structs/entries/index.ts +16 -0
  113. package/src/adapter/z-stack/structs/entries/nib.ts +66 -0
  114. package/src/adapter/z-stack/structs/entries/nwk-key-descriptor.ts +15 -0
  115. package/src/adapter/z-stack/structs/entries/nwk-key.ts +13 -0
  116. package/src/adapter/z-stack/structs/entries/nwk-pan-id.ts +8 -0
  117. package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.ts +20 -0
  118. package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.ts +19 -0
  119. package/src/adapter/z-stack/structs/entries/security-manager-entry.ts +33 -0
  120. package/src/adapter/z-stack/structs/entries/security-manager-table.ts +22 -0
  121. package/src/adapter/z-stack/structs/index.ts +4 -0
  122. package/src/adapter/z-stack/structs/serializable-memory-object.ts +14 -0
  123. package/src/adapter/z-stack/structs/struct.ts +367 -0
  124. package/src/adapter/z-stack/structs/table.ts +198 -0
  125. package/src/adapter/z-stack/unpi/constants.ts +33 -0
  126. package/src/adapter/z-stack/unpi/frame.ts +62 -0
  127. package/src/adapter/z-stack/unpi/index.ts +4 -0
  128. package/src/adapter/z-stack/unpi/parser.ts +67 -0
  129. package/src/adapter/z-stack/unpi/writer.ts +37 -0
  130. package/src/adapter/z-stack/utils/channel-list.ts +40 -0
  131. package/src/adapter/z-stack/utils/index.ts +2 -0
  132. package/src/adapter/z-stack/utils/network-options.ts +26 -0
  133. package/src/adapter/z-stack/znp/buffaloZnp.ts +175 -0
  134. package/src/adapter/z-stack/znp/definition.ts +2713 -0
  135. package/src/adapter/z-stack/znp/index.ts +2 -0
  136. package/src/adapter/z-stack/znp/parameterType.ts +22 -0
  137. package/src/adapter/z-stack/znp/tstype.ts +44 -0
  138. package/src/adapter/z-stack/znp/utils.ts +10 -0
  139. package/src/adapter/z-stack/znp/znp.ts +345 -0
  140. package/src/adapter/z-stack/znp/zpiObject.ts +148 -0
  141. package/src/adapter/zboss/adapter/zbossAdapter.ts +535 -0
  142. package/src/adapter/zboss/commands.ts +1184 -0
  143. package/src/adapter/zboss/consts.ts +9 -0
  144. package/src/adapter/zboss/driver.ts +422 -0
  145. package/src/adapter/zboss/enums.ts +360 -0
  146. package/src/adapter/zboss/frame.ts +227 -0
  147. package/src/adapter/zboss/reader.ts +65 -0
  148. package/src/adapter/zboss/types.ts +0 -0
  149. package/src/adapter/zboss/uart.ts +428 -0
  150. package/src/adapter/zboss/utils.ts +58 -0
  151. package/src/adapter/zboss/writer.ts +49 -0
  152. package/src/adapter/zigate/adapter/patchZdoBuffaloBE.ts +25 -0
  153. package/src/adapter/zigate/adapter/zigateAdapter.ts +633 -0
  154. package/src/adapter/zigate/driver/LICENSE +17 -0
  155. package/src/adapter/zigate/driver/buffaloZiGate.ts +210 -0
  156. package/src/adapter/zigate/driver/commandType.ts +418 -0
  157. package/src/adapter/zigate/driver/constants.ts +150 -0
  158. package/src/adapter/zigate/driver/frame.ts +197 -0
  159. package/src/adapter/zigate/driver/messageType.ts +287 -0
  160. package/src/adapter/zigate/driver/parameterType.ts +32 -0
  161. package/src/adapter/zigate/driver/ziGateObject.ts +146 -0
  162. package/src/adapter/zigate/driver/zigate.ts +422 -0
  163. package/src/adapter/zoh/adapter/utils.ts +27 -0
  164. package/src/adapter/zoh/adapter/zohAdapter.ts +931 -0
  165. package/src/buffalo/buffalo.ts +336 -0
  166. package/src/buffalo/index.ts +1 -0
  167. package/src/controller/controller.ts +1159 -0
  168. package/src/controller/database.ts +148 -0
  169. package/src/controller/events.ts +52 -0
  170. package/src/controller/greenPower.ts +613 -0
  171. package/src/controller/helpers/index.ts +1 -0
  172. package/src/controller/helpers/installCodes.ts +107 -0
  173. package/src/controller/helpers/ota.ts +575 -0
  174. package/src/controller/helpers/request.ts +96 -0
  175. package/src/controller/helpers/requestQueue.ts +126 -0
  176. package/src/controller/helpers/zclFrameConverter.ts +64 -0
  177. package/src/controller/helpers/zclTransactionSequenceNumber.ts +15 -0
  178. package/src/controller/index.ts +6 -0
  179. package/src/controller/model/device.ts +1791 -0
  180. package/src/controller/model/endpoint.ts +1235 -0
  181. package/src/controller/model/entity.ts +43 -0
  182. package/src/controller/model/group.ts +446 -0
  183. package/src/controller/model/index.ts +5 -0
  184. package/src/controller/model/konnextConfig.ts +6 -0
  185. package/src/controller/model/zigbeeEntity.ts +30 -0
  186. package/src/controller/touchlink.ts +195 -0
  187. package/src/controller/tstype.ts +374 -0
  188. package/src/index.ts +14 -0
  189. package/src/models/backup-storage-legacy.ts +48 -0
  190. package/src/models/backup-storage-unified.ts +47 -0
  191. package/src/models/backup.ts +37 -0
  192. package/src/models/index.ts +5 -0
  193. package/src/models/network-options.ts +11 -0
  194. package/src/utils/aes.ts +218 -0
  195. package/src/utils/async-mutex.ts +31 -0
  196. package/src/utils/backup.ts +152 -0
  197. package/src/utils/index.ts +5 -0
  198. package/src/utils/logger.ts +20 -0
  199. package/src/utils/patchBigIntSerialization.ts +8 -0
  200. package/src/utils/queue.ts +79 -0
  201. package/src/utils/timeService.ts +139 -0
  202. package/src/utils/utils.ts +19 -0
  203. package/src/utils/wait.ts +5 -0
  204. package/src/utils/waitress.ts +96 -0
  205. package/src/zspec/consts.ts +89 -0
  206. package/src/zspec/enums.ts +22 -0
  207. package/src/zspec/index.ts +3 -0
  208. package/src/zspec/tstypes.ts +18 -0
  209. package/src/zspec/utils.ts +247 -0
  210. package/src/zspec/zcl/buffaloZcl.ts +1073 -0
  211. package/src/zspec/zcl/definition/cluster.ts +7845 -0
  212. package/src/zspec/zcl/definition/clusters-types.ts +8577 -0
  213. package/src/zspec/zcl/definition/consts.ts +24 -0
  214. package/src/zspec/zcl/definition/datatypes.ts +2454 -0
  215. package/src/zspec/zcl/definition/enums.ts +224 -0
  216. package/src/zspec/zcl/definition/foundation.ts +342 -0
  217. package/src/zspec/zcl/definition/manufacturerCode.ts +730 -0
  218. package/src/zspec/zcl/definition/status.ts +69 -0
  219. package/src/zspec/zcl/definition/tstype.ts +446 -0
  220. package/src/zspec/zcl/index.ts +11 -0
  221. package/src/zspec/zcl/utils.ts +521 -0
  222. package/src/zspec/zcl/zclFrame.ts +383 -0
  223. package/src/zspec/zcl/zclHeader.ts +102 -0
  224. package/src/zspec/zcl/zclStatusError.ts +10 -0
  225. package/src/zspec/zdo/buffaloZdo.ts +2336 -0
  226. package/src/zspec/zdo/definition/clusters.ts +722 -0
  227. package/src/zspec/zdo/definition/consts.ts +16 -0
  228. package/src/zspec/zdo/definition/enums.ts +99 -0
  229. package/src/zspec/zdo/definition/status.ts +105 -0
  230. package/src/zspec/zdo/definition/tstypes.ts +1062 -0
  231. package/src/zspec/zdo/index.ts +7 -0
  232. package/src/zspec/zdo/utils.ts +76 -0
  233. package/src/zspec/zdo/zdoStatusError.ts +10 -0
  234. package/test/adapter/adapter.test.ts +1276 -0
  235. package/test/adapter/ember/ash.test.ts +337 -0
  236. package/test/adapter/ember/consts.ts +131 -0
  237. package/test/adapter/ember/emberAdapter.test.ts +3447 -0
  238. package/test/adapter/ember/ezsp.test.ts +389 -0
  239. package/test/adapter/ember/ezspBuffalo.test.ts +93 -0
  240. package/test/adapter/ember/ezspError.test.ts +12 -0
  241. package/test/adapter/ember/math.test.ts +190 -0
  242. package/test/adapter/ezsp/frame.test.ts +30 -0
  243. package/test/adapter/ezsp/uart.test.ts +181 -0
  244. package/test/adapter/z-stack/adapter.test.ts +4260 -0
  245. package/test/adapter/z-stack/constants.test.ts +33 -0
  246. package/test/adapter/z-stack/structs.test.ts +115 -0
  247. package/test/adapter/z-stack/unpi.test.ts +213 -0
  248. package/test/adapter/z-stack/znp.test.ts +1288 -0
  249. package/test/adapter/zboss/fixZdoResponse.test.ts +179 -0
  250. package/test/adapter/zigate/patchZdoBuffaloBE.test.ts +81 -0
  251. package/test/adapter/zigate/zdo.test.ts +187 -0
  252. package/test/adapter/zoh/utils.test.ts +36 -0
  253. package/test/adapter/zoh/zohAdapter.test.ts +1451 -0
  254. package/test/benchOptions.ts +14 -0
  255. package/test/buffalo.test.ts +431 -0
  256. package/test/controller.bench.ts +215 -0
  257. package/test/controller.test.ts +10030 -0
  258. package/test/data/integrity-code-1166-012B-24031511-upgradeMe-RB 249 T.zigbee +0 -0
  259. package/test/data/manuf-tags-tradfri-cv-cct-unified_release_prod_v587757105_33e34452-9267-4665-bc5a-844c8f61f063.ota +0 -0
  260. package/test/data/padded-tretakt_smart_plug_soc-0x1100-2.4.25-prod.ota.ota.signed +0 -0
  261. package/test/data/telink-aes-A60_RGBW_T-0x00B6-0x03483712-MF_DIS.OTA +0 -0
  262. package/test/data/zbminir2_v1.0.8.ota +0 -0
  263. package/test/device-ota.test.ts +3332 -0
  264. package/test/greenpower.test.ts +1409 -0
  265. package/test/mockAdapters.ts +95 -0
  266. package/test/mockDevices.ts +623 -0
  267. package/test/requests.bench.ts +321 -0
  268. package/test/testUtils.ts +20 -0
  269. package/test/timeService.test.ts +214 -0
  270. package/test/tsconfig.json +9 -0
  271. package/test/utils/math.ts +19 -0
  272. package/test/utils.test.ts +352 -0
  273. package/test/vitest.config.mts +28 -0
  274. package/test/vitest.ts +9 -0
  275. package/test/zcl.test.ts +2858 -0
  276. package/test/zspec/utils.test.ts +68 -0
  277. package/test/zspec/zcl/buffalo.test.ts +1316 -0
  278. package/test/zspec/zcl/frame.test.ts +1056 -0
  279. package/test/zspec/zcl/utils.test.ts +650 -0
  280. package/test/zspec/zdo/buffalo.test.ts +1850 -0
  281. package/test/zspec/zdo/utils.test.ts +241 -0
  282. package/tsconfig.json +8 -10
  283. package/.babelrc.js +0 -6
  284. package/.eslintignore +0 -3
  285. package/dist/adapter/adapter.d.ts +0 -64
  286. package/dist/adapter/adapter.d.ts.map +0 -1
  287. package/dist/adapter/adapter.js +0 -157
  288. package/dist/adapter/adapter.js.map +0 -1
  289. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +0 -71
  290. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +0 -1
  291. package/dist/adapter/deconz/adapter/deconzAdapter.js +0 -1072
  292. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +0 -1
  293. package/dist/adapter/deconz/adapter/index.d.ts +0 -3
  294. package/dist/adapter/deconz/adapter/index.d.ts.map +0 -1
  295. package/dist/adapter/deconz/adapter/index.js +0 -11
  296. package/dist/adapter/deconz/adapter/index.js.map +0 -1
  297. package/dist/adapter/deconz/driver/constants.d.ts +0 -105
  298. package/dist/adapter/deconz/driver/constants.d.ts.map +0 -1
  299. package/dist/adapter/deconz/driver/constants.js +0 -56
  300. package/dist/adapter/deconz/driver/constants.js.map +0 -1
  301. package/dist/adapter/deconz/driver/driver.d.ts +0 -82
  302. package/dist/adapter/deconz/driver/driver.d.ts.map +0 -1
  303. package/dist/adapter/deconz/driver/driver.js +0 -751
  304. package/dist/adapter/deconz/driver/driver.js.map +0 -1
  305. package/dist/adapter/deconz/driver/frame.d.ts +0 -7
  306. package/dist/adapter/deconz/driver/frame.d.ts.map +0 -1
  307. package/dist/adapter/deconz/driver/frame.js +0 -14
  308. package/dist/adapter/deconz/driver/frame.js.map +0 -1
  309. package/dist/adapter/deconz/driver/frameParser.d.ts +0 -3
  310. package/dist/adapter/deconz/driver/frameParser.d.ts.map +0 -1
  311. package/dist/adapter/deconz/driver/frameParser.js +0 -444
  312. package/dist/adapter/deconz/driver/frameParser.js.map +0 -1
  313. package/dist/adapter/deconz/driver/parser.d.ts +0 -13
  314. package/dist/adapter/deconz/driver/parser.d.ts.map +0 -1
  315. package/dist/adapter/deconz/driver/parser.js +0 -64
  316. package/dist/adapter/deconz/driver/parser.js.map +0 -1
  317. package/dist/adapter/deconz/driver/writer.d.ts +0 -9
  318. package/dist/adapter/deconz/driver/writer.d.ts.map +0 -1
  319. package/dist/adapter/deconz/driver/writer.js +0 -45
  320. package/dist/adapter/deconz/driver/writer.js.map +0 -1
  321. package/dist/adapter/ember/adapter/emberAdapter.d.ts +0 -806
  322. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +0 -1
  323. package/dist/adapter/ember/adapter/emberAdapter.js +0 -2942
  324. package/dist/adapter/ember/adapter/emberAdapter.js.map +0 -1
  325. package/dist/adapter/ember/adapter/endpoints.d.ts +0 -27
  326. package/dist/adapter/ember/adapter/endpoints.d.ts.map +0 -1
  327. package/dist/adapter/ember/adapter/endpoints.js +0 -68
  328. package/dist/adapter/ember/adapter/endpoints.js.map +0 -1
  329. package/dist/adapter/ember/adapter/index.d.ts +0 -3
  330. package/dist/adapter/ember/adapter/index.d.ts.map +0 -1
  331. package/dist/adapter/ember/adapter/index.js +0 -6
  332. package/dist/adapter/ember/adapter/index.js.map +0 -1
  333. package/dist/adapter/ember/adapter/oneWaitress.d.ts +0 -108
  334. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +0 -1
  335. package/dist/adapter/ember/adapter/oneWaitress.js +0 -241
  336. package/dist/adapter/ember/adapter/oneWaitress.js.map +0 -1
  337. package/dist/adapter/ember/adapter/requestQueue.d.ts +0 -57
  338. package/dist/adapter/ember/adapter/requestQueue.d.ts.map +0 -1
  339. package/dist/adapter/ember/adapter/requestQueue.js +0 -139
  340. package/dist/adapter/ember/adapter/requestQueue.js.map +0 -1
  341. package/dist/adapter/ember/adapter/tokensManager.d.ts +0 -69
  342. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +0 -1
  343. package/dist/adapter/ember/adapter/tokensManager.js +0 -688
  344. package/dist/adapter/ember/adapter/tokensManager.js.map +0 -1
  345. package/dist/adapter/ember/consts.d.ts +0 -191
  346. package/dist/adapter/ember/consts.d.ts.map +0 -1
  347. package/dist/adapter/ember/consts.js +0 -246
  348. package/dist/adapter/ember/consts.js.map +0 -1
  349. package/dist/adapter/ember/enums.d.ts +0 -2172
  350. package/dist/adapter/ember/enums.d.ts.map +0 -1
  351. package/dist/adapter/ember/enums.js +0 -2375
  352. package/dist/adapter/ember/enums.js.map +0 -1
  353. package/dist/adapter/ember/ezsp/buffalo.d.ts +0 -156
  354. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +0 -1
  355. package/dist/adapter/ember/ezsp/buffalo.js +0 -1033
  356. package/dist/adapter/ember/ezsp/buffalo.js.map +0 -1
  357. package/dist/adapter/ember/ezsp/consts.d.ts +0 -116
  358. package/dist/adapter/ember/ezsp/consts.d.ts.map +0 -1
  359. package/dist/adapter/ember/ezsp/consts.js +0 -128
  360. package/dist/adapter/ember/ezsp/consts.js.map +0 -1
  361. package/dist/adapter/ember/ezsp/enums.d.ts +0 -879
  362. package/dist/adapter/ember/ezsp/enums.d.ts.map +0 -1
  363. package/dist/adapter/ember/ezsp/enums.js +0 -948
  364. package/dist/adapter/ember/ezsp/enums.js.map +0 -1
  365. package/dist/adapter/ember/ezsp/ezsp.d.ts +0 -2662
  366. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +0 -1
  367. package/dist/adapter/ember/ezsp/ezsp.js +0 -6454
  368. package/dist/adapter/ember/ezsp/ezsp.js.map +0 -1
  369. package/dist/adapter/ember/types.d.ts +0 -733
  370. package/dist/adapter/ember/types.d.ts.map +0 -1
  371. package/dist/adapter/ember/types.js +0 -3
  372. package/dist/adapter/ember/types.js.map +0 -1
  373. package/dist/adapter/ember/uart/ash.d.ts +0 -464
  374. package/dist/adapter/ember/uart/ash.d.ts.map +0 -1
  375. package/dist/adapter/ember/uart/ash.js +0 -1633
  376. package/dist/adapter/ember/uart/ash.js.map +0 -1
  377. package/dist/adapter/ember/uart/consts.d.ts +0 -91
  378. package/dist/adapter/ember/uart/consts.d.ts.map +0 -1
  379. package/dist/adapter/ember/uart/consts.js +0 -100
  380. package/dist/adapter/ember/uart/consts.js.map +0 -1
  381. package/dist/adapter/ember/uart/enums.d.ts +0 -191
  382. package/dist/adapter/ember/uart/enums.d.ts.map +0 -1
  383. package/dist/adapter/ember/uart/enums.js +0 -197
  384. package/dist/adapter/ember/uart/enums.js.map +0 -1
  385. package/dist/adapter/ember/uart/parser.d.ts +0 -10
  386. package/dist/adapter/ember/uart/parser.d.ts.map +0 -1
  387. package/dist/adapter/ember/uart/parser.js +0 -37
  388. package/dist/adapter/ember/uart/parser.js.map +0 -1
  389. package/dist/adapter/ember/uart/queues.d.ts +0 -85
  390. package/dist/adapter/ember/uart/queues.d.ts.map +0 -1
  391. package/dist/adapter/ember/uart/queues.js +0 -214
  392. package/dist/adapter/ember/uart/queues.js.map +0 -1
  393. package/dist/adapter/ember/uart/writer.d.ts +0 -15
  394. package/dist/adapter/ember/uart/writer.d.ts.map +0 -1
  395. package/dist/adapter/ember/uart/writer.js +0 -46
  396. package/dist/adapter/ember/uart/writer.js.map +0 -1
  397. package/dist/adapter/ember/utils/initters.d.ts +0 -20
  398. package/dist/adapter/ember/utils/initters.d.ts.map +0 -1
  399. package/dist/adapter/ember/utils/initters.js +0 -58
  400. package/dist/adapter/ember/utils/initters.js.map +0 -1
  401. package/dist/adapter/ember/utils/math.d.ts +0 -51
  402. package/dist/adapter/ember/utils/math.d.ts.map +0 -1
  403. package/dist/adapter/ember/utils/math.js +0 -102
  404. package/dist/adapter/ember/utils/math.js.map +0 -1
  405. package/dist/adapter/ember/zdo.d.ts +0 -925
  406. package/dist/adapter/ember/zdo.d.ts.map +0 -1
  407. package/dist/adapter/ember/zdo.js +0 -723
  408. package/dist/adapter/ember/zdo.js.map +0 -1
  409. package/dist/adapter/events.d.ts +0 -42
  410. package/dist/adapter/events.d.ts.map +0 -1
  411. package/dist/adapter/events.js +0 -13
  412. package/dist/adapter/events.js.map +0 -1
  413. package/dist/adapter/ezsp/adapter/backup.d.ts +0 -13
  414. package/dist/adapter/ezsp/adapter/backup.d.ts.map +0 -1
  415. package/dist/adapter/ezsp/adapter/backup.js +0 -101
  416. package/dist/adapter/ezsp/adapter/backup.js.map +0 -1
  417. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +0 -65
  418. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +0 -1
  419. package/dist/adapter/ezsp/adapter/ezspAdapter.js +0 -634
  420. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +0 -1
  421. package/dist/adapter/ezsp/adapter/index.d.ts +0 -3
  422. package/dist/adapter/ezsp/adapter/index.d.ts.map +0 -1
  423. package/dist/adapter/ezsp/adapter/index.js +0 -11
  424. package/dist/adapter/ezsp/adapter/index.js.map +0 -1
  425. package/dist/adapter/ezsp/driver/commands.d.ts +0 -37
  426. package/dist/adapter/ezsp/driver/commands.d.ts.map +0 -1
  427. package/dist/adapter/ezsp/driver/commands.js +0 -2387
  428. package/dist/adapter/ezsp/driver/commands.js.map +0 -1
  429. package/dist/adapter/ezsp/driver/consts.d.ts +0 -11
  430. package/dist/adapter/ezsp/driver/consts.d.ts.map +0 -1
  431. package/dist/adapter/ezsp/driver/consts.js +0 -14
  432. package/dist/adapter/ezsp/driver/consts.js.map +0 -1
  433. package/dist/adapter/ezsp/driver/driver.d.ts +0 -109
  434. package/dist/adapter/ezsp/driver/driver.d.ts.map +0 -1
  435. package/dist/adapter/ezsp/driver/driver.js +0 -796
  436. package/dist/adapter/ezsp/driver/driver.js.map +0 -1
  437. package/dist/adapter/ezsp/driver/ezsp.d.ts +0 -106
  438. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +0 -1
  439. package/dist/adapter/ezsp/driver/ezsp.js +0 -664
  440. package/dist/adapter/ezsp/driver/ezsp.js.map +0 -1
  441. package/dist/adapter/ezsp/driver/frame.d.ts +0 -40
  442. package/dist/adapter/ezsp/driver/frame.d.ts.map +0 -1
  443. package/dist/adapter/ezsp/driver/frame.js +0 -101
  444. package/dist/adapter/ezsp/driver/frame.js.map +0 -1
  445. package/dist/adapter/ezsp/driver/index.d.ts +0 -4
  446. package/dist/adapter/ezsp/driver/index.d.ts.map +0 -1
  447. package/dist/adapter/ezsp/driver/index.js +0 -9
  448. package/dist/adapter/ezsp/driver/index.js.map +0 -1
  449. package/dist/adapter/ezsp/driver/multicast.d.ts +0 -13
  450. package/dist/adapter/ezsp/driver/multicast.d.ts.map +0 -1
  451. package/dist/adapter/ezsp/driver/multicast.js +0 -74
  452. package/dist/adapter/ezsp/driver/multicast.js.map +0 -1
  453. package/dist/adapter/ezsp/driver/parser.d.ts +0 -12
  454. package/dist/adapter/ezsp/driver/parser.d.ts.map +0 -1
  455. package/dist/adapter/ezsp/driver/parser.js +0 -105
  456. package/dist/adapter/ezsp/driver/parser.js.map +0 -1
  457. package/dist/adapter/ezsp/driver/types/basic.d.ts +0 -63
  458. package/dist/adapter/ezsp/driver/types/basic.d.ts.map +0 -1
  459. package/dist/adapter/ezsp/driver/types/basic.js +0 -209
  460. package/dist/adapter/ezsp/driver/types/basic.js.map +0 -1
  461. package/dist/adapter/ezsp/driver/types/index.d.ts +0 -10
  462. package/dist/adapter/ezsp/driver/types/index.d.ts.map +0 -1
  463. package/dist/adapter/ezsp/driver/types/index.js +0 -139
  464. package/dist/adapter/ezsp/driver/types/index.js.map +0 -1
  465. package/dist/adapter/ezsp/driver/types/named.d.ts +0 -1288
  466. package/dist/adapter/ezsp/driver/types/named.d.ts.map +0 -1
  467. package/dist/adapter/ezsp/driver/types/named.js +0 -2330
  468. package/dist/adapter/ezsp/driver/types/named.js.map +0 -1
  469. package/dist/adapter/ezsp/driver/types/struct.d.ts +0 -271
  470. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +0 -1
  471. package/dist/adapter/ezsp/driver/types/struct.js +0 -804
  472. package/dist/adapter/ezsp/driver/types/struct.js.map +0 -1
  473. package/dist/adapter/ezsp/driver/uart.d.ts +0 -49
  474. package/dist/adapter/ezsp/driver/uart.d.ts.map +0 -1
  475. package/dist/adapter/ezsp/driver/uart.js +0 -383
  476. package/dist/adapter/ezsp/driver/uart.js.map +0 -1
  477. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +0 -3
  478. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +0 -1
  479. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +0 -56
  480. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +0 -1
  481. package/dist/adapter/ezsp/driver/utils/index.d.ts +0 -20
  482. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +0 -1
  483. package/dist/adapter/ezsp/driver/utils/index.js +0 -73
  484. package/dist/adapter/ezsp/driver/utils/index.js.map +0 -1
  485. package/dist/adapter/ezsp/driver/writer.d.ts +0 -14
  486. package/dist/adapter/ezsp/driver/writer.d.ts.map +0 -1
  487. package/dist/adapter/ezsp/driver/writer.js +0 -83
  488. package/dist/adapter/ezsp/driver/writer.js.map +0 -1
  489. package/dist/adapter/index.d.ts +0 -5
  490. package/dist/adapter/index.d.ts.map +0 -1
  491. package/dist/adapter/index.js +0 -36
  492. package/dist/adapter/index.js.map +0 -1
  493. package/dist/adapter/serialPort.d.ts +0 -14
  494. package/dist/adapter/serialPort.d.ts.map +0 -1
  495. package/dist/adapter/serialPort.js +0 -47
  496. package/dist/adapter/serialPort.js.map +0 -1
  497. package/dist/adapter/serialPortUtils.d.ts +0 -13
  498. package/dist/adapter/serialPortUtils.d.ts.map +0 -1
  499. package/dist/adapter/serialPortUtils.js +0 -19
  500. package/dist/adapter/serialPortUtils.js.map +0 -1
  501. package/dist/adapter/socketPortUtils.d.ts +0 -11
  502. package/dist/adapter/socketPortUtils.d.ts.map +0 -1
  503. package/dist/adapter/socketPortUtils.js +0 -17
  504. package/dist/adapter/socketPortUtils.js.map +0 -1
  505. package/dist/adapter/tstype.d.ts +0 -86
  506. package/dist/adapter/tstype.d.ts.map +0 -1
  507. package/dist/adapter/tstype.js +0 -3
  508. package/dist/adapter/tstype.js.map +0 -1
  509. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +0 -62
  510. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +0 -1
  511. package/dist/adapter/z-stack/adapter/adapter-backup.js +0 -459
  512. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +0 -1
  513. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +0 -151
  514. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +0 -1
  515. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +0 -259
  516. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +0 -1
  517. package/dist/adapter/z-stack/adapter/endpoints.d.ts +0 -12
  518. package/dist/adapter/z-stack/adapter/endpoints.d.ts.map +0 -1
  519. package/dist/adapter/z-stack/adapter/endpoints.js +0 -74
  520. package/dist/adapter/z-stack/adapter/endpoints.js.map +0 -1
  521. package/dist/adapter/z-stack/adapter/index.d.ts +0 -3
  522. package/dist/adapter/z-stack/adapter/index.d.ts.map +0 -1
  523. package/dist/adapter/z-stack/adapter/index.js +0 -9
  524. package/dist/adapter/z-stack/adapter/index.js.map +0 -1
  525. package/dist/adapter/z-stack/adapter/manager.d.ts +0 -84
  526. package/dist/adapter/z-stack/adapter/manager.d.ts.map +0 -1
  527. package/dist/adapter/z-stack/adapter/manager.js +0 -474
  528. package/dist/adapter/z-stack/adapter/manager.js.map +0 -1
  529. package/dist/adapter/z-stack/adapter/tstype.d.ts +0 -7
  530. package/dist/adapter/z-stack/adapter/tstype.d.ts.map +0 -1
  531. package/dist/adapter/z-stack/adapter/tstype.js +0 -10
  532. package/dist/adapter/z-stack/adapter/tstype.js.map +0 -1
  533. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +0 -86
  534. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +0 -1
  535. package/dist/adapter/z-stack/adapter/zStackAdapter.js +0 -912
  536. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +0 -1
  537. package/dist/adapter/z-stack/constants/af.d.ts +0 -24
  538. package/dist/adapter/z-stack/constants/af.d.ts.map +0 -1
  539. package/dist/adapter/z-stack/constants/af.js +0 -28
  540. package/dist/adapter/z-stack/constants/af.js.map +0 -1
  541. package/dist/adapter/z-stack/constants/common.d.ts +0 -279
  542. package/dist/adapter/z-stack/constants/common.d.ts.map +0 -1
  543. package/dist/adapter/z-stack/constants/common.js +0 -293
  544. package/dist/adapter/z-stack/constants/common.js.map +0 -1
  545. package/dist/adapter/z-stack/constants/dbg.d.ts +0 -23
  546. package/dist/adapter/z-stack/constants/dbg.d.ts.map +0 -1
  547. package/dist/adapter/z-stack/constants/dbg.js +0 -25
  548. package/dist/adapter/z-stack/constants/dbg.js.map +0 -1
  549. package/dist/adapter/z-stack/constants/index.d.ts +0 -11
  550. package/dist/adapter/z-stack/constants/index.d.ts.map +0 -1
  551. package/dist/adapter/z-stack/constants/index.js +0 -48
  552. package/dist/adapter/z-stack/constants/index.js.map +0 -1
  553. package/dist/adapter/z-stack/constants/mac.d.ts +0 -128
  554. package/dist/adapter/z-stack/constants/mac.d.ts.map +0 -1
  555. package/dist/adapter/z-stack/constants/mac.js +0 -130
  556. package/dist/adapter/z-stack/constants/mac.js.map +0 -1
  557. package/dist/adapter/z-stack/constants/sapi.d.ts +0 -25
  558. package/dist/adapter/z-stack/constants/sapi.d.ts.map +0 -1
  559. package/dist/adapter/z-stack/constants/sapi.js +0 -27
  560. package/dist/adapter/z-stack/constants/sapi.js.map +0 -1
  561. package/dist/adapter/z-stack/constants/sys.d.ts +0 -72
  562. package/dist/adapter/z-stack/constants/sys.d.ts.map +0 -1
  563. package/dist/adapter/z-stack/constants/sys.js +0 -74
  564. package/dist/adapter/z-stack/constants/sys.js.map +0 -1
  565. package/dist/adapter/z-stack/constants/util.d.ts +0 -82
  566. package/dist/adapter/z-stack/constants/util.d.ts.map +0 -1
  567. package/dist/adapter/z-stack/constants/util.js +0 -84
  568. package/dist/adapter/z-stack/constants/util.js.map +0 -1
  569. package/dist/adapter/z-stack/constants/utils.d.ts +0 -5
  570. package/dist/adapter/z-stack/constants/utils.d.ts.map +0 -1
  571. package/dist/adapter/z-stack/constants/utils.js +0 -15
  572. package/dist/adapter/z-stack/constants/utils.js.map +0 -1
  573. package/dist/adapter/z-stack/constants/zdo.d.ts +0 -103
  574. package/dist/adapter/z-stack/constants/zdo.d.ts.map +0 -1
  575. package/dist/adapter/z-stack/constants/zdo.js +0 -105
  576. package/dist/adapter/z-stack/constants/zdo.js.map +0 -1
  577. package/dist/adapter/z-stack/models/index.d.ts +0 -2
  578. package/dist/adapter/z-stack/models/index.d.ts.map +0 -1
  579. package/dist/adapter/z-stack/models/index.js +0 -18
  580. package/dist/adapter/z-stack/models/index.js.map +0 -1
  581. package/dist/adapter/z-stack/models/startup-options.d.ts +0 -13
  582. package/dist/adapter/z-stack/models/startup-options.d.ts.map +0 -1
  583. package/dist/adapter/z-stack/models/startup-options.js +0 -3
  584. package/dist/adapter/z-stack/models/startup-options.js.map +0 -1
  585. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +0 -24
  586. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +0 -1
  587. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +0 -46
  588. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +0 -1
  589. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +0 -11
  590. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +0 -1
  591. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +0 -23
  592. package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +0 -1
  593. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +0 -11
  594. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts.map +0 -1
  595. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +0 -22
  596. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +0 -1
  597. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +0 -11
  598. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +0 -1
  599. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +0 -24
  600. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +0 -1
  601. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +0 -11
  602. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts.map +0 -1
  603. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +0 -25
  604. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +0 -1
  605. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +0 -11
  606. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +0 -1
  607. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +0 -24
  608. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +0 -1
  609. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +0 -9
  610. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts.map +0 -1
  611. package/dist/adapter/z-stack/structs/entries/channel-list.js +0 -16
  612. package/dist/adapter/z-stack/structs/entries/channel-list.js.map +0 -1
  613. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +0 -9
  614. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +0 -1
  615. package/dist/adapter/z-stack/structs/entries/has-configured.js +0 -17
  616. package/dist/adapter/z-stack/structs/entries/has-configured.js.map +0 -1
  617. package/dist/adapter/z-stack/structs/entries/index.d.ts +0 -17
  618. package/dist/adapter/z-stack/structs/entries/index.d.ts.map +0 -1
  619. package/dist/adapter/z-stack/structs/entries/index.js +0 -33
  620. package/dist/adapter/z-stack/structs/entries/index.js.map +0 -1
  621. package/dist/adapter/z-stack/structs/entries/nib.d.ts +0 -11
  622. package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +0 -1
  623. package/dist/adapter/z-stack/structs/entries/nib.js +0 -69
  624. package/dist/adapter/z-stack/structs/entries/nib.js.map +0 -1
  625. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +0 -11
  626. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +0 -1
  627. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +0 -19
  628. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +0 -1
  629. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +0 -9
  630. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +0 -1
  631. package/dist/adapter/z-stack/structs/entries/nwk-key.js +0 -16
  632. package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +0 -1
  633. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +0 -9
  634. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts.map +0 -1
  635. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +0 -16
  636. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +0 -1
  637. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +0 -14
  638. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts.map +0 -1
  639. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +0 -24
  640. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +0 -1
  641. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +0 -11
  642. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +0 -1
  643. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +0 -23
  644. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +0 -1
  645. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +0 -21
  646. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts.map +0 -1
  647. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +0 -37
  648. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +0 -1
  649. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +0 -11
  650. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +0 -1
  651. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +0 -25
  652. package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +0 -1
  653. package/dist/adapter/z-stack/structs/index.d.ts +0 -5
  654. package/dist/adapter/z-stack/structs/index.d.ts.map +0 -1
  655. package/dist/adapter/z-stack/structs/index.js +0 -21
  656. package/dist/adapter/z-stack/structs/index.js.map +0 -1
  657. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +0 -14
  658. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts.map +0 -1
  659. package/dist/adapter/z-stack/structs/serializable-memory-object.js +0 -3
  660. package/dist/adapter/z-stack/structs/serializable-memory-object.js.map +0 -1
  661. package/dist/adapter/z-stack/structs/struct.d.ts +0 -100
  662. package/dist/adapter/z-stack/structs/struct.d.ts.map +0 -1
  663. package/dist/adapter/z-stack/structs/struct.js +0 -297
  664. package/dist/adapter/z-stack/structs/struct.js.map +0 -1
  665. package/dist/adapter/z-stack/structs/table.d.ts +0 -95
  666. package/dist/adapter/z-stack/structs/table.d.ts.map +0 -1
  667. package/dist/adapter/z-stack/structs/table.js +0 -164
  668. package/dist/adapter/z-stack/structs/table.js.map +0 -1
  669. package/dist/adapter/z-stack/unpi/constants.d.ts +0 -29
  670. package/dist/adapter/z-stack/unpi/constants.d.ts.map +0 -1
  671. package/dist/adapter/z-stack/unpi/constants.js +0 -40
  672. package/dist/adapter/z-stack/unpi/constants.js.map +0 -1
  673. package/dist/adapter/z-stack/unpi/frame.d.ts +0 -17
  674. package/dist/adapter/z-stack/unpi/frame.d.ts.map +0 -1
  675. package/dist/adapter/z-stack/unpi/frame.js +0 -55
  676. package/dist/adapter/z-stack/unpi/frame.js.map +0 -1
  677. package/dist/adapter/z-stack/unpi/index.d.ts +0 -6
  678. package/dist/adapter/z-stack/unpi/index.d.ts.map +0 -1
  679. package/dist/adapter/z-stack/unpi/index.js +0 -38
  680. package/dist/adapter/z-stack/unpi/index.js.map +0 -1
  681. package/dist/adapter/z-stack/unpi/parser.d.ts +0 -13
  682. package/dist/adapter/z-stack/unpi/parser.d.ts.map +0 -1
  683. package/dist/adapter/z-stack/unpi/parser.js +0 -86
  684. package/dist/adapter/z-stack/unpi/parser.js.map +0 -1
  685. package/dist/adapter/z-stack/unpi/writer.d.ts +0 -12
  686. package/dist/adapter/z-stack/unpi/writer.d.ts.map +0 -1
  687. package/dist/adapter/z-stack/unpi/writer.js +0 -55
  688. package/dist/adapter/z-stack/unpi/writer.js.map +0 -1
  689. package/dist/adapter/z-stack/utils/channel-list.d.ts +0 -21
  690. package/dist/adapter/z-stack/utils/channel-list.d.ts.map +0 -1
  691. package/dist/adapter/z-stack/utils/channel-list.js +0 -41
  692. package/dist/adapter/z-stack/utils/channel-list.js.map +0 -1
  693. package/dist/adapter/z-stack/utils/index.d.ts +0 -3
  694. package/dist/adapter/z-stack/utils/index.d.ts.map +0 -1
  695. package/dist/adapter/z-stack/utils/index.js +0 -19
  696. package/dist/adapter/z-stack/utils/index.js.map +0 -1
  697. package/dist/adapter/z-stack/utils/network-options.d.ts +0 -9
  698. package/dist/adapter/z-stack/utils/network-options.d.ts.map +0 -1
  699. package/dist/adapter/z-stack/utils/network-options.js +0 -23
  700. package/dist/adapter/z-stack/utils/network-options.js.map +0 -1
  701. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +0 -14
  702. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +0 -1
  703. package/dist/adapter/z-stack/znp/buffaloZnp.js +0 -243
  704. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +0 -1
  705. package/dist/adapter/z-stack/znp/definition.d.ts +0 -6
  706. package/dist/adapter/z-stack/znp/definition.d.ts.map +0 -1
  707. package/dist/adapter/z-stack/znp/definition.js +0 -3052
  708. package/dist/adapter/z-stack/znp/definition.js.map +0 -1
  709. package/dist/adapter/z-stack/znp/index.d.ts +0 -4
  710. package/dist/adapter/z-stack/znp/index.d.ts.map +0 -1
  711. package/dist/adapter/z-stack/znp/index.js +0 -11
  712. package/dist/adapter/z-stack/znp/index.js.map +0 -1
  713. package/dist/adapter/z-stack/znp/parameterType.d.ts +0 -23
  714. package/dist/adapter/z-stack/znp/parameterType.d.ts.map +0 -1
  715. package/dist/adapter/z-stack/znp/parameterType.js +0 -26
  716. package/dist/adapter/z-stack/znp/parameterType.js.map +0 -1
  717. package/dist/adapter/z-stack/znp/tstype.d.ts +0 -23
  718. package/dist/adapter/z-stack/znp/tstype.d.ts.map +0 -1
  719. package/dist/adapter/z-stack/znp/tstype.js +0 -3
  720. package/dist/adapter/z-stack/znp/tstype.js.map +0 -1
  721. package/dist/adapter/z-stack/znp/znp.d.ts +0 -47
  722. package/dist/adapter/z-stack/znp/znp.d.ts.map +0 -1
  723. package/dist/adapter/z-stack/znp/znp.js +0 -322
  724. package/dist/adapter/z-stack/znp/znp.js.map +0 -1
  725. package/dist/adapter/z-stack/znp/zpiObject.d.ts +0 -20
  726. package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +0 -1
  727. package/dist/adapter/z-stack/znp/zpiObject.js +0 -103
  728. package/dist/adapter/z-stack/znp/zpiObject.js.map +0 -1
  729. package/dist/adapter/zigate/adapter/index.d.ts +0 -3
  730. package/dist/adapter/zigate/adapter/index.d.ts.map +0 -1
  731. package/dist/adapter/zigate/adapter/index.js +0 -11
  732. package/dist/adapter/zigate/adapter/index.js.map +0 -1
  733. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +0 -72
  734. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +0 -1
  735. package/dist/adapter/zigate/adapter/zigateAdapter.js +0 -681
  736. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +0 -1
  737. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +0 -18
  738. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +0 -1
  739. package/dist/adapter/zigate/driver/buffaloZiGate.js +0 -190
  740. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +0 -1
  741. package/dist/adapter/zigate/driver/commandType.d.ts +0 -43
  742. package/dist/adapter/zigate/driver/commandType.d.ts.map +0 -1
  743. package/dist/adapter/zigate/driver/commandType.js +0 -390
  744. package/dist/adapter/zigate/driver/commandType.js.map +0 -1
  745. package/dist/adapter/zigate/driver/constants.d.ts +0 -277
  746. package/dist/adapter/zigate/driver/constants.d.ts.map +0 -1
  747. package/dist/adapter/zigate/driver/constants.js +0 -372
  748. package/dist/adapter/zigate/driver/constants.js.map +0 -1
  749. package/dist/adapter/zigate/driver/frame.d.ts +0 -27
  750. package/dist/adapter/zigate/driver/frame.d.ts.map +0 -1
  751. package/dist/adapter/zigate/driver/frame.js +0 -173
  752. package/dist/adapter/zigate/driver/frame.js.map +0 -1
  753. package/dist/adapter/zigate/driver/messageType.d.ts +0 -13
  754. package/dist/adapter/zigate/driver/messageType.d.ts.map +0 -1
  755. package/dist/adapter/zigate/driver/messageType.js +0 -284
  756. package/dist/adapter/zigate/driver/messageType.js.map +0 -1
  757. package/dist/adapter/zigate/driver/parameterType.d.ts +0 -28
  758. package/dist/adapter/zigate/driver/parameterType.d.ts.map +0 -1
  759. package/dist/adapter/zigate/driver/parameterType.js +0 -33
  760. package/dist/adapter/zigate/driver/parameterType.js.map +0 -1
  761. package/dist/adapter/zigate/driver/ziGateObject.d.ts +0 -24
  762. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +0 -1
  763. package/dist/adapter/zigate/driver/ziGateObject.js +0 -111
  764. package/dist/adapter/zigate/driver/ziGateObject.js.map +0 -1
  765. package/dist/adapter/zigate/driver/zigate.d.ts +0 -50
  766. package/dist/adapter/zigate/driver/zigate.d.ts.map +0 -1
  767. package/dist/adapter/zigate/driver/zigate.js +0 -289
  768. package/dist/adapter/zigate/driver/zigate.js.map +0 -1
  769. package/dist/buffalo/buffalo.d.ts +0 -55
  770. package/dist/buffalo/buffalo.d.ts.map +0 -1
  771. package/dist/buffalo/buffalo.js +0 -230
  772. package/dist/buffalo/buffalo.js.map +0 -1
  773. package/dist/buffalo/index.d.ts +0 -3
  774. package/dist/buffalo/index.d.ts.map +0 -1
  775. package/dist/buffalo/index.js +0 -9
  776. package/dist/buffalo/index.js.map +0 -1
  777. package/dist/controller/controller.d.ts +0 -119
  778. package/dist/controller/controller.d.ts.map +0 -1
  779. package/dist/controller/controller.js +0 -700
  780. package/dist/controller/controller.js.map +0 -1
  781. package/dist/controller/database.d.ts +0 -20
  782. package/dist/controller/database.d.ts.map +0 -1
  783. package/dist/controller/database.js +0 -94
  784. package/dist/controller/database.js.map +0 -1
  785. package/dist/controller/events.d.ts +0 -59
  786. package/dist/controller/events.d.ts.map +0 -1
  787. package/dist/controller/events.js +0 -113
  788. package/dist/controller/events.js.map +0 -1
  789. package/dist/controller/greenPower.d.ts +0 -14
  790. package/dist/controller/greenPower.d.ts.map +0 -1
  791. package/dist/controller/greenPower.js +0 -216
  792. package/dist/controller/greenPower.js.map +0 -1
  793. package/dist/controller/helpers/index.d.ts +0 -3
  794. package/dist/controller/helpers/index.d.ts.map +0 -1
  795. package/dist/controller/helpers/index.js +0 -29
  796. package/dist/controller/helpers/index.js.map +0 -1
  797. package/dist/controller/helpers/request.d.ts +0 -22
  798. package/dist/controller/helpers/request.d.ts.map +0 -1
  799. package/dist/controller/helpers/request.js +0 -78
  800. package/dist/controller/helpers/request.js.map +0 -1
  801. package/dist/controller/helpers/requestQueue.d.ts +0 -13
  802. package/dist/controller/helpers/requestQueue.d.ts.map +0 -1
  803. package/dist/controller/helpers/requestQueue.js +0 -106
  804. package/dist/controller/helpers/requestQueue.js.map +0 -1
  805. package/dist/controller/helpers/zclFrameConverter.d.ts +0 -9
  806. package/dist/controller/helpers/zclFrameConverter.d.ts.map +0 -1
  807. package/dist/controller/helpers/zclFrameConverter.js +0 -70
  808. package/dist/controller/helpers/zclFrameConverter.js.map +0 -1
  809. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +0 -6
  810. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts.map +0 -1
  811. package/dist/controller/helpers/zclTransactionSequenceNumber.js +0 -14
  812. package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +0 -1
  813. package/dist/controller/index.d.ts +0 -6
  814. package/dist/controller/index.d.ts.map +0 -1
  815. package/dist/controller/index.js +0 -9
  816. package/dist/controller/index.js.map +0 -1
  817. package/dist/controller/model/device.d.ts +0 -140
  818. package/dist/controller/model/device.d.ts.map +0 -1
  819. package/dist/controller/model/device.js +0 -746
  820. package/dist/controller/model/device.js.map +0 -1
  821. package/dist/controller/model/endpoint.d.ts +0 -134
  822. package/dist/controller/model/endpoint.d.ts.map +0 -1
  823. package/dist/controller/model/endpoint.js +0 -667
  824. package/dist/controller/model/endpoint.js.map +0 -1
  825. package/dist/controller/model/entity.d.ts +0 -15
  826. package/dist/controller/model/entity.d.ts.map +0 -1
  827. package/dist/controller/model/entity.js +0 -27
  828. package/dist/controller/model/entity.js.map +0 -1
  829. package/dist/controller/model/group.d.ts +0 -39
  830. package/dist/controller/model/group.d.ts.map +0 -1
  831. package/dist/controller/model/group.js +0 -226
  832. package/dist/controller/model/group.js.map +0 -1
  833. package/dist/controller/model/index.d.ts +0 -6
  834. package/dist/controller/model/index.d.ts.map +0 -1
  835. package/dist/controller/model/index.js +0 -15
  836. package/dist/controller/model/index.js.map +0 -1
  837. package/dist/controller/model/konnextConfig.d.ts +0 -7
  838. package/dist/controller/model/konnextConfig.d.ts.map +0 -1
  839. package/dist/controller/model/konnextConfig.js +0 -3
  840. package/dist/controller/model/konnextConfig.js.map +0 -1
  841. package/dist/controller/touchlink.d.ts +0 -20
  842. package/dist/controller/touchlink.d.ts.map +0 -1
  843. package/dist/controller/touchlink.js +0 -157
  844. package/dist/controller/touchlink.js.map +0 -1
  845. package/dist/controller/tstype.d.ts +0 -21
  846. package/dist/controller/tstype.d.ts.map +0 -1
  847. package/dist/controller/tstype.js +0 -9
  848. package/dist/controller/tstype.js.map +0 -1
  849. package/dist/index.d.ts +0 -6
  850. package/dist/index.d.ts.map +0 -1
  851. package/dist/index.js +0 -37
  852. package/dist/index.js.map +0 -1
  853. package/dist/models/backup-storage-legacy.d.ts +0 -27
  854. package/dist/models/backup-storage-legacy.d.ts.map +0 -1
  855. package/dist/models/backup-storage-legacy.js +0 -3
  856. package/dist/models/backup-storage-legacy.js.map +0 -1
  857. package/dist/models/backup-storage-unified.d.ts +0 -50
  858. package/dist/models/backup-storage-unified.d.ts.map +0 -1
  859. package/dist/models/backup-storage-unified.js +0 -3
  860. package/dist/models/backup-storage-unified.js.map +0 -1
  861. package/dist/models/backup.d.ts +0 -38
  862. package/dist/models/backup.d.ts.map +0 -1
  863. package/dist/models/backup.js +0 -3
  864. package/dist/models/backup.js.map +0 -1
  865. package/dist/models/index.d.ts +0 -5
  866. package/dist/models/index.d.ts.map +0 -1
  867. package/dist/models/index.js +0 -21
  868. package/dist/models/index.js.map +0 -1
  869. package/dist/models/network-options.d.ts +0 -13
  870. package/dist/models/network-options.d.ts.map +0 -1
  871. package/dist/models/network-options.js +0 -3
  872. package/dist/models/network-options.js.map +0 -1
  873. package/dist/utils/aes.d.ts +0 -40
  874. package/dist/utils/aes.d.ts.map +0 -1
  875. package/dist/utils/aes.js +0 -198
  876. package/dist/utils/aes.js.map +0 -1
  877. package/dist/utils/assertString.d.ts +0 -3
  878. package/dist/utils/assertString.d.ts.map +0 -1
  879. package/dist/utils/assertString.js +0 -9
  880. package/dist/utils/assertString.js.map +0 -1
  881. package/dist/utils/backup.d.ts +0 -21
  882. package/dist/utils/backup.d.ts.map +0 -1
  883. package/dist/utils/backup.js +0 -190
  884. package/dist/utils/backup.js.map +0 -1
  885. package/dist/utils/equalsPartial.d.ts +0 -3
  886. package/dist/utils/equalsPartial.d.ts.map +0 -1
  887. package/dist/utils/equalsPartial.js +0 -12
  888. package/dist/utils/equalsPartial.js.map +0 -1
  889. package/dist/utils/index.d.ts +0 -10
  890. package/dist/utils/index.d.ts.map +0 -1
  891. package/dist/utils/index.js +0 -46
  892. package/dist/utils/index.js.map +0 -1
  893. package/dist/utils/isNumberArray.d.ts +0 -3
  894. package/dist/utils/isNumberArray.d.ts.map +0 -1
  895. package/dist/utils/isNumberArray.js +0 -7
  896. package/dist/utils/isNumberArray.js.map +0 -1
  897. package/dist/utils/logger.d.ts +0 -9
  898. package/dist/utils/logger.d.ts.map +0 -1
  899. package/dist/utils/logger.js +0 -14
  900. package/dist/utils/logger.js.map +0 -1
  901. package/dist/utils/queue.d.ts +0 -12
  902. package/dist/utils/queue.d.ts.map +0 -1
  903. package/dist/utils/queue.js +0 -62
  904. package/dist/utils/queue.js.map +0 -1
  905. package/dist/utils/realpathSync.d.ts +0 -3
  906. package/dist/utils/realpathSync.d.ts.map +0 -1
  907. package/dist/utils/realpathSync.js +0 -13
  908. package/dist/utils/realpathSync.js.map +0 -1
  909. package/dist/utils/wait.d.ts +0 -3
  910. package/dist/utils/wait.d.ts.map +0 -1
  911. package/dist/utils/wait.js +0 -9
  912. package/dist/utils/wait.js.map +0 -1
  913. package/dist/utils/waitress.d.ts +0 -22
  914. package/dist/utils/waitress.d.ts.map +0 -1
  915. package/dist/utils/waitress.js +0 -69
  916. package/dist/utils/waitress.js.map +0 -1
  917. package/dist/zspec/consts.d.ts +0 -60
  918. package/dist/zspec/consts.d.ts.map +0 -1
  919. package/dist/zspec/consts.js +0 -64
  920. package/dist/zspec/consts.js.map +0 -1
  921. package/dist/zspec/enums.d.ts +0 -19
  922. package/dist/zspec/enums.d.ts.map +0 -1
  923. package/dist/zspec/enums.js +0 -28
  924. package/dist/zspec/enums.js.map +0 -1
  925. package/dist/zspec/index.d.ts +0 -4
  926. package/dist/zspec/index.d.ts.map +0 -1
  927. package/dist/zspec/index.js +0 -43
  928. package/dist/zspec/index.js.map +0 -1
  929. package/dist/zspec/tstypes.d.ts +0 -19
  930. package/dist/zspec/tstypes.d.ts.map +0 -1
  931. package/dist/zspec/tstypes.js +0 -3
  932. package/dist/zspec/tstypes.js.map +0 -1
  933. package/dist/zspec/utils.d.ts +0 -14
  934. package/dist/zspec/utils.d.ts.map +0 -1
  935. package/dist/zspec/utils.js +0 -29
  936. package/dist/zspec/utils.js.map +0 -1
  937. package/dist/zspec/zcl/buffaloZcl.d.ts +0 -55
  938. package/dist/zspec/zcl/buffaloZcl.d.ts.map +0 -1
  939. package/dist/zspec/zcl/buffaloZcl.js +0 -929
  940. package/dist/zspec/zcl/buffaloZcl.js.map +0 -1
  941. package/dist/zspec/zcl/definition/cluster.d.ts +0 -3
  942. package/dist/zspec/zcl/definition/cluster.d.ts.map +0 -1
  943. package/dist/zspec/zcl/definition/cluster.js +0 -5500
  944. package/dist/zspec/zcl/definition/cluster.js.map +0 -1
  945. package/dist/zspec/zcl/definition/consts.d.ts +0 -9
  946. package/dist/zspec/zcl/definition/consts.d.ts.map +0 -1
  947. package/dist/zspec/zcl/definition/consts.js +0 -27
  948. package/dist/zspec/zcl/definition/consts.js.map +0 -1
  949. package/dist/zspec/zcl/definition/enums.d.ts +0 -177
  950. package/dist/zspec/zcl/definition/enums.d.ts.map +0 -1
  951. package/dist/zspec/zcl/definition/enums.js +0 -187
  952. package/dist/zspec/zcl/definition/enums.js.map +0 -1
  953. package/dist/zspec/zcl/definition/foundation.d.ts +0 -11
  954. package/dist/zspec/zcl/definition/foundation.d.ts.map +0 -1
  955. package/dist/zspec/zcl/definition/foundation.js +0 -241
  956. package/dist/zspec/zcl/definition/foundation.js.map +0 -1
  957. package/dist/zspec/zcl/definition/manufacturerCode.d.ts +0 -727
  958. package/dist/zspec/zcl/definition/manufacturerCode.d.ts.map +0 -1
  959. package/dist/zspec/zcl/definition/manufacturerCode.js +0 -733
  960. package/dist/zspec/zcl/definition/manufacturerCode.js.map +0 -1
  961. package/dist/zspec/zcl/definition/status.d.ts +0 -69
  962. package/dist/zspec/zcl/definition/status.d.ts.map +0 -1
  963. package/dist/zspec/zcl/definition/status.js +0 -74
  964. package/dist/zspec/zcl/definition/status.js.map +0 -1
  965. package/dist/zspec/zcl/definition/tstype.d.ts +0 -114
  966. package/dist/zspec/zcl/definition/tstype.d.ts.map +0 -1
  967. package/dist/zspec/zcl/definition/tstype.js +0 -4
  968. package/dist/zspec/zcl/definition/tstype.js.map +0 -1
  969. package/dist/zspec/zcl/index.d.ts +0 -11
  970. package/dist/zspec/zcl/index.d.ts.map +0 -1
  971. package/dist/zspec/zcl/index.js +0 -47
  972. package/dist/zspec/zcl/index.js.map +0 -1
  973. package/dist/zspec/zcl/utils.d.ts +0 -7
  974. package/dist/zspec/zcl/utils.d.ts.map +0 -1
  975. package/dist/zspec/zcl/utils.js +0 -234
  976. package/dist/zspec/zcl/utils.js.map +0 -1
  977. package/dist/zspec/zcl/zclFrame.d.ts +0 -36
  978. package/dist/zspec/zcl/zclFrame.d.ts.map +0 -1
  979. package/dist/zspec/zcl/zclFrame.js +0 -304
  980. package/dist/zspec/zcl/zclFrame.js.map +0 -1
  981. package/dist/zspec/zcl/zclHeader.d.ts +0 -17
  982. package/dist/zspec/zcl/zclHeader.d.ts.map +0 -1
  983. package/dist/zspec/zcl/zclHeader.js +0 -88
  984. package/dist/zspec/zcl/zclHeader.js.map +0 -1
  985. package/dist/zspec/zcl/zclStatusError.d.ts +0 -6
  986. package/dist/zspec/zcl/zclStatusError.d.ts.map +0 -1
  987. package/dist/zspec/zcl/zclStatusError.js +0 -13
  988. package/dist/zspec/zcl/zclStatusError.js.map +0 -1
  989. package/dist/zspec/zdo/buffaloZdo.d.ts +0 -438
  990. package/dist/zspec/zdo/buffaloZdo.d.ts.map +0 -1
  991. package/dist/zspec/zdo/buffaloZdo.js +0 -1892
  992. package/dist/zspec/zdo/buffaloZdo.js.map +0 -1
  993. package/dist/zspec/zdo/definition/clusters.d.ts +0 -624
  994. package/dist/zspec/zdo/definition/clusters.d.ts.map +0 -1
  995. package/dist/zspec/zdo/definition/clusters.js +0 -687
  996. package/dist/zspec/zdo/definition/clusters.js.map +0 -1
  997. package/dist/zspec/zdo/definition/consts.d.ts +0 -13
  998. package/dist/zspec/zdo/definition/consts.d.ts.map +0 -1
  999. package/dist/zspec/zdo/definition/consts.js +0 -16
  1000. package/dist/zspec/zdo/definition/consts.js.map +0 -1
  1001. package/dist/zspec/zdo/definition/enums.d.ts +0 -75
  1002. package/dist/zspec/zdo/definition/enums.d.ts.map +0 -1
  1003. package/dist/zspec/zdo/definition/enums.js +0 -97
  1004. package/dist/zspec/zdo/definition/enums.js.map +0 -1
  1005. package/dist/zspec/zdo/definition/status.d.ts +0 -99
  1006. package/dist/zspec/zdo/definition/status.d.ts.map +0 -1
  1007. package/dist/zspec/zdo/definition/status.js +0 -109
  1008. package/dist/zspec/zdo/definition/status.js.map +0 -1
  1009. package/dist/zspec/zdo/definition/tstypes.d.ts +0 -787
  1010. package/dist/zspec/zdo/definition/tstypes.d.ts.map +0 -1
  1011. package/dist/zspec/zdo/definition/tstypes.js +0 -3
  1012. package/dist/zspec/zdo/definition/tstypes.js.map +0 -1
  1013. package/dist/zspec/zdo/index.d.ts +0 -7
  1014. package/dist/zspec/zdo/index.d.ts.map +0 -1
  1015. package/dist/zspec/zdo/index.js +0 -39
  1016. package/dist/zspec/zdo/index.js.map +0 -1
  1017. package/dist/zspec/zdo/utils.d.ts +0 -25
  1018. package/dist/zspec/zdo/utils.d.ts.map +0 -1
  1019. package/dist/zspec/zdo/utils.js +0 -75
  1020. package/dist/zspec/zdo/utils.js.map +0 -1
  1021. package/dist/zspec/zdo/zdoStatusError.d.ts +0 -6
  1022. package/dist/zspec/zdo/zdoStatusError.d.ts.map +0 -1
  1023. package/dist/zspec/zdo/zdoStatusError.js +0 -13
  1024. package/dist/zspec/zdo/zdoStatusError.js.map +0 -1
  1025. package/typedoc-tsconfig.json +0 -44
@@ -0,0 +1,1316 @@
1
+ import {describe, expect, it, vi} from "vitest";
2
+ import * as Zcl from "../../../src/zspec/zcl";
3
+ import {BuffaloZcl} from "../../../src/zspec/zcl/buffaloZcl";
4
+ import {uint16To8Array, uint32To8Array} from "../../utils/math";
5
+
6
+ describe("ZCL Buffalo", () => {
7
+ it("Writes invalida data type as buffer if buffer-like", () => {
8
+ const value = [1, 2, 3];
9
+ const buffer = Buffer.alloc(3);
10
+ const buffalo = new BuffaloZcl(buffer);
11
+ const writeSpy = vi.spyOn(buffalo, "writeBuffer");
12
+ // @ts-expect-error invalid on purpose
13
+ buffalo.write(99999, value, {});
14
+ expect(writeSpy).toHaveBeenCalledWith(value, value.length);
15
+ expect(writeSpy).toHaveBeenCalledTimes(1);
16
+
17
+ buffalo.setPosition(0);
18
+
19
+ // @ts-expect-error invalid on purpose
20
+ buffalo.write(99999, Buffer.from(value), {});
21
+ expect(writeSpy).toHaveBeenLastCalledWith(Buffer.from(value), value.length);
22
+ expect(writeSpy).toHaveBeenCalledTimes(2);
23
+ });
24
+
25
+ it("Throws when write/read invalid data type, except for write if buffer-like", () => {
26
+ expect(() => {
27
+ const buffer = Buffer.alloc(1);
28
+ const buffalo = new BuffaloZcl(buffer);
29
+ // @ts-expect-error invalid on purpose
30
+ buffalo.write(99999, 127, {});
31
+ }).toThrow();
32
+ expect(() => {
33
+ const buffer = Buffer.alloc(1);
34
+ const buffalo = new BuffaloZcl(buffer);
35
+ // @ts-expect-error invalid on purpose
36
+ buffalo.read(99999, {});
37
+ }).toThrow();
38
+ });
39
+
40
+ it("Writes nothing", () => {
41
+ for (const type of [Zcl.DataType.NO_DATA, Zcl.DataType.UNKNOWN]) {
42
+ const buffer = Buffer.alloc(3);
43
+ const buffalo = new BuffaloZcl(buffer);
44
+
45
+ buffalo.write(type, 123, {});
46
+ expect(buffer).toStrictEqual(Buffer.from([0, 0, 0]));
47
+ expect(buffalo.getPosition()).toStrictEqual(0);
48
+ }
49
+
50
+ {
51
+ const buffer = Buffer.alloc(3);
52
+ const buffalo = new BuffaloZcl(buffer);
53
+
54
+ buffalo.write(Zcl.BuffaloZclDataType.STRUCTURED_SELECTOR, null, {});
55
+ expect(buffer).toStrictEqual(Buffer.from([0, 0, 0]));
56
+ expect(buffalo.getPosition()).toStrictEqual(0);
57
+ }
58
+
59
+ // what ZCL spec calls "empty string"
60
+ {
61
+ const buffer = Buffer.alloc(3);
62
+ const buffalo = new BuffaloZcl(buffer);
63
+
64
+ buffalo.write(Zcl.DataType.CHAR_STR, "", {});
65
+ expect(buffer).toStrictEqual(Buffer.from([0, 0, 0]));
66
+ expect(buffalo.getPosition()).toStrictEqual(1); // length
67
+ }
68
+
69
+ // what ZCL spec calls "empty string"
70
+ {
71
+ const buffer = Buffer.alloc(3);
72
+ const buffalo = new BuffaloZcl(buffer);
73
+
74
+ buffalo.write(Zcl.DataType.OCTET_STR, [], {});
75
+ expect(buffer).toStrictEqual(Buffer.from([0, 0, 0]));
76
+ expect(buffalo.getPosition()).toStrictEqual(1); // length
77
+ }
78
+ });
79
+
80
+ it("Reads nothing", () => {
81
+ for (const type of [Zcl.DataType.NO_DATA, Zcl.DataType.UNKNOWN]) {
82
+ const buffer = Buffer.from([1, 2]);
83
+ const buffalo = new BuffaloZcl(buffer);
84
+ expect(buffalo.read(type, {})).toStrictEqual(undefined);
85
+ expect(buffalo.getPosition()).toStrictEqual(0);
86
+ }
87
+
88
+ // what ZCL spec calls "empty string"
89
+ {
90
+ const buffer = Buffer.from([0, 2, 3]);
91
+ const buffalo = new BuffaloZcl(buffer);
92
+ expect(buffalo.read(Zcl.DataType.CHAR_STR, {})).toStrictEqual("");
93
+ expect(buffalo.getPosition()).toStrictEqual(1); // length
94
+ }
95
+ // what ZCL spec calls "empty string"
96
+ {
97
+ const buffer = Buffer.from([0, 2, 3]);
98
+ const buffalo = new BuffaloZcl(buffer);
99
+ expect(buffalo.read(Zcl.DataType.OCTET_STR, {})).toStrictEqual(Buffer.from([]));
100
+ expect(buffalo.getPosition()).toStrictEqual(1); // length
101
+ }
102
+ });
103
+
104
+ it.each([
105
+ ["boolean", {value: 1, types: [Zcl.DataType.BOOLEAN]}, {position: 1, write: "writeUInt8", read: "readUInt8"}],
106
+ ["boolean", {value: 0, types: [Zcl.DataType.BOOLEAN]}, {position: 1, write: "writeUInt8", read: "readUInt8"}],
107
+ [
108
+ "uint8-like",
109
+ {value: 250, types: [Zcl.DataType.DATA8, Zcl.DataType.BITMAP8, Zcl.DataType.UINT8, Zcl.DataType.ENUM8]},
110
+ {position: 1, write: "writeUInt8", read: "readUInt8"},
111
+ ],
112
+ [
113
+ "uint16-like",
114
+ {
115
+ value: 65530,
116
+ types: [
117
+ Zcl.DataType.DATA16,
118
+ Zcl.DataType.BITMAP16,
119
+ Zcl.DataType.UINT16,
120
+ Zcl.DataType.ENUM16,
121
+ Zcl.DataType.CLUSTER_ID,
122
+ Zcl.DataType.ATTR_ID,
123
+ ],
124
+ },
125
+ {position: 2, write: "writeUInt16", read: "readUInt16"},
126
+ ],
127
+ [
128
+ "uint24-like",
129
+ {value: 16777210, types: [Zcl.DataType.DATA24, Zcl.DataType.BITMAP24, Zcl.DataType.UINT24]},
130
+ {position: 3, write: "writeUInt24", read: "readUInt24"},
131
+ ],
132
+ [
133
+ "uint32-like",
134
+ {value: 4294967290, types: [Zcl.DataType.DATA32, Zcl.DataType.BITMAP32, Zcl.DataType.UINT32, Zcl.DataType.UTC, Zcl.DataType.BAC_OID]},
135
+ {position: 4, write: "writeUInt32", read: "readUInt32"},
136
+ ],
137
+ ["int8-like", {value: -120, types: [Zcl.DataType.INT8]}, {position: 1, write: "writeInt8", read: "readInt8"}],
138
+ ["int16-like", {value: -32760, types: [Zcl.DataType.INT16]}, {position: 2, write: "writeInt16", read: "readInt16"}],
139
+ ["int24-like", {value: -8388600, types: [Zcl.DataType.INT24]}, {position: 3, write: "writeInt24", read: "readInt24"}],
140
+ ["int32-like", {value: -2147483640, types: [Zcl.DataType.INT32]}, {position: 4, write: "writeInt32", read: "readInt32"}],
141
+ ["int48-like", {value: -140737488355320, types: [Zcl.DataType.INT48]}, {position: 6, write: "writeInt48", read: "readInt48"}],
142
+ ["float-like", {value: 1.539989614439558e-36, types: [Zcl.DataType.SINGLE_PREC]}, {position: 4, write: "writeFloatLE", read: "readFloatLE"}],
143
+ [
144
+ "double-like",
145
+ {value: 5.447603722011605e-270, types: [Zcl.DataType.DOUBLE_PREC]},
146
+ {position: 8, write: "writeDoubleLE", read: "readDoubleLE"},
147
+ ],
148
+ ["IEEE address", {value: "0xfe1234abcd9876ff", types: [Zcl.DataType.IEEE_ADDR]}, {position: 8, write: "writeIeeeAddr", read: "readIeeeAddr"}],
149
+ [
150
+ "uint8-like list",
151
+ {value: [250, 25, 50], types: [Zcl.BuffaloZclDataType.LIST_UINT8]},
152
+ {position: 3, write: "writeListUInt8", read: "readListUInt8"},
153
+ ],
154
+ [
155
+ "uint16-like list",
156
+ {value: [65530, 6553, 5530], types: [Zcl.BuffaloZclDataType.LIST_UINT16]},
157
+ {position: 6, write: "writeListUInt16", read: "readListUInt16"},
158
+ ],
159
+ [
160
+ "uint24-like list",
161
+ {value: [16777210, 1677721, 6777210], types: [Zcl.BuffaloZclDataType.LIST_UINT24]},
162
+ {position: 9, write: "writeListUInt24", read: "readListUInt24"},
163
+ ],
164
+ [
165
+ "uint32-like list",
166
+ {value: [4294967290, 429496729, 294967290], types: [Zcl.BuffaloZclDataType.LIST_UINT32]},
167
+ {position: 12, write: "writeListUInt32", read: "readListUInt32"},
168
+ ],
169
+ [
170
+ "buffer",
171
+ {value: Buffer.from([1, 2, 3, 4]), types: [Zcl.BuffaloZclDataType.BUFFER]},
172
+ {position: 4, write: "writeBuffer", read: "readBuffer"},
173
+ ],
174
+ [
175
+ "security key",
176
+ {value: Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]), types: [Zcl.DataType.SEC_KEY]},
177
+ {position: 16, write: "writeBuffer", read: "readBuffer"},
178
+ ],
179
+ ])("Writes & Reads using base class for %s", (_name, payload, expected) => {
180
+ const readOptions: {length?: number} = {};
181
+
182
+ if (Array.isArray(payload.value) || payload.value instanceof Buffer) {
183
+ readOptions.length = payload.value.length;
184
+ }
185
+
186
+ for (const type of payload.types) {
187
+ const buffer = Buffer.alloc(255);
188
+ const buffalo = new BuffaloZcl(buffer);
189
+ const writeSpy = vi.spyOn(buffalo, expected.write as keyof BuffaloZcl);
190
+ const readSpy = vi.spyOn(buffalo, expected.read as keyof BuffaloZcl);
191
+
192
+ buffalo.write(type, payload.value, {});
193
+ expect(writeSpy).toHaveBeenCalledTimes(1);
194
+ expect(buffalo.getPosition()).toStrictEqual(expected.position);
195
+
196
+ buffalo.setPosition(0);
197
+
198
+ expect(buffalo.read(type, readOptions)).toStrictEqual(payload.value);
199
+ expect(readSpy).toHaveBeenCalledTimes(1);
200
+ expect(buffalo.getPosition()).toStrictEqual(expected.position);
201
+ }
202
+ });
203
+
204
+ it.each([
205
+ [
206
+ "octectStr",
207
+ {value: undefined, types: [Zcl.DataType.OCTET_STR]},
208
+ {written: 0xff, valueRead: Buffer.from([]), position: 1, write: "writeUInt8", read: "readUInt8"},
209
+ ],
210
+ [
211
+ "longOctectStr",
212
+ {value: undefined, types: [Zcl.DataType.LONG_OCTET_STR]},
213
+ {written: 0xffff, valueRead: Buffer.from([]), position: 2, write: "writeUInt16", read: "readUInt16"},
214
+ ],
215
+ [
216
+ "charStr",
217
+ {value: undefined, types: [Zcl.DataType.CHAR_STR]},
218
+ {written: 0xff, valueRead: "", position: 1, write: "writeUInt8", read: "readUInt8"},
219
+ ],
220
+ [
221
+ "longCharStr",
222
+ {value: undefined, types: [Zcl.DataType.LONG_CHAR_STR]},
223
+ {written: 0xffff, valueRead: "", position: 2, write: "writeUInt16", read: "readUInt16"},
224
+ ],
225
+ [
226
+ "array",
227
+ {value: undefined, types: [Zcl.DataType.ARRAY]},
228
+ {written: 0xffff00, valueRead: [], position: 3, write: "writeUInt16", read: "readUInt16"},
229
+ ],
230
+ [
231
+ "struct",
232
+ {value: undefined, types: [Zcl.DataType.STRUCT]},
233
+ {written: 0xffff, valueRead: [], position: 2, write: "writeUInt16", read: "readUInt16"},
234
+ ],
235
+ ])("Writes & Reads non-value for %s", (_name, payload, expected) => {
236
+ for (const type of payload.types) {
237
+ const buffer = Buffer.alloc(255);
238
+ const buffalo = new BuffaloZcl(buffer);
239
+ const writeSpy = vi.spyOn(buffalo, expected.write as keyof BuffaloZcl);
240
+ const readSpy = vi.spyOn(buffalo, expected.read as keyof BuffaloZcl);
241
+
242
+ buffalo.write(type, payload.value, {});
243
+ expect(writeSpy).toHaveBeenCalledTimes(1);
244
+ expect(buffalo.getPosition()).toStrictEqual(expected.position);
245
+ const expectedWrittenBuf = Buffer.alloc(expected.position);
246
+
247
+ if (typeof expected.written === "bigint") {
248
+ if (expected.position === 7) {
249
+ const unsignedValue = expected.written < 0n ? (1n << 56n) + expected.written : expected.written;
250
+ expectedWrittenBuf.writeUIntLE(Number(unsignedValue & 0xffffffffffffn), 0, 6);
251
+ expectedWrittenBuf.writeUInt8(Number(unsignedValue >> 48n), 0 + 6);
252
+ } else {
253
+ expectedWrittenBuf.writeBigUInt64LE(expected.written, 0);
254
+ }
255
+ } else {
256
+ expectedWrittenBuf.writeUIntLE(expected.written, 0, expected.position);
257
+ }
258
+
259
+ expect(buffalo.getWritten()).toStrictEqual(expectedWrittenBuf);
260
+
261
+ buffalo.setPosition(0);
262
+
263
+ expect(buffalo.read(type, {})).toStrictEqual("valueRead" in expected ? expected.valueRead : payload.value);
264
+ expect(readSpy).toHaveBeenCalledTimes(1);
265
+ expect(buffalo.getPosition()).toStrictEqual(expected.position);
266
+ }
267
+ });
268
+
269
+ it("Reads whole buffer without length option", () => {
270
+ const value = [1, 2, 3, 4];
271
+ const buffer = Buffer.alloc(4);
272
+ const buffalo = new BuffaloZcl(buffer);
273
+ const writeSpy = vi.spyOn(buffalo, "writeBuffer");
274
+ const readSpy = vi.spyOn(buffalo, "readBuffer");
275
+
276
+ buffalo.write(Zcl.BuffaloZclDataType.BUFFER, Buffer.from(value), {});
277
+ expect(writeSpy).toHaveBeenCalledTimes(1);
278
+ // XXX: inconsistent with read, write is always "whole"
279
+ expect(writeSpy).toHaveBeenCalledWith(Buffer.from(value), value.length);
280
+ expect(buffalo.getPosition()).toStrictEqual(value.length);
281
+
282
+ buffalo.setPosition(0);
283
+
284
+ expect(buffalo.read(Zcl.BuffaloZclDataType.BUFFER, {})).toStrictEqual(Buffer.from(value));
285
+ expect(readSpy).toHaveBeenCalledTimes(1);
286
+ expect(readSpy).toHaveBeenCalledWith(value.length);
287
+ expect(buffalo.getPosition()).toStrictEqual(value.length);
288
+ });
289
+
290
+ it("Reads partial buffer with length option", () => {
291
+ const value = [1, 2, 3, 4];
292
+ const length = 2;
293
+ const buffer = Buffer.alloc(255);
294
+ const buffalo = new BuffaloZcl(buffer);
295
+ const writeSpy = vi.spyOn(buffalo, "writeBuffer");
296
+ const readSpy = vi.spyOn(buffalo, "readBuffer");
297
+
298
+ buffalo.write(Zcl.BuffaloZclDataType.BUFFER, Buffer.from(value), {length});
299
+ expect(writeSpy).toHaveBeenCalledTimes(1);
300
+ // XXX: inconsistent with read, write is always "whole"
301
+ expect(writeSpy).toHaveBeenCalledWith(Buffer.from(value), value.length);
302
+ expect(buffalo.getPosition()).toStrictEqual(value.length);
303
+
304
+ buffalo.setPosition(0);
305
+
306
+ expect(buffalo.read(Zcl.BuffaloZclDataType.BUFFER, {length})).toStrictEqual(Buffer.from([value[0], value[1]]));
307
+ expect(readSpy).toHaveBeenCalledTimes(1);
308
+ expect(readSpy).toHaveBeenCalledWith(length);
309
+ expect(buffalo.getPosition()).toStrictEqual(length);
310
+ });
311
+
312
+ it("Writes & Reads octet str", () => {
313
+ const value = [0xfe, 0x01, 0xab, 0x98];
314
+ const expectedPosition = 5;
315
+ const buffer = Buffer.alloc(10);
316
+ const buffalo = new BuffaloZcl(buffer);
317
+ buffalo.write(Zcl.DataType.OCTET_STR, value, {});
318
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
319
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from([value.length, ...value]));
320
+
321
+ buffalo.setPosition(0);
322
+
323
+ expect(buffalo.read(Zcl.DataType.OCTET_STR, {})).toStrictEqual(Buffer.from(value));
324
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
325
+ });
326
+
327
+ it("Writes & Reads long octet str", () => {
328
+ const value = [0xfe, 0x01, 0xab, 0x98];
329
+ const expectedPosition = 6;
330
+ const buffer = Buffer.alloc(10);
331
+ const buffalo = new BuffaloZcl(buffer);
332
+ buffalo.write(Zcl.DataType.LONG_OCTET_STR, value, {});
333
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
334
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from([value.length, 0 /*length uint16*/, ...value]));
335
+
336
+ buffalo.setPosition(0);
337
+
338
+ expect(buffalo.read(Zcl.DataType.LONG_OCTET_STR, {})).toStrictEqual(Buffer.from(value));
339
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
340
+ });
341
+
342
+ it("Writes char str from number array", () => {
343
+ const value = [0x61, 0x62, 0x63, 0x64];
344
+ const expectedPosition = 4; // value.length not written when number array given
345
+ const buffer = Buffer.alloc(10);
346
+ const buffalo = new BuffaloZcl(buffer);
347
+ buffalo.write(Zcl.DataType.CHAR_STR, value, {});
348
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
349
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(value)); // see above comment
350
+ });
351
+
352
+ it.each([
353
+ ["char str", Zcl.DataType.CHAR_STR, [0], 1],
354
+ ["long char str", Zcl.DataType.LONG_CHAR_STR, [0, 0], 2],
355
+ ])("Writes empty %s", (_name, type, expectedWritten, expectedPosition) => {
356
+ const buffer = Buffer.alloc(10);
357
+ const buffalo = new BuffaloZcl(buffer);
358
+ buffalo.write(type, "", {});
359
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
360
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expectedWritten));
361
+ });
362
+
363
+ it("Writes & Reads char str from string", () => {
364
+ const value = "abcd";
365
+ const expectedValue = [value.length, 0x61, 0x62, 0x63, 0x64];
366
+ const expectedPosition = 5;
367
+ const buffer = Buffer.alloc(10);
368
+ const buffalo = new BuffaloZcl(buffer);
369
+ buffalo.write(Zcl.DataType.CHAR_STR, value, {});
370
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
371
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expectedValue));
372
+
373
+ buffalo.setPosition(0);
374
+
375
+ expect(buffalo.read(Zcl.DataType.CHAR_STR, {})).toStrictEqual(value);
376
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
377
+ });
378
+
379
+ it("[workaround] Reads char str as Mi struct for Xiaomi attridId=65281", () => {
380
+ const expectedValue = {"1": 3285, "3": 33, "4": 5032, "5": 43, "6": 327680, "8": 516, "10": 0, "100": 0};
381
+ const buffer = Buffer.from([
382
+ 34,
383
+ 1,
384
+ Zcl.DataType.UINT16,
385
+ ...uint16To8Array(3285),
386
+ 3,
387
+ Zcl.DataType.INT8,
388
+ 33,
389
+ 4,
390
+ Zcl.DataType.UINT16,
391
+ ...uint16To8Array(5032),
392
+ 5,
393
+ Zcl.DataType.UINT16,
394
+ ...uint16To8Array(43),
395
+ 6,
396
+ Zcl.DataType.UINT40,
397
+ ...uint32To8Array(327680),
398
+ 0,
399
+ 8,
400
+ Zcl.DataType.UINT16,
401
+ ...uint16To8Array(516),
402
+ 10,
403
+ Zcl.DataType.UINT16,
404
+ ...uint16To8Array(0),
405
+ 100,
406
+ Zcl.DataType.BOOLEAN,
407
+ 0,
408
+ ]);
409
+ const buffalo = new BuffaloZcl(buffer);
410
+
411
+ expect(buffalo.read(Zcl.BuffaloZclDataType.MI_STRUCT, {})).toStrictEqual(expectedValue);
412
+ expect(buffalo.getPosition()).toStrictEqual(buffer.length);
413
+ });
414
+
415
+ it("Writes & Reads long char str", () => {
416
+ const value = "abcd";
417
+ const expectedValue = [value.length, 0 /*length uint16*/, 0x61, 0x62, 0x63, 0x64];
418
+ const expectedPosition = 6;
419
+ const buffer = Buffer.alloc(10);
420
+ const buffalo = new BuffaloZcl(buffer);
421
+ buffalo.write(Zcl.DataType.LONG_CHAR_STR, value, {});
422
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
423
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expectedValue));
424
+
425
+ buffalo.setPosition(0);
426
+
427
+ expect(buffalo.read(Zcl.DataType.LONG_CHAR_STR, {})).toStrictEqual(value);
428
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
429
+ });
430
+
431
+ it.each([
432
+ [
433
+ "uint16",
434
+ {value: {elementType: Zcl.DataType.UINT16, elements: [256, 1, 65530, 0]}},
435
+ {
436
+ written: [
437
+ Zcl.DataType.UINT16,
438
+ 4,
439
+ 0 /*length uint16*/,
440
+ ...uint16To8Array(256),
441
+ ...uint16To8Array(1),
442
+ ...uint16To8Array(65530),
443
+ ...uint16To8Array(0),
444
+ ],
445
+ },
446
+ ],
447
+ [
448
+ "char str",
449
+ {value: {elementType: Zcl.DataType.CHAR_STR, elements: ["abcd", "cd", "a"]}},
450
+ {written: [Zcl.DataType.CHAR_STR, 3, 0 /*length uint16*/, 4, 0x61, 0x62, 0x63, 0x64, 2, 0x63, 0x64, 1, 0x61]},
451
+ ],
452
+ [
453
+ "uint16 with element type passed as string key of Zcl.DataType",
454
+ {value: {elementType: "UINT16", elements: [256, 1, 65530, 0]}},
455
+ {
456
+ written: [
457
+ Zcl.DataType.UINT16,
458
+ 4,
459
+ 0 /*length uint16*/,
460
+ ...uint16To8Array(256),
461
+ ...uint16To8Array(1),
462
+ ...uint16To8Array(65530),
463
+ ...uint16To8Array(0),
464
+ ],
465
+ },
466
+ ],
467
+ ])("Writes & Reads array of %s", (_name, payload, expected) => {
468
+ const buffer = Buffer.alloc(50);
469
+ const buffalo = new BuffaloZcl(buffer);
470
+ buffalo.write(Zcl.DataType.ARRAY, payload.value, {});
471
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
472
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected.written));
473
+
474
+ buffalo.setPosition(0);
475
+
476
+ expect(buffalo.read(Zcl.DataType.ARRAY, {})).toStrictEqual(payload.value.elements);
477
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
478
+ });
479
+
480
+ it.each([
481
+ [
482
+ "uint16",
483
+ {
484
+ value: [
485
+ {elmType: Zcl.DataType.UINT16, elmVal: 256},
486
+ {elmType: Zcl.DataType.UINT16, elmVal: 1},
487
+ {elmType: Zcl.DataType.UINT16, elmVal: 65530},
488
+ {elmType: Zcl.DataType.UINT16, elmVal: 0},
489
+ ],
490
+ },
491
+ {
492
+ written: [
493
+ 4,
494
+ 0 /*length uint16*/,
495
+ Zcl.DataType.UINT16,
496
+ ...uint16To8Array(256),
497
+ Zcl.DataType.UINT16,
498
+ ...uint16To8Array(1),
499
+ Zcl.DataType.UINT16,
500
+ ...uint16To8Array(65530),
501
+ Zcl.DataType.UINT16,
502
+ ...uint16To8Array(0),
503
+ ],
504
+ },
505
+ ],
506
+ [
507
+ "char str",
508
+ {
509
+ value: [
510
+ {elmType: Zcl.DataType.CHAR_STR, elmVal: "abcd"},
511
+ {elmType: Zcl.DataType.CHAR_STR, elmVal: "cd"},
512
+ {elmType: Zcl.DataType.CHAR_STR, elmVal: "a"},
513
+ ],
514
+ },
515
+ {
516
+ written: [
517
+ 3,
518
+ 0 /*length uint16*/,
519
+ Zcl.DataType.CHAR_STR,
520
+ 4,
521
+ 0x61,
522
+ 0x62,
523
+ 0x63,
524
+ 0x64,
525
+ Zcl.DataType.CHAR_STR,
526
+ 2,
527
+ 0x63,
528
+ 0x64,
529
+ Zcl.DataType.CHAR_STR,
530
+ 1,
531
+ 0x61,
532
+ ],
533
+ },
534
+ ],
535
+ [
536
+ "mixed",
537
+ {
538
+ value: [
539
+ {elmType: Zcl.DataType.UINT16, elmVal: 256},
540
+ {elmType: Zcl.DataType.CHAR_STR, elmVal: "abcd"},
541
+ {elmType: Zcl.DataType.BITMAP8, elmVal: 3},
542
+ ],
543
+ },
544
+ {
545
+ written: [
546
+ 3,
547
+ 0 /*length uint16*/,
548
+ Zcl.DataType.UINT16,
549
+ ...uint16To8Array(256),
550
+ Zcl.DataType.CHAR_STR,
551
+ 4,
552
+ 0x61,
553
+ 0x62,
554
+ 0x63,
555
+ 0x64,
556
+ Zcl.DataType.BITMAP8,
557
+ 3,
558
+ ],
559
+ },
560
+ ],
561
+ ])("Writes & Reads struct of %s", (_name, payload, expected) => {
562
+ const buffer = Buffer.alloc(50);
563
+ const buffalo = new BuffaloZcl(buffer);
564
+ buffalo.write(Zcl.DataType.STRUCT, payload.value, {});
565
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
566
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected.written));
567
+
568
+ buffalo.setPosition(0);
569
+
570
+ expect(buffalo.read(Zcl.DataType.STRUCT, {})).toStrictEqual(payload.value);
571
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
572
+ });
573
+
574
+ it("Writes & Reads Time of Day", () => {
575
+ const value = {hours: 0, minutes: 59, seconds: 34, hundredths: 88};
576
+ const expectedWritten = [0, 59, 34, 88];
577
+ const buffer = Buffer.alloc(10);
578
+ const buffalo = new BuffaloZcl(buffer);
579
+ buffalo.write(Zcl.DataType.TOD, value, {});
580
+ expect(buffalo.getPosition()).toStrictEqual(expectedWritten.length);
581
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expectedWritten));
582
+
583
+ buffalo.setPosition(0);
584
+
585
+ expect(buffalo.read(Zcl.DataType.TOD, {})).toStrictEqual(value);
586
+ expect(buffalo.getPosition()).toStrictEqual(expectedWritten.length);
587
+ });
588
+
589
+ it("Writes & Reads Date", () => {
590
+ const value = {year: 2000, month: 8, dayOfMonth: 31, dayOfWeek: 3};
591
+ const expectedWritten = [100, 8, 31, 3];
592
+ const buffer = Buffer.alloc(10);
593
+ const buffalo = new BuffaloZcl(buffer);
594
+ buffalo.write(Zcl.DataType.DATE, value, {});
595
+ expect(buffalo.getPosition()).toStrictEqual(expectedWritten.length);
596
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expectedWritten));
597
+
598
+ buffalo.setPosition(0);
599
+
600
+ expect(buffalo.read(Zcl.DataType.DATE, {})).toStrictEqual(value);
601
+ expect(buffalo.getPosition()).toStrictEqual(expectedWritten.length);
602
+ });
603
+
604
+ it.each([
605
+ [
606
+ "time of day",
607
+ {type: Zcl.DataType.TOD, position: 4, returned: {hours: Number.NaN, minutes: Number.NaN, seconds: Number.NaN, hundredths: Number.NaN}},
608
+ ],
609
+ [
610
+ "date",
611
+ {type: Zcl.DataType.DATE, position: 4, returned: {year: Number.NaN, month: Number.NaN, dayOfMonth: Number.NaN, dayOfWeek: Number.NaN}},
612
+ ],
613
+ ["mi struct", {type: Zcl.BuffaloZclDataType.MI_STRUCT, position: 1, returned: {}}],
614
+ ])("Reads Non-Value for %s", (_name, payload) => {
615
+ const buffalo = new BuffaloZcl(Buffer.alloc(50, 0xff));
616
+ expect(buffalo.read(payload.type, {})).toStrictEqual(payload.returned);
617
+ expect(buffalo.getPosition()).toStrictEqual(payload.position);
618
+ });
619
+
620
+ it.each([
621
+ [
622
+ "time of day",
623
+ {
624
+ type: Zcl.DataType.TOD,
625
+ position: 4,
626
+ value: {hours: Number.NaN, minutes: Number.NaN, seconds: Number.NaN, hundredths: Number.NaN},
627
+ written: [0xff, 0xff, 0xff, 0xff],
628
+ },
629
+ ],
630
+ [
631
+ "date",
632
+ {
633
+ type: Zcl.DataType.DATE,
634
+ position: 4,
635
+ value: {year: Number.NaN, month: Number.NaN, dayOfMonth: Number.NaN, dayOfWeek: Number.NaN},
636
+ written: [0xff, 0xff, 0xff, 0xff],
637
+ },
638
+ ],
639
+ ])("Writes Non-Value for %s", (_name, payload) => {
640
+ const buffer = Buffer.alloc(10);
641
+ const buffalo = new BuffaloZcl(buffer);
642
+ buffalo.write(payload.type, payload.value, {});
643
+ expect(buffalo.getPosition()).toStrictEqual(payload.written.length);
644
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(payload.written));
645
+ });
646
+
647
+ it.each([
648
+ ["time of day", {type: Zcl.DataType.TOD, value: {hours: 1, minutes: 2, seconds: Number.NaN, hundredths: 3}, written: [1, 2, 0xff, 3]}],
649
+ ["date", {type: Zcl.DataType.DATE, value: {year: 1901, month: 2, dayOfMonth: Number.NaN, dayOfWeek: 3}, written: [1, 2, 0xff, 3]}],
650
+ ])("Writes & Reads partial Non-Value for %s", (_name, payload) => {
651
+ const buffer = Buffer.alloc(10);
652
+ const buffalo = new BuffaloZcl(buffer);
653
+ buffalo.write(payload.type, payload.value, {});
654
+ expect(buffalo.getPosition()).toStrictEqual(payload.written.length);
655
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(payload.written));
656
+
657
+ buffalo.setPosition(0);
658
+
659
+ expect(buffalo.read(payload.type, {})).toStrictEqual(payload.value);
660
+ expect(buffalo.getPosition()).toStrictEqual(payload.written.length);
661
+ });
662
+
663
+ it.each([
664
+ ["uint32", {type: Zcl.DataType.UINT32, value: 32902534}, {position: 4, write: "writeUInt32", read: "readUInt32"}],
665
+ ["single prec", {type: Zcl.DataType.SINGLE_PREC, value: 1.539989614439558e-36}, {position: 4, write: "writeFloatLE", read: "readFloatLE"}],
666
+ ["IEEE address", {type: Zcl.DataType.IEEE_ADDR, value: "0xfe1234abcd9876ff"}, {position: 8, write: "writeIeeeAddr", read: "readIeeeAddr"}],
667
+ ])("Writes & Reads Use Data Type for %s", (_name, payload, expected) => {
668
+ const buffer = Buffer.alloc(255);
669
+ const buffalo = new BuffaloZcl(buffer);
670
+ const writeSpy = vi.spyOn(buffalo, expected.write as keyof BuffaloZcl);
671
+ const readSpy = vi.spyOn(buffalo, expected.read as keyof BuffaloZcl);
672
+
673
+ buffalo.write(Zcl.BuffaloZclDataType.USE_DATA_TYPE, payload.value, {dataType: payload.type});
674
+ expect(writeSpy).toHaveBeenCalledTimes(1);
675
+ expect(buffalo.getPosition()).toStrictEqual(expected.position);
676
+
677
+ buffalo.setPosition(0);
678
+
679
+ expect(buffalo.read(Zcl.BuffaloZclDataType.USE_DATA_TYPE, {dataType: payload.type})).toStrictEqual(payload.value);
680
+ expect(readSpy).toHaveBeenCalledTimes(1);
681
+ expect(buffalo.getPosition()).toStrictEqual(expected.position);
682
+ });
683
+
684
+ it("Writes & Reads Use Data Type as buffer when missing dataType option", () => {
685
+ const value = [12, 34];
686
+ const buffer = Buffer.alloc(2);
687
+ const buffalo = new BuffaloZcl(buffer);
688
+ const writeSpy = vi.spyOn(buffalo, "writeBuffer");
689
+ const readSpy = vi.spyOn(buffalo, "readBuffer");
690
+ buffalo.write(Zcl.BuffaloZclDataType.USE_DATA_TYPE, value, {});
691
+ expect(writeSpy).toHaveBeenCalledTimes(1);
692
+ expect(writeSpy).toHaveBeenCalledWith(value, value.length);
693
+
694
+ buffalo.setPosition(0);
695
+
696
+ expect(buffalo.read(Zcl.BuffaloZclDataType.USE_DATA_TYPE, {})).toStrictEqual(Buffer.from(value));
697
+ expect(readSpy).toHaveBeenCalledTimes(1);
698
+ expect(readSpy).toHaveBeenCalledWith(value.length);
699
+
700
+ buffalo.setPosition(0);
701
+
702
+ expect(buffalo.read(Zcl.BuffaloZclDataType.USE_DATA_TYPE, {length: 1})).toStrictEqual(Buffer.from([value[0]]));
703
+ expect(readSpy).toHaveBeenCalledTimes(2);
704
+ expect(readSpy).toHaveBeenCalledWith(1);
705
+ });
706
+
707
+ it("Throws when write Use Data Type is missing dataType option and value isnt buffer or number array", () => {
708
+ expect(() => {
709
+ const payload = 1;
710
+ const buffalo = new BuffaloZcl(Buffer.alloc(2));
711
+ buffalo.write(Zcl.BuffaloZclDataType.USE_DATA_TYPE, payload, {});
712
+ }).toThrow();
713
+ });
714
+
715
+ it.each([
716
+ Zcl.BuffaloZclDataType.LIST_UINT8,
717
+ Zcl.BuffaloZclDataType.LIST_UINT16,
718
+ Zcl.BuffaloZclDataType.LIST_UINT24,
719
+ Zcl.BuffaloZclDataType.LIST_UINT32,
720
+ Zcl.BuffaloZclDataType.LIST_ZONEINFO,
721
+ ])("Throws when read %s is missing required length option", (type) => {
722
+ expect(() => {
723
+ const buffalo = new BuffaloZcl(Buffer.alloc(1));
724
+ buffalo.read(type, {});
725
+ }).toThrow();
726
+ });
727
+
728
+ it("Writes & Reads zone info list", () => {
729
+ const value = [
730
+ {zoneID: 1, zoneStatus: 5},
731
+ {zoneID: 2, zoneStatus: 6},
732
+ ];
733
+ const expectedWritten = [1, 5, 0 /*uint16*/, 2, 6, 0 /*uint16*/];
734
+ const buffer = Buffer.alloc(10);
735
+ const buffalo = new BuffaloZcl(buffer);
736
+ buffalo.write(Zcl.BuffaloZclDataType.LIST_ZONEINFO, value, {});
737
+ expect(buffalo.getPosition()).toStrictEqual(expectedWritten.length);
738
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expectedWritten));
739
+
740
+ buffalo.setPosition(0);
741
+
742
+ expect(buffalo.read(Zcl.BuffaloZclDataType.LIST_ZONEINFO, {length: value.length})).toStrictEqual(value);
743
+ expect(buffalo.getPosition()).toStrictEqual(expectedWritten.length);
744
+ });
745
+
746
+ it.each([
747
+ ["6" /*uint8 x1*/, {value: [{clstId: 6, len: 1, extField: [1]}]}, {written: [...uint16To8Array(6), 1, 1]}],
748
+ ["8" /*uint8 x1*/, {value: [{clstId: 8, len: 1, extField: [2]}]}, {written: [...uint16To8Array(8), 1, 2]}],
749
+ ["258" /*uint8 x2*/, {value: [{clstId: 258, len: 2, extField: [1, 2]}]}, {written: [...uint16To8Array(258), 2, 1, 2]}],
750
+ [
751
+ "768" /*uint16 x3, uint8 x3, uint16 x2*/,
752
+ {value: [{clstId: 768, len: 13, extField: [1, 2, 3, 4, 5, 6, 7, 8]}]},
753
+ {
754
+ written: [
755
+ ...uint16To8Array(768),
756
+ 13,
757
+ ...uint16To8Array(1),
758
+ ...uint16To8Array(2),
759
+ ...uint16To8Array(3),
760
+ 4,
761
+ 5,
762
+ 6,
763
+ ...uint16To8Array(7),
764
+ ...uint16To8Array(8),
765
+ ],
766
+ },
767
+ ],
768
+ ])("Writes & Reads Extension Field Sets for data type %s", (_name, payload, expected) => {
769
+ const buffer = Buffer.alloc(expected.written.length); // XXX: can't be arbitrary atm, see impl for identified issue
770
+ const buffalo = new BuffaloZcl(buffer);
771
+ buffalo.write(Zcl.BuffaloZclDataType.EXTENSION_FIELD_SETS, payload.value, {});
772
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
773
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected.written));
774
+
775
+ buffalo.setPosition(0);
776
+
777
+ expect(buffalo.read(Zcl.BuffaloZclDataType.EXTENSION_FIELD_SETS, {})).toStrictEqual(payload.value);
778
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
779
+ });
780
+
781
+ it.each([
782
+ [
783
+ "single all options",
784
+ {value: [{transitionTime: 3, heatSetpoint: 20, coolSetpoint: 15}], readOptions: {payload: {mode: 0b11, numoftrans: 1}}},
785
+ {written: [...uint16To8Array(3), ...uint16To8Array(20), ...uint16To8Array(15)]},
786
+ ],
787
+ [
788
+ "single heat-only",
789
+ {value: [{transitionTime: 60, heatSetpoint: 25}], readOptions: {payload: {mode: 0b01, numoftrans: 1}}},
790
+ {written: [...uint16To8Array(60), ...uint16To8Array(25)]},
791
+ ],
792
+ [
793
+ "single cool-only",
794
+ {value: [{transitionTime: 256, coolSetpoint: 15}], readOptions: {payload: {mode: 0b10, numoftrans: 1}}},
795
+ {written: [...uint16To8Array(256), ...uint16To8Array(15)]},
796
+ ],
797
+ [
798
+ "multiple all options",
799
+ {
800
+ value: [
801
+ {transitionTime: 3, heatSetpoint: 20, coolSetpoint: 15},
802
+ {transitionTime: 7, heatSetpoint: 8, coolSetpoint: 3},
803
+ {transitionTime: 257, heatSetpoint: 256, coolSetpoint: 0},
804
+ ],
805
+ readOptions: {payload: {mode: 0b11, numoftrans: 3}},
806
+ },
807
+ {
808
+ written: [
809
+ ...uint16To8Array(3),
810
+ ...uint16To8Array(20),
811
+ ...uint16To8Array(15),
812
+ ...uint16To8Array(7),
813
+ ...uint16To8Array(8),
814
+ ...uint16To8Array(3),
815
+ ...uint16To8Array(257),
816
+ ...uint16To8Array(256),
817
+ ...uint16To8Array(0),
818
+ ],
819
+ },
820
+ ],
821
+ [
822
+ "multiple heat-only",
823
+ {
824
+ value: [
825
+ {transitionTime: 3, heatSetpoint: 20},
826
+ {transitionTime: 70, heatSetpoint: 8},
827
+ ],
828
+ readOptions: {payload: {mode: 0b01, numoftrans: 2}},
829
+ },
830
+ {written: [...uint16To8Array(3), ...uint16To8Array(20), ...uint16To8Array(70), ...uint16To8Array(8)]},
831
+ ],
832
+ [
833
+ "multiple cool-only",
834
+ {
835
+ value: [
836
+ {transitionTime: 3, coolSetpoint: 15},
837
+ {transitionTime: 65000, coolSetpoint: 3},
838
+ ],
839
+ readOptions: {payload: {mode: 0b10, numoftrans: 2}},
840
+ },
841
+ {written: [...uint16To8Array(3), ...uint16To8Array(15), ...uint16To8Array(65000), ...uint16To8Array(3)]},
842
+ ],
843
+ ])("Writes & Reads Thermo Transitions List", (_name, payload, expected) => {
844
+ const buffer = Buffer.alloc(50);
845
+ const buffalo = new BuffaloZcl(buffer);
846
+ buffalo.write(Zcl.BuffaloZclDataType.LIST_THERMO_TRANSITIONS, payload.value, {});
847
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
848
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected.written));
849
+
850
+ buffalo.setPosition(0);
851
+
852
+ expect(buffalo.read(Zcl.BuffaloZclDataType.LIST_THERMO_TRANSITIONS, payload.readOptions)).toStrictEqual(payload.value);
853
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
854
+ });
855
+
856
+ it("Throws when read Thermo Transitions List is missing required payload options", () => {
857
+ expect(() => {
858
+ const buffalo = new BuffaloZcl(Buffer.alloc(1));
859
+ buffalo.read(Zcl.BuffaloZclDataType.LIST_THERMO_TRANSITIONS, {});
860
+ }).toThrow();
861
+ expect(() => {
862
+ const buffalo = new BuffaloZcl(Buffer.alloc(1));
863
+ buffalo.read(Zcl.BuffaloZclDataType.LIST_THERMO_TRANSITIONS, {payload: {}});
864
+ }).toThrow();
865
+ expect(() => {
866
+ const buffalo = new BuffaloZcl(Buffer.alloc(1));
867
+ buffalo.read(Zcl.BuffaloZclDataType.LIST_THERMO_TRANSITIONS, {payload: {mode: 1}});
868
+ }).toThrow();
869
+ expect(() => {
870
+ const buffalo = new BuffaloZcl(Buffer.alloc(1));
871
+ buffalo.read(Zcl.BuffaloZclDataType.LIST_THERMO_TRANSITIONS, {payload: {numoftrans: 1}});
872
+ }).toThrow();
873
+ });
874
+
875
+ describe("GPD Frame", () => {
876
+ it("Reads unhandled command as object[raw] if buffer still has bytes to read", () => {
877
+ const value = [0xff, 0x00];
878
+ const buffalo = new BuffaloZcl(Buffer.from(value));
879
+
880
+ expect(buffalo.read(Zcl.BuffaloZclDataType.GPD_FRAME, {payload: {commandID: 0x1ff, payloadSize: 2}})).toStrictEqual({
881
+ raw: Buffer.from(value),
882
+ });
883
+ });
884
+
885
+ it("Reads unhandled command as object[raw] and ignores GPP data/mic", () => {
886
+ let value = [0xff, 0x00, 0x21, 0x43, 0xfe];
887
+ let buffalo = new BuffaloZcl(Buffer.from(value));
888
+
889
+ expect(buffalo.read(Zcl.BuffaloZclDataType.GPD_FRAME, {payload: {commandID: 0x1ff, payloadSize: 2}})).toStrictEqual({
890
+ raw: Buffer.from(value).subarray(0, -3),
891
+ });
892
+
893
+ value = [0xff, 0x00, 0x21, 0x43, 0xfe, 0xf1, 0xf2, 0xf3, 0xf4];
894
+ buffalo = new BuffaloZcl(Buffer.from(value));
895
+
896
+ expect(buffalo.read(Zcl.BuffaloZclDataType.GPD_FRAME, {payload: {commandID: 0x1ff, payloadSize: 2}})).toStrictEqual({
897
+ raw: Buffer.from(value).subarray(0, -7),
898
+ });
899
+ });
900
+
901
+ it("Reads unhandled command as empty object if buffer finished reading", () => {
902
+ // XXX: this is no longer relevant with proper payload size checking?
903
+ const value = [0xff, 0x00];
904
+ const buffalo = new BuffaloZcl(Buffer.from(value), value.length /* pos at end*/);
905
+
906
+ expect(buffalo.read(Zcl.BuffaloZclDataType.GPD_FRAME, {payload: {commandID: 0x1ff, payloadSize: value.length}})).toStrictEqual({
907
+ raw: Buffer.from([]),
908
+ });
909
+ });
910
+
911
+ it("Writes commissioning", () => {
912
+ const expected = [1 /*length*/, 0 /*options*/];
913
+ const buffalo = new BuffaloZcl(Buffer.alloc(2));
914
+
915
+ buffalo.write(
916
+ Zcl.BuffaloZclDataType.GPD_FRAME,
917
+ {
918
+ commandID: 0xf0,
919
+ options: 0,
920
+ panID: 0,
921
+ securityKey: Buffer.alloc(16),
922
+ keyMic: 0,
923
+ frameCounter: 0,
924
+ },
925
+ {},
926
+ );
927
+
928
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected));
929
+ });
930
+
931
+ it("Reads commissioning", () => {
932
+ const value = [0xff /*device*/, 0x00 /*options*/];
933
+ const buffalo = new BuffaloZcl(Buffer.from(value));
934
+
935
+ expect(buffalo.read(Zcl.BuffaloZclDataType.GPD_FRAME, {payload: {payloadSize: value.length, commandID: 0xe0}})).toStrictEqual({
936
+ deviceID: 0xff,
937
+ options: 0x00,
938
+ extendedOptions: 0x00,
939
+ securityKey: Buffer.alloc(16),
940
+ keyMic: 0,
941
+ outgoingCounter: 0,
942
+ manufacturerID: 0,
943
+ modelID: 0,
944
+ numGpdCommands: 0,
945
+ gpdCommandIdList: Buffer.alloc(0),
946
+ numServerClusters: 0,
947
+ numClientClusters: 0,
948
+ gpdServerClusters: Buffer.alloc(0),
949
+ gpdClientClusters: Buffer.alloc(0),
950
+ applicationInfo: 0x00,
951
+ genericSwitchConfig: 0,
952
+ currentContactStatus: 0,
953
+ });
954
+ });
955
+
956
+ it("Writes commissioning all options", () => {
957
+ const expected = [
958
+ 27, // length
959
+ 0b11111, // options
960
+ 0xff,
961
+ 0xff, // PAN ID
962
+ 0,
963
+ 0,
964
+ 0,
965
+ 0,
966
+ 0,
967
+ 0,
968
+ 0,
969
+ 0,
970
+ 0,
971
+ 0,
972
+ 0,
973
+ 0,
974
+ 0,
975
+ 0,
976
+ 0,
977
+ 0, // security key
978
+ 0,
979
+ 0,
980
+ 0,
981
+ 0, // key mic
982
+ 0,
983
+ 0,
984
+ 0,
985
+ 0, // frame counter
986
+ ];
987
+ const buffalo = new BuffaloZcl(Buffer.alloc(28));
988
+
989
+ buffalo.write(
990
+ Zcl.BuffaloZclDataType.GPD_FRAME,
991
+ {
992
+ commandID: 0xf0,
993
+ options: 0b11111,
994
+ panID: 0xffff,
995
+ securityKey: Buffer.alloc(16),
996
+ keyMic: 0,
997
+ frameCounter: 0,
998
+ },
999
+ {},
1000
+ );
1001
+
1002
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected));
1003
+ });
1004
+
1005
+ it("Reads commissioning all options", () => {
1006
+ const value = [
1007
+ 0xff, // device
1008
+ 0x80 | 0x04, // options
1009
+ 0x20 | 0x40 | 0x80, // extended options
1010
+ 0,
1011
+ 0,
1012
+ 0,
1013
+ 0,
1014
+ 0,
1015
+ 0,
1016
+ 0,
1017
+ 0,
1018
+ 0,
1019
+ 0,
1020
+ 0,
1021
+ 0,
1022
+ 0,
1023
+ 0,
1024
+ 0,
1025
+ 0, // security key
1026
+ 0,
1027
+ 0,
1028
+ 0,
1029
+ 0, // key mic
1030
+ 0,
1031
+ 0,
1032
+ 0,
1033
+ 0, // outgoing counter
1034
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10, // application info
1035
+ 0,
1036
+ 0, // manufacturer ID
1037
+ 0,
1038
+ 0, // model ID
1039
+ 0, // num GPD commands + commands
1040
+ 0, // clusters
1041
+ 2, // switch info length
1042
+ 5, // generic switch config
1043
+ 2, // current contact status
1044
+ ];
1045
+ const buffalo = new BuffaloZcl(Buffer.from(value));
1046
+
1047
+ expect(buffalo.read(Zcl.BuffaloZclDataType.GPD_FRAME, {payload: {payloadSize: value.length, commandID: 0xe0}})).toStrictEqual({
1048
+ deviceID: 0xff,
1049
+ options: 0x80 | 0x04,
1050
+ extendedOptions: 0x20 | 0x40 | 0x80,
1051
+ securityKey: Buffer.alloc(16),
1052
+ keyMic: 0,
1053
+ outgoingCounter: 0,
1054
+ manufacturerID: 0,
1055
+ modelID: 0,
1056
+ numGpdCommands: 0,
1057
+ gpdCommandIdList: Buffer.alloc(0),
1058
+ numServerClusters: 0,
1059
+ numClientClusters: 0,
1060
+ gpdServerClusters: Buffer.alloc(0),
1061
+ gpdClientClusters: Buffer.alloc(0),
1062
+ applicationInfo: 0x01 | 0x02 | 0x04 | 0x08 | 0x10,
1063
+ genericSwitchConfig: 5,
1064
+ currentContactStatus: 2,
1065
+ });
1066
+ });
1067
+
1068
+ it("Writes channel configuration", () => {
1069
+ const expected = [1 /*length*/, 0xf /*Channel 26*/];
1070
+ const buffalo = new BuffaloZcl(Buffer.alloc(2));
1071
+ buffalo.write(
1072
+ Zcl.BuffaloZclDataType.GPD_FRAME,
1073
+ {
1074
+ commandID: 0xf3,
1075
+ operationalChannel: 0xf,
1076
+ basic: false,
1077
+ },
1078
+ {},
1079
+ );
1080
+
1081
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected));
1082
+ });
1083
+
1084
+ it("Writes channel configuration basic", () => {
1085
+ const expected = [1 /*length*/, 0x1f /*Channel 26 + Basic*/];
1086
+ const buffalo = new BuffaloZcl(Buffer.alloc(2));
1087
+ buffalo.write(
1088
+ Zcl.BuffaloZclDataType.GPD_FRAME,
1089
+ {
1090
+ commandID: 0xf3,
1091
+ operationalChannel: 0xf,
1092
+ basic: true,
1093
+ },
1094
+ {},
1095
+ );
1096
+
1097
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected));
1098
+ });
1099
+
1100
+ it("Reads channel request", () => {
1101
+ const value = [0xfa];
1102
+ const buffalo = new BuffaloZcl(Buffer.from(value));
1103
+
1104
+ expect(buffalo.read(Zcl.BuffaloZclDataType.GPD_FRAME, {payload: {payloadSize: value.length, commandID: 0xe3}})).toStrictEqual({
1105
+ nextChannel: 0xa,
1106
+ nextNextChannel: 0xf,
1107
+ });
1108
+ });
1109
+
1110
+ it("Reads attribute report", () => {
1111
+ const value = [
1112
+ 0x12,
1113
+ 0x34, // Manufacturer ID
1114
+ 0xff,
1115
+ 0xff, // Cluster ID
1116
+ 0x00,
1117
+ 0x00, // Attribute ID
1118
+ Zcl.DataType.UINT32, // Attribute Type
1119
+ 0x00,
1120
+ 0x01,
1121
+ 0x02,
1122
+ 0x03,
1123
+ 0x01,
1124
+ 0x00,
1125
+ Zcl.DataType.CHAR_STR,
1126
+ 0x06,
1127
+ 0x5a,
1128
+ 0x49,
1129
+ 0x47,
1130
+ 0x42,
1131
+ 0x45,
1132
+ 0x45,
1133
+ 0x02,
1134
+ 0x00,
1135
+ Zcl.DataType.BOOLEAN,
1136
+ 0x01,
1137
+ ];
1138
+ const buffalo = new BuffaloZcl(Buffer.from(value));
1139
+
1140
+ expect(buffalo.read(Zcl.BuffaloZclDataType.GPD_FRAME, {payload: {commandID: 0xa1, payloadSize: value.length}})).toStrictEqual({
1141
+ manufacturerCode: 13330,
1142
+ clusterID: 65535,
1143
+ attributes: {"0": 50462976, "1": "ZIGBEE", "2": 1},
1144
+ });
1145
+ });
1146
+
1147
+ it("Writes custom reply", () => {
1148
+ const expected = [
1149
+ 6, // length
1150
+ 90,
1151
+ 73,
1152
+ 71,
1153
+ 66,
1154
+ 69,
1155
+ 69, // ZIGBEE
1156
+ ];
1157
+
1158
+ const buffalo = new BuffaloZcl(Buffer.alloc(7));
1159
+ buffalo.write(Zcl.BuffaloZclDataType.GPD_FRAME, {commandID: 0xf4, buffer: Buffer.from("ZIGBEE")}, {});
1160
+
1161
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected));
1162
+ });
1163
+
1164
+ it("Writes nothing for unhandled command", () => {
1165
+ const buffalo = new BuffaloZcl(Buffer.alloc(7));
1166
+ buffalo.write(Zcl.BuffaloZclDataType.GPD_FRAME, {commandID: 0x1ff}, {});
1167
+
1168
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.alloc(0));
1169
+ });
1170
+
1171
+ it("Throws when read is missing payload.payloadSize option", () => {
1172
+ expect(() => {
1173
+ const buffalo = new BuffaloZcl(Buffer.alloc(1));
1174
+ buffalo.read(Zcl.BuffaloZclDataType.GPD_FRAME, {payload: {commandID: 0xa1}});
1175
+ }).toThrow("Cannot read GPD_FRAME without required payload options specified");
1176
+ });
1177
+ });
1178
+
1179
+ it.each([
1180
+ ["whole", {value: {indicatorType: Zcl.StructuredIndicatorType.Whole}}, {written: [Zcl.StructuredIndicatorType.Whole]}],
1181
+ [
1182
+ "indexes only",
1183
+ {value: {indexes: [3, 4, 5, 256]}},
1184
+ {written: [4, ...uint16To8Array(3), ...uint16To8Array(4), ...uint16To8Array(5), ...uint16To8Array(256)]},
1185
+ ],
1186
+ ])("Writes & Reads Structured Selector for %s", (_name, payload, expected) => {
1187
+ const buffer = Buffer.alloc(50);
1188
+ const buffalo = new BuffaloZcl(buffer);
1189
+ buffalo.write(Zcl.BuffaloZclDataType.STRUCTURED_SELECTOR, payload.value, {});
1190
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
1191
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected.written));
1192
+
1193
+ buffalo.setPosition(0);
1194
+
1195
+ expect(buffalo.read(Zcl.BuffaloZclDataType.STRUCTURED_SELECTOR, {})).toStrictEqual(payload.value);
1196
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
1197
+ });
1198
+
1199
+ it.each([
1200
+ ["Add", {value: {indicatorType: Zcl.StructuredIndicatorType.WriteAdd}}, {written: [Zcl.StructuredIndicatorType.WriteAdd]}],
1201
+ ["Remove", {value: {indicatorType: Zcl.StructuredIndicatorType.WriteRemove}}, {written: [Zcl.StructuredIndicatorType.WriteRemove]}],
1202
+ ])("Writes Structured Selector for %s", (_name, payload, expected) => {
1203
+ const buffer = Buffer.alloc(50);
1204
+ const buffalo = new BuffaloZcl(buffer);
1205
+ buffalo.write(Zcl.BuffaloZclDataType.STRUCTURED_SELECTOR, payload.value, {});
1206
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
1207
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected.written));
1208
+ });
1209
+
1210
+ it("Throws when read Strctured Select indicator is outside range", () => {
1211
+ expect(() => {
1212
+ const buffer = Buffer.from([17]);
1213
+ const buffalo = new BuffaloZcl(buffer);
1214
+ buffalo.read(Zcl.BuffaloZclDataType.STRUCTURED_SELECTOR, {});
1215
+ }).toThrow();
1216
+ expect(() => {
1217
+ const buffer = Buffer.from([17, 1, 2, 3]);
1218
+ const buffalo = new BuffaloZcl(buffer);
1219
+ buffalo.read(Zcl.BuffaloZclDataType.STRUCTURED_SELECTOR, {});
1220
+ }).toThrow();
1221
+ });
1222
+
1223
+ it.each([
1224
+ [
1225
+ "single",
1226
+ {value: [{dp: 254, datatype: 125, data: Buffer.from([1, 3, 5])}]},
1227
+ {written: [254, 125, ...uint16To8Array(3).reverse() /*BE*/, 1, 3, 5]},
1228
+ ],
1229
+ [
1230
+ "multiple",
1231
+ {
1232
+ value: [
1233
+ {dp: 254, datatype: 125, data: Buffer.from([1, 3, 5])},
1234
+ {dp: 125, datatype: 254, data: Buffer.from([5, 0, 1, 5])},
1235
+ ],
1236
+ },
1237
+ {written: [254, 125, ...uint16To8Array(3).reverse() /*BE*/, 1, 3, 5, 125, 254, ...uint16To8Array(4).reverse() /*BE*/, 5, 0, 1, 5]},
1238
+ ],
1239
+ ])("Writes & Reads Tuya Data Point Values List %s", (_name, payload, expected) => {
1240
+ const buffer = Buffer.alloc(expected.written.length); // XXX: can't be arbitrary atm, see impl for identified issue
1241
+ const buffalo = new BuffaloZcl(buffer);
1242
+ buffalo.write(Zcl.BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES, payload.value, {});
1243
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
1244
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expected.written));
1245
+
1246
+ buffalo.setPosition(0);
1247
+
1248
+ expect(buffalo.read(Zcl.BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES, {})).toStrictEqual(payload.value);
1249
+ expect(buffalo.getPosition()).toStrictEqual(expected.written.length);
1250
+ });
1251
+
1252
+ it("Reads invalid Tuya Data Point Values List as empty array", () => {
1253
+ // incomplete
1254
+ const buffer = Buffer.from([254, 125]);
1255
+ const buffalo = new BuffaloZcl(buffer);
1256
+ expect(buffalo.read(Zcl.BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES, {})).toStrictEqual([]);
1257
+ });
1258
+
1259
+ it("Writes & Reads Mi Boxer Zones List", () => {
1260
+ const value = [
1261
+ {zoneNum: 1, groupId: 0x2b84},
1262
+ {zoneNum: 2, groupId: 0x2b98},
1263
+ {zoneNum: 3, groupId: 0x2bac},
1264
+ {zoneNum: 4, groupId: 0x2bc0},
1265
+ {zoneNum: 5, groupId: 0x2bd4},
1266
+ {zoneNum: 6, groupId: 0x2be8},
1267
+ {zoneNum: 7, groupId: 0x2bfc},
1268
+ {zoneNum: 8, groupId: 0x2c10},
1269
+ ];
1270
+ const expectedWritten = [
1271
+ value.length,
1272
+ ...uint16To8Array(value[0].groupId),
1273
+ value[0].zoneNum,
1274
+ ...uint16To8Array(value[1].groupId),
1275
+ value[1].zoneNum,
1276
+ ...uint16To8Array(value[2].groupId),
1277
+ value[2].zoneNum,
1278
+ ...uint16To8Array(value[3].groupId),
1279
+ value[3].zoneNum,
1280
+ ...uint16To8Array(value[4].groupId),
1281
+ value[4].zoneNum,
1282
+ ...uint16To8Array(value[5].groupId),
1283
+ value[5].zoneNum,
1284
+ ...uint16To8Array(value[6].groupId),
1285
+ value[6].zoneNum,
1286
+ ...uint16To8Array(value[7].groupId),
1287
+ value[7].zoneNum,
1288
+ ];
1289
+ const buffer = Buffer.alloc(50);
1290
+ const buffalo = new BuffaloZcl(buffer);
1291
+ buffalo.write(Zcl.BuffaloZclDataType.LIST_MIBOXER_ZONES, value, {});
1292
+ expect(buffalo.getPosition()).toStrictEqual(expectedWritten.length);
1293
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expectedWritten));
1294
+
1295
+ buffalo.setPosition(0);
1296
+
1297
+ expect(buffalo.read(Zcl.BuffaloZclDataType.LIST_MIBOXER_ZONES, {length: value.length})).toStrictEqual(value);
1298
+ expect(buffalo.getPosition()).toStrictEqual(expectedWritten.length);
1299
+ });
1300
+
1301
+ it("Writes & Reads big endian uint24", () => {
1302
+ const value = 16777200;
1303
+ const expectedWritten = [0xff, 0xff, 0xf0];
1304
+ const expectedPosition = 3;
1305
+ const buffer = Buffer.alloc(10);
1306
+ const buffalo = new BuffaloZcl(buffer);
1307
+ buffalo.write(Zcl.BuffaloZclDataType.BIG_ENDIAN_UINT24, value, {});
1308
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
1309
+ expect(buffalo.getWritten()).toStrictEqual(Buffer.from(expectedWritten));
1310
+
1311
+ buffalo.setPosition(0);
1312
+
1313
+ expect(buffalo.read(Zcl.BuffaloZclDataType.BIG_ENDIAN_UINT24, {})).toStrictEqual(value);
1314
+ expect(buffalo.getPosition()).toStrictEqual(expectedPosition);
1315
+ });
1316
+ });