@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.
- package/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/.github/copilot-instructions.md +689 -0
- package/.github/dependabot.yml +22 -0
- package/.github/prompts/copilot-instructions-blueprint-generator.prompt.md +294 -0
- package/.github/prompts/create-agentsmd.prompt.md +249 -0
- package/.github/prompts/create-specification.prompt.md +127 -0
- package/.github/prompts/review-and-refactor.prompt.md +15 -0
- package/.github/prompts/update-specification.prompt.md +127 -0
- package/.github/workflows/ci.yml +70 -0
- package/.github/workflows/release-please.yml +18 -0
- package/.github/workflows/stale.yml +20 -0
- package/.github/workflows/typedoc.yaml +47 -0
- package/.release-please-manifest.json +2 -2
- package/.vscode/extensions.json +3 -0
- package/.vscode/settings.json +11 -0
- package/AGENTS.md +441 -0
- package/CHANGELOG.md +1245 -0
- package/README.md +1 -1
- package/biome.json +103 -0
- package/examples/join-and-log.js +18 -18
- package/package.json +83 -70
- package/release-please-config.json +8 -8
- package/scripts/check-clusters-changes.ts +328 -0
- package/scripts/clusters-changes.log +584 -0
- package/scripts/clusters-typegen.ts +608 -0
- package/scripts/utils.ts +88 -0
- package/scripts/zap-update-clusters-report.json +303 -0
- package/scripts/zap-update-clusters.ts +1520 -0
- package/scripts/zap-update-types.ts +707 -0
- package/scripts/zap-xml-clusters-overrides-data.ts +52 -0
- package/scripts/zap-xml-clusters-overrides.ts +400 -0
- package/scripts/zap-xml-types.ts +146 -0
- package/src/adapter/adapter.ts +210 -0
- package/src/adapter/adapterDiscovery.ts +736 -0
- package/src/adapter/const.ts +12 -0
- package/src/adapter/deconz/adapter/deconzAdapter.ts +888 -0
- package/src/adapter/deconz/driver/constants.ts +246 -0
- package/src/adapter/deconz/driver/driver.ts +1528 -0
- package/src/adapter/deconz/driver/frame.ts +11 -0
- package/src/adapter/deconz/driver/frameParser.ts +766 -0
- package/src/adapter/deconz/driver/parser.ts +45 -0
- package/src/adapter/deconz/driver/writer.ts +22 -0
- package/src/adapter/deconz/types.d.ts +13 -0
- package/src/adapter/ember/adapter/emberAdapter.ts +2262 -0
- package/src/adapter/ember/adapter/endpoints.ts +86 -0
- package/src/adapter/ember/adapter/oneWaitress.ts +324 -0
- package/src/adapter/ember/adapter/tokensManager.ts +780 -0
- package/src/adapter/ember/consts.ts +178 -0
- package/src/adapter/ember/enums.ts +1746 -0
- package/src/adapter/ember/ezsp/buffalo.ts +1392 -0
- package/src/adapter/ember/ezsp/consts.ts +148 -0
- package/src/adapter/ember/ezsp/enums.ts +1114 -0
- package/src/adapter/ember/ezsp/ezsp.ts +9073 -0
- package/src/adapter/ember/ezspError.ts +10 -0
- package/src/adapter/ember/types.ts +866 -0
- package/src/adapter/ember/uart/ash.ts +1933 -0
- package/src/adapter/ember/uart/consts.ts +109 -0
- package/src/adapter/ember/uart/enums.ts +192 -0
- package/src/adapter/ember/uart/parser.ts +42 -0
- package/src/adapter/ember/uart/queues.ts +247 -0
- package/src/adapter/ember/uart/writer.ts +50 -0
- package/src/adapter/ember/utils/initters.ts +58 -0
- package/src/adapter/ember/utils/math.ts +71 -0
- package/src/adapter/events.ts +21 -0
- package/src/adapter/ezsp/adapter/backup.ts +100 -0
- package/src/adapter/ezsp/adapter/ezspAdapter.ts +632 -0
- package/src/adapter/ezsp/driver/commands.ts +2497 -0
- package/src/adapter/ezsp/driver/consts.ts +11 -0
- package/src/adapter/ezsp/driver/driver.ts +1002 -0
- package/src/adapter/ezsp/driver/ezsp.ts +802 -0
- package/src/adapter/ezsp/driver/frame.ts +101 -0
- package/src/adapter/ezsp/driver/index.ts +4 -0
- package/src/adapter/ezsp/driver/multicast.ts +78 -0
- package/src/adapter/ezsp/driver/parser.ts +81 -0
- package/src/adapter/ezsp/driver/types/basic.ts +201 -0
- package/src/adapter/ezsp/driver/types/index.ts +239 -0
- package/src/adapter/ezsp/driver/types/named.ts +2330 -0
- package/src/adapter/ezsp/driver/types/struct.ts +844 -0
- package/src/adapter/ezsp/driver/uart.ts +460 -0
- package/src/adapter/ezsp/driver/utils/crc16ccitt.ts +44 -0
- package/src/adapter/ezsp/driver/utils/index.ts +32 -0
- package/src/adapter/ezsp/driver/writer.ts +64 -0
- package/src/adapter/index.ts +3 -0
- package/src/adapter/serialPort.ts +58 -0
- package/src/adapter/tstype.ts +57 -0
- package/src/adapter/utils.ts +41 -0
- package/src/adapter/z-stack/adapter/adapter-backup.ts +509 -0
- package/src/adapter/z-stack/adapter/adapter-nv-memory.ts +457 -0
- package/src/adapter/z-stack/adapter/endpoints.ts +60 -0
- package/src/adapter/z-stack/adapter/manager.ts +543 -0
- package/src/adapter/z-stack/adapter/tstype.ts +6 -0
- package/src/adapter/z-stack/adapter/zStackAdapter.ts +1350 -0
- package/src/adapter/z-stack/constants/af.ts +27 -0
- package/src/adapter/z-stack/constants/common.ts +285 -0
- package/src/adapter/z-stack/constants/dbg.ts +23 -0
- package/src/adapter/z-stack/constants/index.ts +11 -0
- package/src/adapter/z-stack/constants/mac.ts +128 -0
- package/src/adapter/z-stack/constants/sapi.ts +25 -0
- package/src/adapter/z-stack/constants/sys.ts +72 -0
- package/src/adapter/z-stack/constants/util.ts +82 -0
- package/src/adapter/z-stack/constants/utils.ts +14 -0
- package/src/adapter/z-stack/constants/zdo.ts +103 -0
- package/src/adapter/z-stack/models/startup-options.ts +13 -0
- package/src/adapter/z-stack/structs/entries/address-manager-entry.ts +44 -0
- package/src/adapter/z-stack/structs/entries/address-manager-table.ts +19 -0
- package/src/adapter/z-stack/structs/entries/aps-link-key-data-entry.ts +12 -0
- package/src/adapter/z-stack/structs/entries/aps-link-key-data-table.ts +21 -0
- package/src/adapter/z-stack/structs/entries/aps-tc-link-key-entry.ts +19 -0
- package/src/adapter/z-stack/structs/entries/aps-tc-link-key-table.ts +21 -0
- package/src/adapter/z-stack/structs/entries/channel-list.ts +8 -0
- package/src/adapter/z-stack/structs/entries/has-configured.ts +16 -0
- package/src/adapter/z-stack/structs/entries/index.ts +16 -0
- package/src/adapter/z-stack/structs/entries/nib.ts +66 -0
- package/src/adapter/z-stack/structs/entries/nwk-key-descriptor.ts +15 -0
- package/src/adapter/z-stack/structs/entries/nwk-key.ts +13 -0
- package/src/adapter/z-stack/structs/entries/nwk-pan-id.ts +8 -0
- package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.ts +20 -0
- package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.ts +19 -0
- package/src/adapter/z-stack/structs/entries/security-manager-entry.ts +33 -0
- package/src/adapter/z-stack/structs/entries/security-manager-table.ts +22 -0
- package/src/adapter/z-stack/structs/index.ts +4 -0
- package/src/adapter/z-stack/structs/serializable-memory-object.ts +14 -0
- package/src/adapter/z-stack/structs/struct.ts +367 -0
- package/src/adapter/z-stack/structs/table.ts +198 -0
- package/src/adapter/z-stack/unpi/constants.ts +33 -0
- package/src/adapter/z-stack/unpi/frame.ts +62 -0
- package/src/adapter/z-stack/unpi/index.ts +4 -0
- package/src/adapter/z-stack/unpi/parser.ts +67 -0
- package/src/adapter/z-stack/unpi/writer.ts +37 -0
- package/src/adapter/z-stack/utils/channel-list.ts +40 -0
- package/src/adapter/z-stack/utils/index.ts +2 -0
- package/src/adapter/z-stack/utils/network-options.ts +26 -0
- package/src/adapter/z-stack/znp/buffaloZnp.ts +175 -0
- package/src/adapter/z-stack/znp/definition.ts +2713 -0
- package/src/adapter/z-stack/znp/index.ts +2 -0
- package/src/adapter/z-stack/znp/parameterType.ts +22 -0
- package/src/adapter/z-stack/znp/tstype.ts +44 -0
- package/src/adapter/z-stack/znp/utils.ts +10 -0
- package/src/adapter/z-stack/znp/znp.ts +345 -0
- package/src/adapter/z-stack/znp/zpiObject.ts +148 -0
- package/src/adapter/zboss/adapter/zbossAdapter.ts +535 -0
- package/src/adapter/zboss/commands.ts +1184 -0
- package/src/adapter/zboss/consts.ts +9 -0
- package/src/adapter/zboss/driver.ts +422 -0
- package/src/adapter/zboss/enums.ts +360 -0
- package/src/adapter/zboss/frame.ts +227 -0
- package/src/adapter/zboss/reader.ts +65 -0
- package/src/adapter/zboss/types.ts +0 -0
- package/src/adapter/zboss/uart.ts +428 -0
- package/src/adapter/zboss/utils.ts +58 -0
- package/src/adapter/zboss/writer.ts +49 -0
- package/src/adapter/zigate/adapter/patchZdoBuffaloBE.ts +25 -0
- package/src/adapter/zigate/adapter/zigateAdapter.ts +633 -0
- package/src/adapter/zigate/driver/LICENSE +17 -0
- package/src/adapter/zigate/driver/buffaloZiGate.ts +210 -0
- package/src/adapter/zigate/driver/commandType.ts +418 -0
- package/src/adapter/zigate/driver/constants.ts +150 -0
- package/src/adapter/zigate/driver/frame.ts +197 -0
- package/src/adapter/zigate/driver/messageType.ts +287 -0
- package/src/adapter/zigate/driver/parameterType.ts +32 -0
- package/src/adapter/zigate/driver/ziGateObject.ts +146 -0
- package/src/adapter/zigate/driver/zigate.ts +422 -0
- package/src/adapter/zoh/adapter/utils.ts +27 -0
- package/src/adapter/zoh/adapter/zohAdapter.ts +931 -0
- package/src/buffalo/buffalo.ts +336 -0
- package/src/buffalo/index.ts +1 -0
- package/src/controller/controller.ts +1159 -0
- package/src/controller/database.ts +148 -0
- package/src/controller/events.ts +52 -0
- package/src/controller/greenPower.ts +613 -0
- package/src/controller/helpers/index.ts +1 -0
- package/src/controller/helpers/installCodes.ts +107 -0
- package/src/controller/helpers/ota.ts +575 -0
- package/src/controller/helpers/request.ts +96 -0
- package/src/controller/helpers/requestQueue.ts +126 -0
- package/src/controller/helpers/zclFrameConverter.ts +64 -0
- package/src/controller/helpers/zclTransactionSequenceNumber.ts +15 -0
- package/src/controller/index.ts +6 -0
- package/src/controller/model/device.ts +1791 -0
- package/src/controller/model/endpoint.ts +1235 -0
- package/src/controller/model/entity.ts +43 -0
- package/src/controller/model/group.ts +446 -0
- package/src/controller/model/index.ts +5 -0
- package/src/controller/model/konnextConfig.ts +6 -0
- package/src/controller/model/zigbeeEntity.ts +30 -0
- package/src/controller/touchlink.ts +195 -0
- package/src/controller/tstype.ts +374 -0
- package/src/index.ts +14 -0
- package/src/models/backup-storage-legacy.ts +48 -0
- package/src/models/backup-storage-unified.ts +47 -0
- package/src/models/backup.ts +37 -0
- package/src/models/index.ts +5 -0
- package/src/models/network-options.ts +11 -0
- package/src/utils/aes.ts +218 -0
- package/src/utils/async-mutex.ts +31 -0
- package/src/utils/backup.ts +152 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/logger.ts +20 -0
- package/src/utils/patchBigIntSerialization.ts +8 -0
- package/src/utils/queue.ts +79 -0
- package/src/utils/timeService.ts +139 -0
- package/src/utils/utils.ts +19 -0
- package/src/utils/wait.ts +5 -0
- package/src/utils/waitress.ts +96 -0
- package/src/zspec/consts.ts +89 -0
- package/src/zspec/enums.ts +22 -0
- package/src/zspec/index.ts +3 -0
- package/src/zspec/tstypes.ts +18 -0
- package/src/zspec/utils.ts +247 -0
- package/src/zspec/zcl/buffaloZcl.ts +1073 -0
- package/src/zspec/zcl/definition/cluster.ts +7845 -0
- package/src/zspec/zcl/definition/clusters-types.ts +8577 -0
- package/src/zspec/zcl/definition/consts.ts +24 -0
- package/src/zspec/zcl/definition/datatypes.ts +2454 -0
- package/src/zspec/zcl/definition/enums.ts +224 -0
- package/src/zspec/zcl/definition/foundation.ts +342 -0
- package/src/zspec/zcl/definition/manufacturerCode.ts +730 -0
- package/src/zspec/zcl/definition/status.ts +69 -0
- package/src/zspec/zcl/definition/tstype.ts +446 -0
- package/src/zspec/zcl/index.ts +11 -0
- package/src/zspec/zcl/utils.ts +521 -0
- package/src/zspec/zcl/zclFrame.ts +383 -0
- package/src/zspec/zcl/zclHeader.ts +102 -0
- package/src/zspec/zcl/zclStatusError.ts +10 -0
- package/src/zspec/zdo/buffaloZdo.ts +2336 -0
- package/src/zspec/zdo/definition/clusters.ts +722 -0
- package/src/zspec/zdo/definition/consts.ts +16 -0
- package/src/zspec/zdo/definition/enums.ts +99 -0
- package/src/zspec/zdo/definition/status.ts +105 -0
- package/src/zspec/zdo/definition/tstypes.ts +1062 -0
- package/src/zspec/zdo/index.ts +7 -0
- package/src/zspec/zdo/utils.ts +76 -0
- package/src/zspec/zdo/zdoStatusError.ts +10 -0
- package/test/adapter/adapter.test.ts +1276 -0
- package/test/adapter/ember/ash.test.ts +337 -0
- package/test/adapter/ember/consts.ts +131 -0
- package/test/adapter/ember/emberAdapter.test.ts +3447 -0
- package/test/adapter/ember/ezsp.test.ts +389 -0
- package/test/adapter/ember/ezspBuffalo.test.ts +93 -0
- package/test/adapter/ember/ezspError.test.ts +12 -0
- package/test/adapter/ember/math.test.ts +190 -0
- package/test/adapter/ezsp/frame.test.ts +30 -0
- package/test/adapter/ezsp/uart.test.ts +181 -0
- package/test/adapter/z-stack/adapter.test.ts +4260 -0
- package/test/adapter/z-stack/constants.test.ts +33 -0
- package/test/adapter/z-stack/structs.test.ts +115 -0
- package/test/adapter/z-stack/unpi.test.ts +213 -0
- package/test/adapter/z-stack/znp.test.ts +1288 -0
- package/test/adapter/zboss/fixZdoResponse.test.ts +179 -0
- package/test/adapter/zigate/patchZdoBuffaloBE.test.ts +81 -0
- package/test/adapter/zigate/zdo.test.ts +187 -0
- package/test/adapter/zoh/utils.test.ts +36 -0
- package/test/adapter/zoh/zohAdapter.test.ts +1451 -0
- package/test/benchOptions.ts +14 -0
- package/test/buffalo.test.ts +431 -0
- package/test/controller.bench.ts +215 -0
- package/test/controller.test.ts +10030 -0
- package/test/data/integrity-code-1166-012B-24031511-upgradeMe-RB 249 T.zigbee +0 -0
- package/test/data/manuf-tags-tradfri-cv-cct-unified_release_prod_v587757105_33e34452-9267-4665-bc5a-844c8f61f063.ota +0 -0
- package/test/data/padded-tretakt_smart_plug_soc-0x1100-2.4.25-prod.ota.ota.signed +0 -0
- package/test/data/telink-aes-A60_RGBW_T-0x00B6-0x03483712-MF_DIS.OTA +0 -0
- package/test/data/zbminir2_v1.0.8.ota +0 -0
- package/test/device-ota.test.ts +3332 -0
- package/test/greenpower.test.ts +1409 -0
- package/test/mockAdapters.ts +95 -0
- package/test/mockDevices.ts +623 -0
- package/test/requests.bench.ts +321 -0
- package/test/testUtils.ts +20 -0
- package/test/timeService.test.ts +214 -0
- package/test/tsconfig.json +9 -0
- package/test/utils/math.ts +19 -0
- package/test/utils.test.ts +352 -0
- package/test/vitest.config.mts +28 -0
- package/test/vitest.ts +9 -0
- package/test/zcl.test.ts +2858 -0
- package/test/zspec/utils.test.ts +68 -0
- package/test/zspec/zcl/buffalo.test.ts +1316 -0
- package/test/zspec/zcl/frame.test.ts +1056 -0
- package/test/zspec/zcl/utils.test.ts +650 -0
- package/test/zspec/zdo/buffalo.test.ts +1850 -0
- package/test/zspec/zdo/utils.test.ts +241 -0
- package/tsconfig.json +8 -10
- package/.babelrc.js +0 -6
- package/.eslintignore +0 -3
- package/dist/adapter/adapter.d.ts +0 -64
- package/dist/adapter/adapter.d.ts.map +0 -1
- package/dist/adapter/adapter.js +0 -157
- package/dist/adapter/adapter.js.map +0 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +0 -71
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +0 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.js +0 -1072
- package/dist/adapter/deconz/adapter/deconzAdapter.js.map +0 -1
- package/dist/adapter/deconz/adapter/index.d.ts +0 -3
- package/dist/adapter/deconz/adapter/index.d.ts.map +0 -1
- package/dist/adapter/deconz/adapter/index.js +0 -11
- package/dist/adapter/deconz/adapter/index.js.map +0 -1
- package/dist/adapter/deconz/driver/constants.d.ts +0 -105
- package/dist/adapter/deconz/driver/constants.d.ts.map +0 -1
- package/dist/adapter/deconz/driver/constants.js +0 -56
- package/dist/adapter/deconz/driver/constants.js.map +0 -1
- package/dist/adapter/deconz/driver/driver.d.ts +0 -82
- package/dist/adapter/deconz/driver/driver.d.ts.map +0 -1
- package/dist/adapter/deconz/driver/driver.js +0 -751
- package/dist/adapter/deconz/driver/driver.js.map +0 -1
- package/dist/adapter/deconz/driver/frame.d.ts +0 -7
- package/dist/adapter/deconz/driver/frame.d.ts.map +0 -1
- package/dist/adapter/deconz/driver/frame.js +0 -14
- package/dist/adapter/deconz/driver/frame.js.map +0 -1
- package/dist/adapter/deconz/driver/frameParser.d.ts +0 -3
- package/dist/adapter/deconz/driver/frameParser.d.ts.map +0 -1
- package/dist/adapter/deconz/driver/frameParser.js +0 -444
- package/dist/adapter/deconz/driver/frameParser.js.map +0 -1
- package/dist/adapter/deconz/driver/parser.d.ts +0 -13
- package/dist/adapter/deconz/driver/parser.d.ts.map +0 -1
- package/dist/adapter/deconz/driver/parser.js +0 -64
- package/dist/adapter/deconz/driver/parser.js.map +0 -1
- package/dist/adapter/deconz/driver/writer.d.ts +0 -9
- package/dist/adapter/deconz/driver/writer.d.ts.map +0 -1
- package/dist/adapter/deconz/driver/writer.js +0 -45
- package/dist/adapter/deconz/driver/writer.js.map +0 -1
- package/dist/adapter/ember/adapter/emberAdapter.d.ts +0 -806
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +0 -1
- package/dist/adapter/ember/adapter/emberAdapter.js +0 -2942
- package/dist/adapter/ember/adapter/emberAdapter.js.map +0 -1
- package/dist/adapter/ember/adapter/endpoints.d.ts +0 -27
- package/dist/adapter/ember/adapter/endpoints.d.ts.map +0 -1
- package/dist/adapter/ember/adapter/endpoints.js +0 -68
- package/dist/adapter/ember/adapter/endpoints.js.map +0 -1
- package/dist/adapter/ember/adapter/index.d.ts +0 -3
- package/dist/adapter/ember/adapter/index.d.ts.map +0 -1
- package/dist/adapter/ember/adapter/index.js +0 -6
- package/dist/adapter/ember/adapter/index.js.map +0 -1
- package/dist/adapter/ember/adapter/oneWaitress.d.ts +0 -108
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +0 -1
- package/dist/adapter/ember/adapter/oneWaitress.js +0 -241
- package/dist/adapter/ember/adapter/oneWaitress.js.map +0 -1
- package/dist/adapter/ember/adapter/requestQueue.d.ts +0 -57
- package/dist/adapter/ember/adapter/requestQueue.d.ts.map +0 -1
- package/dist/adapter/ember/adapter/requestQueue.js +0 -139
- package/dist/adapter/ember/adapter/requestQueue.js.map +0 -1
- package/dist/adapter/ember/adapter/tokensManager.d.ts +0 -69
- package/dist/adapter/ember/adapter/tokensManager.d.ts.map +0 -1
- package/dist/adapter/ember/adapter/tokensManager.js +0 -688
- package/dist/adapter/ember/adapter/tokensManager.js.map +0 -1
- package/dist/adapter/ember/consts.d.ts +0 -191
- package/dist/adapter/ember/consts.d.ts.map +0 -1
- package/dist/adapter/ember/consts.js +0 -246
- package/dist/adapter/ember/consts.js.map +0 -1
- package/dist/adapter/ember/enums.d.ts +0 -2172
- package/dist/adapter/ember/enums.d.ts.map +0 -1
- package/dist/adapter/ember/enums.js +0 -2375
- package/dist/adapter/ember/enums.js.map +0 -1
- package/dist/adapter/ember/ezsp/buffalo.d.ts +0 -156
- package/dist/adapter/ember/ezsp/buffalo.d.ts.map +0 -1
- package/dist/adapter/ember/ezsp/buffalo.js +0 -1033
- package/dist/adapter/ember/ezsp/buffalo.js.map +0 -1
- package/dist/adapter/ember/ezsp/consts.d.ts +0 -116
- package/dist/adapter/ember/ezsp/consts.d.ts.map +0 -1
- package/dist/adapter/ember/ezsp/consts.js +0 -128
- package/dist/adapter/ember/ezsp/consts.js.map +0 -1
- package/dist/adapter/ember/ezsp/enums.d.ts +0 -879
- package/dist/adapter/ember/ezsp/enums.d.ts.map +0 -1
- package/dist/adapter/ember/ezsp/enums.js +0 -948
- package/dist/adapter/ember/ezsp/enums.js.map +0 -1
- package/dist/adapter/ember/ezsp/ezsp.d.ts +0 -2662
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +0 -1
- package/dist/adapter/ember/ezsp/ezsp.js +0 -6454
- package/dist/adapter/ember/ezsp/ezsp.js.map +0 -1
- package/dist/adapter/ember/types.d.ts +0 -733
- package/dist/adapter/ember/types.d.ts.map +0 -1
- package/dist/adapter/ember/types.js +0 -3
- package/dist/adapter/ember/types.js.map +0 -1
- package/dist/adapter/ember/uart/ash.d.ts +0 -464
- package/dist/adapter/ember/uart/ash.d.ts.map +0 -1
- package/dist/adapter/ember/uart/ash.js +0 -1633
- package/dist/adapter/ember/uart/ash.js.map +0 -1
- package/dist/adapter/ember/uart/consts.d.ts +0 -91
- package/dist/adapter/ember/uart/consts.d.ts.map +0 -1
- package/dist/adapter/ember/uart/consts.js +0 -100
- package/dist/adapter/ember/uart/consts.js.map +0 -1
- package/dist/adapter/ember/uart/enums.d.ts +0 -191
- package/dist/adapter/ember/uart/enums.d.ts.map +0 -1
- package/dist/adapter/ember/uart/enums.js +0 -197
- package/dist/adapter/ember/uart/enums.js.map +0 -1
- package/dist/adapter/ember/uart/parser.d.ts +0 -10
- package/dist/adapter/ember/uart/parser.d.ts.map +0 -1
- package/dist/adapter/ember/uart/parser.js +0 -37
- package/dist/adapter/ember/uart/parser.js.map +0 -1
- package/dist/adapter/ember/uart/queues.d.ts +0 -85
- package/dist/adapter/ember/uart/queues.d.ts.map +0 -1
- package/dist/adapter/ember/uart/queues.js +0 -214
- package/dist/adapter/ember/uart/queues.js.map +0 -1
- package/dist/adapter/ember/uart/writer.d.ts +0 -15
- package/dist/adapter/ember/uart/writer.d.ts.map +0 -1
- package/dist/adapter/ember/uart/writer.js +0 -46
- package/dist/adapter/ember/uart/writer.js.map +0 -1
- package/dist/adapter/ember/utils/initters.d.ts +0 -20
- package/dist/adapter/ember/utils/initters.d.ts.map +0 -1
- package/dist/adapter/ember/utils/initters.js +0 -58
- package/dist/adapter/ember/utils/initters.js.map +0 -1
- package/dist/adapter/ember/utils/math.d.ts +0 -51
- package/dist/adapter/ember/utils/math.d.ts.map +0 -1
- package/dist/adapter/ember/utils/math.js +0 -102
- package/dist/adapter/ember/utils/math.js.map +0 -1
- package/dist/adapter/ember/zdo.d.ts +0 -925
- package/dist/adapter/ember/zdo.d.ts.map +0 -1
- package/dist/adapter/ember/zdo.js +0 -723
- package/dist/adapter/ember/zdo.js.map +0 -1
- package/dist/adapter/events.d.ts +0 -42
- package/dist/adapter/events.d.ts.map +0 -1
- package/dist/adapter/events.js +0 -13
- package/dist/adapter/events.js.map +0 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts +0 -13
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +0 -1
- package/dist/adapter/ezsp/adapter/backup.js +0 -101
- package/dist/adapter/ezsp/adapter/backup.js.map +0 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +0 -65
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +0 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +0 -634
- package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +0 -1
- package/dist/adapter/ezsp/adapter/index.d.ts +0 -3
- package/dist/adapter/ezsp/adapter/index.d.ts.map +0 -1
- package/dist/adapter/ezsp/adapter/index.js +0 -11
- package/dist/adapter/ezsp/adapter/index.js.map +0 -1
- package/dist/adapter/ezsp/driver/commands.d.ts +0 -37
- package/dist/adapter/ezsp/driver/commands.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/commands.js +0 -2387
- package/dist/adapter/ezsp/driver/commands.js.map +0 -1
- package/dist/adapter/ezsp/driver/consts.d.ts +0 -11
- package/dist/adapter/ezsp/driver/consts.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/consts.js +0 -14
- package/dist/adapter/ezsp/driver/consts.js.map +0 -1
- package/dist/adapter/ezsp/driver/driver.d.ts +0 -109
- package/dist/adapter/ezsp/driver/driver.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/driver.js +0 -796
- package/dist/adapter/ezsp/driver/driver.js.map +0 -1
- package/dist/adapter/ezsp/driver/ezsp.d.ts +0 -106
- package/dist/adapter/ezsp/driver/ezsp.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/ezsp.js +0 -664
- package/dist/adapter/ezsp/driver/ezsp.js.map +0 -1
- package/dist/adapter/ezsp/driver/frame.d.ts +0 -40
- package/dist/adapter/ezsp/driver/frame.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/frame.js +0 -101
- package/dist/adapter/ezsp/driver/frame.js.map +0 -1
- package/dist/adapter/ezsp/driver/index.d.ts +0 -4
- package/dist/adapter/ezsp/driver/index.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/index.js +0 -9
- package/dist/adapter/ezsp/driver/index.js.map +0 -1
- package/dist/adapter/ezsp/driver/multicast.d.ts +0 -13
- package/dist/adapter/ezsp/driver/multicast.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/multicast.js +0 -74
- package/dist/adapter/ezsp/driver/multicast.js.map +0 -1
- package/dist/adapter/ezsp/driver/parser.d.ts +0 -12
- package/dist/adapter/ezsp/driver/parser.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/parser.js +0 -105
- package/dist/adapter/ezsp/driver/parser.js.map +0 -1
- package/dist/adapter/ezsp/driver/types/basic.d.ts +0 -63
- package/dist/adapter/ezsp/driver/types/basic.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/types/basic.js +0 -209
- package/dist/adapter/ezsp/driver/types/basic.js.map +0 -1
- package/dist/adapter/ezsp/driver/types/index.d.ts +0 -10
- package/dist/adapter/ezsp/driver/types/index.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/types/index.js +0 -139
- package/dist/adapter/ezsp/driver/types/index.js.map +0 -1
- package/dist/adapter/ezsp/driver/types/named.d.ts +0 -1288
- package/dist/adapter/ezsp/driver/types/named.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/types/named.js +0 -2330
- package/dist/adapter/ezsp/driver/types/named.js.map +0 -1
- package/dist/adapter/ezsp/driver/types/struct.d.ts +0 -271
- package/dist/adapter/ezsp/driver/types/struct.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/types/struct.js +0 -804
- package/dist/adapter/ezsp/driver/types/struct.js.map +0 -1
- package/dist/adapter/ezsp/driver/uart.d.ts +0 -49
- package/dist/adapter/ezsp/driver/uart.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/uart.js +0 -383
- package/dist/adapter/ezsp/driver/uart.js.map +0 -1
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +0 -3
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +0 -56
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +0 -1
- package/dist/adapter/ezsp/driver/utils/index.d.ts +0 -20
- package/dist/adapter/ezsp/driver/utils/index.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/utils/index.js +0 -73
- package/dist/adapter/ezsp/driver/utils/index.js.map +0 -1
- package/dist/adapter/ezsp/driver/writer.d.ts +0 -14
- package/dist/adapter/ezsp/driver/writer.d.ts.map +0 -1
- package/dist/adapter/ezsp/driver/writer.js +0 -83
- package/dist/adapter/ezsp/driver/writer.js.map +0 -1
- package/dist/adapter/index.d.ts +0 -5
- package/dist/adapter/index.d.ts.map +0 -1
- package/dist/adapter/index.js +0 -36
- package/dist/adapter/index.js.map +0 -1
- package/dist/adapter/serialPort.d.ts +0 -14
- package/dist/adapter/serialPort.d.ts.map +0 -1
- package/dist/adapter/serialPort.js +0 -47
- package/dist/adapter/serialPort.js.map +0 -1
- package/dist/adapter/serialPortUtils.d.ts +0 -13
- package/dist/adapter/serialPortUtils.d.ts.map +0 -1
- package/dist/adapter/serialPortUtils.js +0 -19
- package/dist/adapter/serialPortUtils.js.map +0 -1
- package/dist/adapter/socketPortUtils.d.ts +0 -11
- package/dist/adapter/socketPortUtils.d.ts.map +0 -1
- package/dist/adapter/socketPortUtils.js +0 -17
- package/dist/adapter/socketPortUtils.js.map +0 -1
- package/dist/adapter/tstype.d.ts +0 -86
- package/dist/adapter/tstype.d.ts.map +0 -1
- package/dist/adapter/tstype.js +0 -3
- package/dist/adapter/tstype.js.map +0 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +0 -62
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +0 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.js +0 -459
- package/dist/adapter/z-stack/adapter/adapter-backup.js.map +0 -1
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +0 -151
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +0 -1
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +0 -259
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +0 -1
- package/dist/adapter/z-stack/adapter/endpoints.d.ts +0 -12
- package/dist/adapter/z-stack/adapter/endpoints.d.ts.map +0 -1
- package/dist/adapter/z-stack/adapter/endpoints.js +0 -74
- package/dist/adapter/z-stack/adapter/endpoints.js.map +0 -1
- package/dist/adapter/z-stack/adapter/index.d.ts +0 -3
- package/dist/adapter/z-stack/adapter/index.d.ts.map +0 -1
- package/dist/adapter/z-stack/adapter/index.js +0 -9
- package/dist/adapter/z-stack/adapter/index.js.map +0 -1
- package/dist/adapter/z-stack/adapter/manager.d.ts +0 -84
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +0 -1
- package/dist/adapter/z-stack/adapter/manager.js +0 -474
- package/dist/adapter/z-stack/adapter/manager.js.map +0 -1
- package/dist/adapter/z-stack/adapter/tstype.d.ts +0 -7
- package/dist/adapter/z-stack/adapter/tstype.d.ts.map +0 -1
- package/dist/adapter/z-stack/adapter/tstype.js +0 -10
- package/dist/adapter/z-stack/adapter/tstype.js.map +0 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +0 -86
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +0 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +0 -912
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +0 -1
- package/dist/adapter/z-stack/constants/af.d.ts +0 -24
- package/dist/adapter/z-stack/constants/af.d.ts.map +0 -1
- package/dist/adapter/z-stack/constants/af.js +0 -28
- package/dist/adapter/z-stack/constants/af.js.map +0 -1
- package/dist/adapter/z-stack/constants/common.d.ts +0 -279
- package/dist/adapter/z-stack/constants/common.d.ts.map +0 -1
- package/dist/adapter/z-stack/constants/common.js +0 -293
- package/dist/adapter/z-stack/constants/common.js.map +0 -1
- package/dist/adapter/z-stack/constants/dbg.d.ts +0 -23
- package/dist/adapter/z-stack/constants/dbg.d.ts.map +0 -1
- package/dist/adapter/z-stack/constants/dbg.js +0 -25
- package/dist/adapter/z-stack/constants/dbg.js.map +0 -1
- package/dist/adapter/z-stack/constants/index.d.ts +0 -11
- package/dist/adapter/z-stack/constants/index.d.ts.map +0 -1
- package/dist/adapter/z-stack/constants/index.js +0 -48
- package/dist/adapter/z-stack/constants/index.js.map +0 -1
- package/dist/adapter/z-stack/constants/mac.d.ts +0 -128
- package/dist/adapter/z-stack/constants/mac.d.ts.map +0 -1
- package/dist/adapter/z-stack/constants/mac.js +0 -130
- package/dist/adapter/z-stack/constants/mac.js.map +0 -1
- package/dist/adapter/z-stack/constants/sapi.d.ts +0 -25
- package/dist/adapter/z-stack/constants/sapi.d.ts.map +0 -1
- package/dist/adapter/z-stack/constants/sapi.js +0 -27
- package/dist/adapter/z-stack/constants/sapi.js.map +0 -1
- package/dist/adapter/z-stack/constants/sys.d.ts +0 -72
- package/dist/adapter/z-stack/constants/sys.d.ts.map +0 -1
- package/dist/adapter/z-stack/constants/sys.js +0 -74
- package/dist/adapter/z-stack/constants/sys.js.map +0 -1
- package/dist/adapter/z-stack/constants/util.d.ts +0 -82
- package/dist/adapter/z-stack/constants/util.d.ts.map +0 -1
- package/dist/adapter/z-stack/constants/util.js +0 -84
- package/dist/adapter/z-stack/constants/util.js.map +0 -1
- package/dist/adapter/z-stack/constants/utils.d.ts +0 -5
- package/dist/adapter/z-stack/constants/utils.d.ts.map +0 -1
- package/dist/adapter/z-stack/constants/utils.js +0 -15
- package/dist/adapter/z-stack/constants/utils.js.map +0 -1
- package/dist/adapter/z-stack/constants/zdo.d.ts +0 -103
- package/dist/adapter/z-stack/constants/zdo.d.ts.map +0 -1
- package/dist/adapter/z-stack/constants/zdo.js +0 -105
- package/dist/adapter/z-stack/constants/zdo.js.map +0 -1
- package/dist/adapter/z-stack/models/index.d.ts +0 -2
- package/dist/adapter/z-stack/models/index.d.ts.map +0 -1
- package/dist/adapter/z-stack/models/index.js +0 -18
- package/dist/adapter/z-stack/models/index.js.map +0 -1
- package/dist/adapter/z-stack/models/startup-options.d.ts +0 -13
- package/dist/adapter/z-stack/models/startup-options.d.ts.map +0 -1
- package/dist/adapter/z-stack/models/startup-options.js +0 -3
- package/dist/adapter/z-stack/models/startup-options.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +0 -24
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +0 -46
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +0 -11
- package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-table.js +0 -23
- package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +0 -11
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +0 -22
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +0 -11
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +0 -24
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +0 -11
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +0 -25
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +0 -11
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +0 -24
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +0 -9
- package/dist/adapter/z-stack/structs/entries/channel-list.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/channel-list.js +0 -16
- package/dist/adapter/z-stack/structs/entries/channel-list.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +0 -9
- package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/has-configured.js +0 -17
- package/dist/adapter/z-stack/structs/entries/has-configured.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/index.d.ts +0 -17
- package/dist/adapter/z-stack/structs/entries/index.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/index.js +0 -33
- package/dist/adapter/z-stack/structs/entries/index.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nib.d.ts +0 -11
- package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nib.js +0 -69
- package/dist/adapter/z-stack/structs/entries/nib.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +0 -11
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +0 -19
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +0 -9
- package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key.js +0 -16
- package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +0 -9
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +0 -16
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +0 -14
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +0 -24
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +0 -11
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +0 -23
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +0 -21
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +0 -37
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +0 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +0 -11
- package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-table.js +0 -25
- package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +0 -1
- package/dist/adapter/z-stack/structs/index.d.ts +0 -5
- package/dist/adapter/z-stack/structs/index.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/index.js +0 -21
- package/dist/adapter/z-stack/structs/index.js.map +0 -1
- package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +0 -14
- package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/serializable-memory-object.js +0 -3
- package/dist/adapter/z-stack/structs/serializable-memory-object.js.map +0 -1
- package/dist/adapter/z-stack/structs/struct.d.ts +0 -100
- package/dist/adapter/z-stack/structs/struct.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/struct.js +0 -297
- package/dist/adapter/z-stack/structs/struct.js.map +0 -1
- package/dist/adapter/z-stack/structs/table.d.ts +0 -95
- package/dist/adapter/z-stack/structs/table.d.ts.map +0 -1
- package/dist/adapter/z-stack/structs/table.js +0 -164
- package/dist/adapter/z-stack/structs/table.js.map +0 -1
- package/dist/adapter/z-stack/unpi/constants.d.ts +0 -29
- package/dist/adapter/z-stack/unpi/constants.d.ts.map +0 -1
- package/dist/adapter/z-stack/unpi/constants.js +0 -40
- package/dist/adapter/z-stack/unpi/constants.js.map +0 -1
- package/dist/adapter/z-stack/unpi/frame.d.ts +0 -17
- package/dist/adapter/z-stack/unpi/frame.d.ts.map +0 -1
- package/dist/adapter/z-stack/unpi/frame.js +0 -55
- package/dist/adapter/z-stack/unpi/frame.js.map +0 -1
- package/dist/adapter/z-stack/unpi/index.d.ts +0 -6
- package/dist/adapter/z-stack/unpi/index.d.ts.map +0 -1
- package/dist/adapter/z-stack/unpi/index.js +0 -38
- package/dist/adapter/z-stack/unpi/index.js.map +0 -1
- package/dist/adapter/z-stack/unpi/parser.d.ts +0 -13
- package/dist/adapter/z-stack/unpi/parser.d.ts.map +0 -1
- package/dist/adapter/z-stack/unpi/parser.js +0 -86
- package/dist/adapter/z-stack/unpi/parser.js.map +0 -1
- package/dist/adapter/z-stack/unpi/writer.d.ts +0 -12
- package/dist/adapter/z-stack/unpi/writer.d.ts.map +0 -1
- package/dist/adapter/z-stack/unpi/writer.js +0 -55
- package/dist/adapter/z-stack/unpi/writer.js.map +0 -1
- package/dist/adapter/z-stack/utils/channel-list.d.ts +0 -21
- package/dist/adapter/z-stack/utils/channel-list.d.ts.map +0 -1
- package/dist/adapter/z-stack/utils/channel-list.js +0 -41
- package/dist/adapter/z-stack/utils/channel-list.js.map +0 -1
- package/dist/adapter/z-stack/utils/index.d.ts +0 -3
- package/dist/adapter/z-stack/utils/index.d.ts.map +0 -1
- package/dist/adapter/z-stack/utils/index.js +0 -19
- package/dist/adapter/z-stack/utils/index.js.map +0 -1
- package/dist/adapter/z-stack/utils/network-options.d.ts +0 -9
- package/dist/adapter/z-stack/utils/network-options.d.ts.map +0 -1
- package/dist/adapter/z-stack/utils/network-options.js +0 -23
- package/dist/adapter/z-stack/utils/network-options.js.map +0 -1
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +0 -14
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +0 -1
- package/dist/adapter/z-stack/znp/buffaloZnp.js +0 -243
- package/dist/adapter/z-stack/znp/buffaloZnp.js.map +0 -1
- package/dist/adapter/z-stack/znp/definition.d.ts +0 -6
- package/dist/adapter/z-stack/znp/definition.d.ts.map +0 -1
- package/dist/adapter/z-stack/znp/definition.js +0 -3052
- package/dist/adapter/z-stack/znp/definition.js.map +0 -1
- package/dist/adapter/z-stack/znp/index.d.ts +0 -4
- package/dist/adapter/z-stack/znp/index.d.ts.map +0 -1
- package/dist/adapter/z-stack/znp/index.js +0 -11
- package/dist/adapter/z-stack/znp/index.js.map +0 -1
- package/dist/adapter/z-stack/znp/parameterType.d.ts +0 -23
- package/dist/adapter/z-stack/znp/parameterType.d.ts.map +0 -1
- package/dist/adapter/z-stack/znp/parameterType.js +0 -26
- package/dist/adapter/z-stack/znp/parameterType.js.map +0 -1
- package/dist/adapter/z-stack/znp/tstype.d.ts +0 -23
- package/dist/adapter/z-stack/znp/tstype.d.ts.map +0 -1
- package/dist/adapter/z-stack/znp/tstype.js +0 -3
- package/dist/adapter/z-stack/znp/tstype.js.map +0 -1
- package/dist/adapter/z-stack/znp/znp.d.ts +0 -47
- package/dist/adapter/z-stack/znp/znp.d.ts.map +0 -1
- package/dist/adapter/z-stack/znp/znp.js +0 -322
- package/dist/adapter/z-stack/znp/znp.js.map +0 -1
- package/dist/adapter/z-stack/znp/zpiObject.d.ts +0 -20
- package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +0 -1
- package/dist/adapter/z-stack/znp/zpiObject.js +0 -103
- package/dist/adapter/z-stack/znp/zpiObject.js.map +0 -1
- package/dist/adapter/zigate/adapter/index.d.ts +0 -3
- package/dist/adapter/zigate/adapter/index.d.ts.map +0 -1
- package/dist/adapter/zigate/adapter/index.js +0 -11
- package/dist/adapter/zigate/adapter/index.js.map +0 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +0 -72
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +0 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +0 -681
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +0 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +0 -18
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +0 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.js +0 -190
- package/dist/adapter/zigate/driver/buffaloZiGate.js.map +0 -1
- package/dist/adapter/zigate/driver/commandType.d.ts +0 -43
- package/dist/adapter/zigate/driver/commandType.d.ts.map +0 -1
- package/dist/adapter/zigate/driver/commandType.js +0 -390
- package/dist/adapter/zigate/driver/commandType.js.map +0 -1
- package/dist/adapter/zigate/driver/constants.d.ts +0 -277
- package/dist/adapter/zigate/driver/constants.d.ts.map +0 -1
- package/dist/adapter/zigate/driver/constants.js +0 -372
- package/dist/adapter/zigate/driver/constants.js.map +0 -1
- package/dist/adapter/zigate/driver/frame.d.ts +0 -27
- package/dist/adapter/zigate/driver/frame.d.ts.map +0 -1
- package/dist/adapter/zigate/driver/frame.js +0 -173
- package/dist/adapter/zigate/driver/frame.js.map +0 -1
- package/dist/adapter/zigate/driver/messageType.d.ts +0 -13
- package/dist/adapter/zigate/driver/messageType.d.ts.map +0 -1
- package/dist/adapter/zigate/driver/messageType.js +0 -284
- package/dist/adapter/zigate/driver/messageType.js.map +0 -1
- package/dist/adapter/zigate/driver/parameterType.d.ts +0 -28
- package/dist/adapter/zigate/driver/parameterType.d.ts.map +0 -1
- package/dist/adapter/zigate/driver/parameterType.js +0 -33
- package/dist/adapter/zigate/driver/parameterType.js.map +0 -1
- package/dist/adapter/zigate/driver/ziGateObject.d.ts +0 -24
- package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +0 -1
- package/dist/adapter/zigate/driver/ziGateObject.js +0 -111
- package/dist/adapter/zigate/driver/ziGateObject.js.map +0 -1
- package/dist/adapter/zigate/driver/zigate.d.ts +0 -50
- package/dist/adapter/zigate/driver/zigate.d.ts.map +0 -1
- package/dist/adapter/zigate/driver/zigate.js +0 -289
- package/dist/adapter/zigate/driver/zigate.js.map +0 -1
- package/dist/buffalo/buffalo.d.ts +0 -55
- package/dist/buffalo/buffalo.d.ts.map +0 -1
- package/dist/buffalo/buffalo.js +0 -230
- package/dist/buffalo/buffalo.js.map +0 -1
- package/dist/buffalo/index.d.ts +0 -3
- package/dist/buffalo/index.d.ts.map +0 -1
- package/dist/buffalo/index.js +0 -9
- package/dist/buffalo/index.js.map +0 -1
- package/dist/controller/controller.d.ts +0 -119
- package/dist/controller/controller.d.ts.map +0 -1
- package/dist/controller/controller.js +0 -700
- package/dist/controller/controller.js.map +0 -1
- package/dist/controller/database.d.ts +0 -20
- package/dist/controller/database.d.ts.map +0 -1
- package/dist/controller/database.js +0 -94
- package/dist/controller/database.js.map +0 -1
- package/dist/controller/events.d.ts +0 -59
- package/dist/controller/events.d.ts.map +0 -1
- package/dist/controller/events.js +0 -113
- package/dist/controller/events.js.map +0 -1
- package/dist/controller/greenPower.d.ts +0 -14
- package/dist/controller/greenPower.d.ts.map +0 -1
- package/dist/controller/greenPower.js +0 -216
- package/dist/controller/greenPower.js.map +0 -1
- package/dist/controller/helpers/index.d.ts +0 -3
- package/dist/controller/helpers/index.d.ts.map +0 -1
- package/dist/controller/helpers/index.js +0 -29
- package/dist/controller/helpers/index.js.map +0 -1
- package/dist/controller/helpers/request.d.ts +0 -22
- package/dist/controller/helpers/request.d.ts.map +0 -1
- package/dist/controller/helpers/request.js +0 -78
- package/dist/controller/helpers/request.js.map +0 -1
- package/dist/controller/helpers/requestQueue.d.ts +0 -13
- package/dist/controller/helpers/requestQueue.d.ts.map +0 -1
- package/dist/controller/helpers/requestQueue.js +0 -106
- package/dist/controller/helpers/requestQueue.js.map +0 -1
- package/dist/controller/helpers/zclFrameConverter.d.ts +0 -9
- package/dist/controller/helpers/zclFrameConverter.d.ts.map +0 -1
- package/dist/controller/helpers/zclFrameConverter.js +0 -70
- package/dist/controller/helpers/zclFrameConverter.js.map +0 -1
- package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +0 -6
- package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts.map +0 -1
- package/dist/controller/helpers/zclTransactionSequenceNumber.js +0 -14
- package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +0 -1
- package/dist/controller/index.d.ts +0 -6
- package/dist/controller/index.d.ts.map +0 -1
- package/dist/controller/index.js +0 -9
- package/dist/controller/index.js.map +0 -1
- package/dist/controller/model/device.d.ts +0 -140
- package/dist/controller/model/device.d.ts.map +0 -1
- package/dist/controller/model/device.js +0 -746
- package/dist/controller/model/device.js.map +0 -1
- package/dist/controller/model/endpoint.d.ts +0 -134
- package/dist/controller/model/endpoint.d.ts.map +0 -1
- package/dist/controller/model/endpoint.js +0 -667
- package/dist/controller/model/endpoint.js.map +0 -1
- package/dist/controller/model/entity.d.ts +0 -15
- package/dist/controller/model/entity.d.ts.map +0 -1
- package/dist/controller/model/entity.js +0 -27
- package/dist/controller/model/entity.js.map +0 -1
- package/dist/controller/model/group.d.ts +0 -39
- package/dist/controller/model/group.d.ts.map +0 -1
- package/dist/controller/model/group.js +0 -226
- package/dist/controller/model/group.js.map +0 -1
- package/dist/controller/model/index.d.ts +0 -6
- package/dist/controller/model/index.d.ts.map +0 -1
- package/dist/controller/model/index.js +0 -15
- package/dist/controller/model/index.js.map +0 -1
- package/dist/controller/model/konnextConfig.d.ts +0 -7
- package/dist/controller/model/konnextConfig.d.ts.map +0 -1
- package/dist/controller/model/konnextConfig.js +0 -3
- package/dist/controller/model/konnextConfig.js.map +0 -1
- package/dist/controller/touchlink.d.ts +0 -20
- package/dist/controller/touchlink.d.ts.map +0 -1
- package/dist/controller/touchlink.js +0 -157
- package/dist/controller/touchlink.js.map +0 -1
- package/dist/controller/tstype.d.ts +0 -21
- package/dist/controller/tstype.d.ts.map +0 -1
- package/dist/controller/tstype.js +0 -9
- package/dist/controller/tstype.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -37
- package/dist/index.js.map +0 -1
- package/dist/models/backup-storage-legacy.d.ts +0 -27
- package/dist/models/backup-storage-legacy.d.ts.map +0 -1
- package/dist/models/backup-storage-legacy.js +0 -3
- package/dist/models/backup-storage-legacy.js.map +0 -1
- package/dist/models/backup-storage-unified.d.ts +0 -50
- package/dist/models/backup-storage-unified.d.ts.map +0 -1
- package/dist/models/backup-storage-unified.js +0 -3
- package/dist/models/backup-storage-unified.js.map +0 -1
- package/dist/models/backup.d.ts +0 -38
- package/dist/models/backup.d.ts.map +0 -1
- package/dist/models/backup.js +0 -3
- package/dist/models/backup.js.map +0 -1
- package/dist/models/index.d.ts +0 -5
- package/dist/models/index.d.ts.map +0 -1
- package/dist/models/index.js +0 -21
- package/dist/models/index.js.map +0 -1
- package/dist/models/network-options.d.ts +0 -13
- package/dist/models/network-options.d.ts.map +0 -1
- package/dist/models/network-options.js +0 -3
- package/dist/models/network-options.js.map +0 -1
- package/dist/utils/aes.d.ts +0 -40
- package/dist/utils/aes.d.ts.map +0 -1
- package/dist/utils/aes.js +0 -198
- package/dist/utils/aes.js.map +0 -1
- package/dist/utils/assertString.d.ts +0 -3
- package/dist/utils/assertString.d.ts.map +0 -1
- package/dist/utils/assertString.js +0 -9
- package/dist/utils/assertString.js.map +0 -1
- package/dist/utils/backup.d.ts +0 -21
- package/dist/utils/backup.d.ts.map +0 -1
- package/dist/utils/backup.js +0 -190
- package/dist/utils/backup.js.map +0 -1
- package/dist/utils/equalsPartial.d.ts +0 -3
- package/dist/utils/equalsPartial.d.ts.map +0 -1
- package/dist/utils/equalsPartial.js +0 -12
- package/dist/utils/equalsPartial.js.map +0 -1
- package/dist/utils/index.d.ts +0 -10
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -46
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/isNumberArray.d.ts +0 -3
- package/dist/utils/isNumberArray.d.ts.map +0 -1
- package/dist/utils/isNumberArray.js +0 -7
- package/dist/utils/isNumberArray.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -9
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -14
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/queue.d.ts +0 -12
- package/dist/utils/queue.d.ts.map +0 -1
- package/dist/utils/queue.js +0 -62
- package/dist/utils/queue.js.map +0 -1
- package/dist/utils/realpathSync.d.ts +0 -3
- package/dist/utils/realpathSync.d.ts.map +0 -1
- package/dist/utils/realpathSync.js +0 -13
- package/dist/utils/realpathSync.js.map +0 -1
- package/dist/utils/wait.d.ts +0 -3
- package/dist/utils/wait.d.ts.map +0 -1
- package/dist/utils/wait.js +0 -9
- package/dist/utils/wait.js.map +0 -1
- package/dist/utils/waitress.d.ts +0 -22
- package/dist/utils/waitress.d.ts.map +0 -1
- package/dist/utils/waitress.js +0 -69
- package/dist/utils/waitress.js.map +0 -1
- package/dist/zspec/consts.d.ts +0 -60
- package/dist/zspec/consts.d.ts.map +0 -1
- package/dist/zspec/consts.js +0 -64
- package/dist/zspec/consts.js.map +0 -1
- package/dist/zspec/enums.d.ts +0 -19
- package/dist/zspec/enums.d.ts.map +0 -1
- package/dist/zspec/enums.js +0 -28
- package/dist/zspec/enums.js.map +0 -1
- package/dist/zspec/index.d.ts +0 -4
- package/dist/zspec/index.d.ts.map +0 -1
- package/dist/zspec/index.js +0 -43
- package/dist/zspec/index.js.map +0 -1
- package/dist/zspec/tstypes.d.ts +0 -19
- package/dist/zspec/tstypes.d.ts.map +0 -1
- package/dist/zspec/tstypes.js +0 -3
- package/dist/zspec/tstypes.js.map +0 -1
- package/dist/zspec/utils.d.ts +0 -14
- package/dist/zspec/utils.d.ts.map +0 -1
- package/dist/zspec/utils.js +0 -29
- package/dist/zspec/utils.js.map +0 -1
- package/dist/zspec/zcl/buffaloZcl.d.ts +0 -55
- package/dist/zspec/zcl/buffaloZcl.d.ts.map +0 -1
- package/dist/zspec/zcl/buffaloZcl.js +0 -929
- package/dist/zspec/zcl/buffaloZcl.js.map +0 -1
- package/dist/zspec/zcl/definition/cluster.d.ts +0 -3
- package/dist/zspec/zcl/definition/cluster.d.ts.map +0 -1
- package/dist/zspec/zcl/definition/cluster.js +0 -5500
- package/dist/zspec/zcl/definition/cluster.js.map +0 -1
- package/dist/zspec/zcl/definition/consts.d.ts +0 -9
- package/dist/zspec/zcl/definition/consts.d.ts.map +0 -1
- package/dist/zspec/zcl/definition/consts.js +0 -27
- package/dist/zspec/zcl/definition/consts.js.map +0 -1
- package/dist/zspec/zcl/definition/enums.d.ts +0 -177
- package/dist/zspec/zcl/definition/enums.d.ts.map +0 -1
- package/dist/zspec/zcl/definition/enums.js +0 -187
- package/dist/zspec/zcl/definition/enums.js.map +0 -1
- package/dist/zspec/zcl/definition/foundation.d.ts +0 -11
- package/dist/zspec/zcl/definition/foundation.d.ts.map +0 -1
- package/dist/zspec/zcl/definition/foundation.js +0 -241
- package/dist/zspec/zcl/definition/foundation.js.map +0 -1
- package/dist/zspec/zcl/definition/manufacturerCode.d.ts +0 -727
- package/dist/zspec/zcl/definition/manufacturerCode.d.ts.map +0 -1
- package/dist/zspec/zcl/definition/manufacturerCode.js +0 -733
- package/dist/zspec/zcl/definition/manufacturerCode.js.map +0 -1
- package/dist/zspec/zcl/definition/status.d.ts +0 -69
- package/dist/zspec/zcl/definition/status.d.ts.map +0 -1
- package/dist/zspec/zcl/definition/status.js +0 -74
- package/dist/zspec/zcl/definition/status.js.map +0 -1
- package/dist/zspec/zcl/definition/tstype.d.ts +0 -114
- package/dist/zspec/zcl/definition/tstype.d.ts.map +0 -1
- package/dist/zspec/zcl/definition/tstype.js +0 -4
- package/dist/zspec/zcl/definition/tstype.js.map +0 -1
- package/dist/zspec/zcl/index.d.ts +0 -11
- package/dist/zspec/zcl/index.d.ts.map +0 -1
- package/dist/zspec/zcl/index.js +0 -47
- package/dist/zspec/zcl/index.js.map +0 -1
- package/dist/zspec/zcl/utils.d.ts +0 -7
- package/dist/zspec/zcl/utils.d.ts.map +0 -1
- package/dist/zspec/zcl/utils.js +0 -234
- package/dist/zspec/zcl/utils.js.map +0 -1
- package/dist/zspec/zcl/zclFrame.d.ts +0 -36
- package/dist/zspec/zcl/zclFrame.d.ts.map +0 -1
- package/dist/zspec/zcl/zclFrame.js +0 -304
- package/dist/zspec/zcl/zclFrame.js.map +0 -1
- package/dist/zspec/zcl/zclHeader.d.ts +0 -17
- package/dist/zspec/zcl/zclHeader.d.ts.map +0 -1
- package/dist/zspec/zcl/zclHeader.js +0 -88
- package/dist/zspec/zcl/zclHeader.js.map +0 -1
- package/dist/zspec/zcl/zclStatusError.d.ts +0 -6
- package/dist/zspec/zcl/zclStatusError.d.ts.map +0 -1
- package/dist/zspec/zcl/zclStatusError.js +0 -13
- package/dist/zspec/zcl/zclStatusError.js.map +0 -1
- package/dist/zspec/zdo/buffaloZdo.d.ts +0 -438
- package/dist/zspec/zdo/buffaloZdo.d.ts.map +0 -1
- package/dist/zspec/zdo/buffaloZdo.js +0 -1892
- package/dist/zspec/zdo/buffaloZdo.js.map +0 -1
- package/dist/zspec/zdo/definition/clusters.d.ts +0 -624
- package/dist/zspec/zdo/definition/clusters.d.ts.map +0 -1
- package/dist/zspec/zdo/definition/clusters.js +0 -687
- package/dist/zspec/zdo/definition/clusters.js.map +0 -1
- package/dist/zspec/zdo/definition/consts.d.ts +0 -13
- package/dist/zspec/zdo/definition/consts.d.ts.map +0 -1
- package/dist/zspec/zdo/definition/consts.js +0 -16
- package/dist/zspec/zdo/definition/consts.js.map +0 -1
- package/dist/zspec/zdo/definition/enums.d.ts +0 -75
- package/dist/zspec/zdo/definition/enums.d.ts.map +0 -1
- package/dist/zspec/zdo/definition/enums.js +0 -97
- package/dist/zspec/zdo/definition/enums.js.map +0 -1
- package/dist/zspec/zdo/definition/status.d.ts +0 -99
- package/dist/zspec/zdo/definition/status.d.ts.map +0 -1
- package/dist/zspec/zdo/definition/status.js +0 -109
- package/dist/zspec/zdo/definition/status.js.map +0 -1
- package/dist/zspec/zdo/definition/tstypes.d.ts +0 -787
- package/dist/zspec/zdo/definition/tstypes.d.ts.map +0 -1
- package/dist/zspec/zdo/definition/tstypes.js +0 -3
- package/dist/zspec/zdo/definition/tstypes.js.map +0 -1
- package/dist/zspec/zdo/index.d.ts +0 -7
- package/dist/zspec/zdo/index.d.ts.map +0 -1
- package/dist/zspec/zdo/index.js +0 -39
- package/dist/zspec/zdo/index.js.map +0 -1
- package/dist/zspec/zdo/utils.d.ts +0 -25
- package/dist/zspec/zdo/utils.d.ts.map +0 -1
- package/dist/zspec/zdo/utils.js +0 -75
- package/dist/zspec/zdo/utils.js.map +0 -1
- package/dist/zspec/zdo/zdoStatusError.d.ts +0 -6
- package/dist/zspec/zdo/zdoStatusError.d.ts.map +0 -1
- package/dist/zspec/zdo/zdoStatusError.js +0 -13
- package/dist/zspec/zdo/zdoStatusError.js.map +0 -1
- package/typedoc-tsconfig.json +0 -44
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import {tzScan} from "@date-fns/tz";
|
|
2
|
+
import type {TClusterAttributes} from "../zspec/zcl/definition/clusters-types";
|
|
3
|
+
|
|
4
|
+
const OneJanuary2000 = new Date("January 01, 2000 00:00:00 UTC+00:00").getTime();
|
|
5
|
+
const OneDayInMilliseconds = 24 * 60 * 60 * 1000;
|
|
6
|
+
|
|
7
|
+
const cachedTimeData: Pick<TClusterAttributes<"genTime">, "timeZone" | "dstStart" | "dstEnd" | "dstShift" | "validUntilTime"> = {
|
|
8
|
+
timeZone: 0,
|
|
9
|
+
dstStart: 0,
|
|
10
|
+
dstEnd: 0,
|
|
11
|
+
dstShift: 0,
|
|
12
|
+
validUntilTime: 0,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export function timestampToZigbeeUtcTime(timestamp: number) {
|
|
16
|
+
return timestamp === 0xffffffff ? timestamp : Math.round((timestamp - OneJanuary2000) / 1000);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function recalculateTimeData(currentDate: Date) {
|
|
20
|
+
const currentTime = currentDate.getTime();
|
|
21
|
+
const currentYear = currentDate.getUTCFullYear();
|
|
22
|
+
|
|
23
|
+
// Default values considering the time zone has no DST.
|
|
24
|
+
let timeZoneDifferenceToUtc = currentDate.getTimezoneOffset() !== 0 ? currentDate.getTimezoneOffset() * -1 * 60 : 0;
|
|
25
|
+
let dstStart = 0xffffffff;
|
|
26
|
+
let dstEnd = 0xffffffff;
|
|
27
|
+
let dstShift = 0;
|
|
28
|
+
const validUntilTime = currentTime + OneDayInMilliseconds;
|
|
29
|
+
|
|
30
|
+
const localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
31
|
+
const dstChangesThisYear = tzScan(localTimeZone, {
|
|
32
|
+
start: new Date(currentYear, 1),
|
|
33
|
+
end: new Date(currentYear, 12),
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// Countries may leave/introduce DST, which isn't supported here.
|
|
37
|
+
// Therefore, we always have to check that the returned number
|
|
38
|
+
// of changes is exactly 2.
|
|
39
|
+
const hasRegularDst = dstChangesThisYear.length === 2;
|
|
40
|
+
|
|
41
|
+
if (hasRegularDst) {
|
|
42
|
+
const isNorthernHemisphere = dstChangesThisYear[0].change > 0;
|
|
43
|
+
|
|
44
|
+
if (isNorthernHemisphere) {
|
|
45
|
+
// getTimezoneOffset() called before includes the DST
|
|
46
|
+
// offset, so, we can't use it when dstShift !== 0.
|
|
47
|
+
timeZoneDifferenceToUtc = dstChangesThisYear[1].offset * 60;
|
|
48
|
+
dstStart = dstChangesThisYear[0].date.getTime();
|
|
49
|
+
// tzScan returns the first second on which a new shift has to be applied.
|
|
50
|
+
// This is fine for dstStart, but dstEnd has to be the last second of the
|
|
51
|
+
// DST period. Otherwise, the following equation copied from the ZCL spec
|
|
52
|
+
// isn't met anymore:
|
|
53
|
+
//
|
|
54
|
+
// Local Time = Standard Time + DstShift (if DstStart <= Time <= DstEnd)
|
|
55
|
+
//
|
|
56
|
+
// Therefore, we have to remove one second on all dstEnd times below.
|
|
57
|
+
dstEnd = dstChangesThisYear[1].date.getTime() - 1000;
|
|
58
|
+
dstShift = dstChangesThisYear[0].change * 60;
|
|
59
|
+
} else {
|
|
60
|
+
const dstStartIsInPreviousYear = currentTime < dstChangesThisYear[0].date.getTime();
|
|
61
|
+
|
|
62
|
+
if (dstStartIsInPreviousYear) {
|
|
63
|
+
const dstChangesLastYear = tzScan(localTimeZone, {
|
|
64
|
+
start: new Date(currentYear - 1, 1),
|
|
65
|
+
end: new Date(currentYear - 1, 12),
|
|
66
|
+
});
|
|
67
|
+
const hadRegularDstLastYear = dstChangesLastYear.length === 2;
|
|
68
|
+
|
|
69
|
+
if (hadRegularDstLastYear) {
|
|
70
|
+
timeZoneDifferenceToUtc = dstChangesThisYear[0].offset * 60;
|
|
71
|
+
dstStart = dstChangesLastYear[1].date.getTime();
|
|
72
|
+
dstEnd = dstChangesThisYear[0].date.getTime() - 1000;
|
|
73
|
+
dstShift = dstChangesLastYear[1].change * 60;
|
|
74
|
+
}
|
|
75
|
+
} else {
|
|
76
|
+
const dstChangesNextYear = tzScan(localTimeZone, {
|
|
77
|
+
start: new Date(currentYear + 1, 1),
|
|
78
|
+
end: new Date(currentYear + 1, 12),
|
|
79
|
+
});
|
|
80
|
+
const hasRegularDstNextYear = dstChangesNextYear.length === 2;
|
|
81
|
+
|
|
82
|
+
if (hasRegularDstNextYear) {
|
|
83
|
+
timeZoneDifferenceToUtc = dstChangesThisYear[0].offset * 60;
|
|
84
|
+
dstStart = dstChangesThisYear[1].date.getTime();
|
|
85
|
+
dstEnd = dstChangesNextYear[0].date.getTime() - 1000;
|
|
86
|
+
dstShift = dstChangesThisYear[1].change * 60;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
cachedTimeData.timeZone = timeZoneDifferenceToUtc;
|
|
93
|
+
cachedTimeData.dstStart = timestampToZigbeeUtcTime(dstStart);
|
|
94
|
+
cachedTimeData.dstEnd = timestampToZigbeeUtcTime(dstEnd);
|
|
95
|
+
cachedTimeData.dstShift = dstShift;
|
|
96
|
+
cachedTimeData.validUntilTime = timestampToZigbeeUtcTime(validUntilTime);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export function getTimeClusterAttributes(): TClusterAttributes<"genTime"> {
|
|
100
|
+
const currentDate = new Date();
|
|
101
|
+
const currentZigbeeUtcTime = timestampToZigbeeUtcTime(currentDate.getTime());
|
|
102
|
+
|
|
103
|
+
if (currentZigbeeUtcTime >= cachedTimeData.validUntilTime) {
|
|
104
|
+
recalculateTimeData(currentDate);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const standardTime = currentZigbeeUtcTime + cachedTimeData.timeZone;
|
|
108
|
+
let localTime = standardTime;
|
|
109
|
+
|
|
110
|
+
if (currentZigbeeUtcTime >= cachedTimeData.dstStart && currentZigbeeUtcTime <= cachedTimeData.dstEnd) {
|
|
111
|
+
localTime = standardTime + cachedTimeData.dstShift;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
time: currentZigbeeUtcTime,
|
|
116
|
+
// Bit 0: Master clock
|
|
117
|
+
// Bit 1: Not synchronized (as Master bit is 1)
|
|
118
|
+
// Bit 2: Master for Time Zone and DST
|
|
119
|
+
// Bit 3: Time synchronization SHOULD be superseded
|
|
120
|
+
timeStatus: 0b1101,
|
|
121
|
+
timeZone: cachedTimeData.timeZone,
|
|
122
|
+
dstStart: cachedTimeData.dstStart,
|
|
123
|
+
dstEnd: cachedTimeData.dstEnd,
|
|
124
|
+
dstShift: cachedTimeData.dstShift,
|
|
125
|
+
standardTime: standardTime,
|
|
126
|
+
localTime: localTime,
|
|
127
|
+
lastSetTime: currentZigbeeUtcTime,
|
|
128
|
+
validUntilTime: cachedTimeData.validUntilTime,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** used by tests */
|
|
133
|
+
export function clearCachedTimeData() {
|
|
134
|
+
cachedTimeData.timeZone = 0;
|
|
135
|
+
cachedTimeData.dstStart = 0;
|
|
136
|
+
cachedTimeData.dstEnd = 0;
|
|
137
|
+
cachedTimeData.dstShift = 0;
|
|
138
|
+
cachedTimeData.validUntilTime = 0;
|
|
139
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function isNumberArray(value: unknown): value is number[] {
|
|
2
|
+
return Array.isArray(value) && value.every((item) => typeof item === "number");
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export function isNumberArrayOfLength(value: unknown, length: number): boolean {
|
|
6
|
+
return isNumberArray(value) && value.length === length;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function assertString(input: unknown): asserts input is string {
|
|
10
|
+
if (typeof input !== "string") {
|
|
11
|
+
throw new Error("Input must be a string!");
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function isObjectEmpty(object: object): boolean {
|
|
16
|
+
// much faster than checking `Object.keys(object).length`
|
|
17
|
+
for (const _k in object) return false;
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
interface Waiter<TPayload, TMatcher> {
|
|
2
|
+
ID: number;
|
|
3
|
+
resolve: (payload: TPayload) => void;
|
|
4
|
+
reject: (error: Error) => void;
|
|
5
|
+
timer?: NodeJS.Timeout;
|
|
6
|
+
resolved: boolean;
|
|
7
|
+
timedout: boolean;
|
|
8
|
+
matcher: TMatcher;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
type Validator<TPayload, TMatcher> = (payload: TPayload, matcher: TMatcher) => boolean;
|
|
12
|
+
type TimeoutFormatter<TMatcher> = (matcher: TMatcher, timeout: number) => string;
|
|
13
|
+
|
|
14
|
+
export class Waitress<TPayload, TMatcher> {
|
|
15
|
+
private waiters: Map<number, Waiter<TPayload, TMatcher>>;
|
|
16
|
+
private readonly validator: Validator<TPayload, TMatcher>;
|
|
17
|
+
private readonly timeoutFormatter: TimeoutFormatter<TMatcher>;
|
|
18
|
+
private currentID: number;
|
|
19
|
+
|
|
20
|
+
public constructor(validator: Validator<TPayload, TMatcher>, timeoutFormatter: TimeoutFormatter<TMatcher>) {
|
|
21
|
+
this.waiters = new Map();
|
|
22
|
+
this.timeoutFormatter = timeoutFormatter;
|
|
23
|
+
this.validator = validator;
|
|
24
|
+
this.currentID = 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public clear(): void {
|
|
28
|
+
for (const [, waiter] of this.waiters) {
|
|
29
|
+
clearTimeout(waiter.timer);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
this.waiters.clear();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public resolve(payload: TPayload): boolean {
|
|
36
|
+
return this.forEachMatching(payload, (waiter) => waiter.resolve(payload));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public reject(payload: TPayload, message: string): boolean {
|
|
40
|
+
return this.forEachMatching(payload, (waiter) => waiter.reject(new Error(message)));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public remove(id: number): void {
|
|
44
|
+
const waiter = this.waiters.get(id);
|
|
45
|
+
if (waiter) {
|
|
46
|
+
if (!waiter.timedout && waiter.timer) {
|
|
47
|
+
clearTimeout(waiter.timer);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
this.waiters.delete(id);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public waitFor(matcher: TMatcher, timeout: number): {ID: number; start: () => {promise: Promise<TPayload>; ID: number}} {
|
|
55
|
+
this.currentID += 1;
|
|
56
|
+
const ID = this.currentID;
|
|
57
|
+
|
|
58
|
+
const promise: Promise<TPayload> = new Promise((resolve, reject): void => {
|
|
59
|
+
const object: Waiter<TPayload, TMatcher> = {matcher, resolve, reject, timedout: false, resolved: false, ID};
|
|
60
|
+
this.waiters.set(ID, object);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
const start = (): {promise: Promise<TPayload>; ID: number} => {
|
|
64
|
+
const waiter = this.waiters.get(ID);
|
|
65
|
+
if (waiter && !waiter.resolved && !waiter.timer) {
|
|
66
|
+
// Capture the stack trace from the caller of start()
|
|
67
|
+
const error = new Error(this.timeoutFormatter(matcher, timeout));
|
|
68
|
+
Error.captureStackTrace(error);
|
|
69
|
+
waiter.timer = setTimeout((): void => {
|
|
70
|
+
waiter.timedout = true;
|
|
71
|
+
waiter.reject(error);
|
|
72
|
+
}, timeout);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return {promise, ID};
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
return {ID, start};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
private forEachMatching(payload: TPayload, action: (waiter: Waiter<TPayload, TMatcher>) => void): boolean {
|
|
82
|
+
let foundMatching = false;
|
|
83
|
+
for (const [index, waiter] of this.waiters.entries()) {
|
|
84
|
+
if (waiter.timedout) {
|
|
85
|
+
this.waiters.delete(index);
|
|
86
|
+
} else if (this.validator(payload, waiter.matcher)) {
|
|
87
|
+
clearTimeout(waiter.timer);
|
|
88
|
+
waiter.resolved = true;
|
|
89
|
+
this.waiters.delete(index);
|
|
90
|
+
action(waiter);
|
|
91
|
+
foundMatching = true;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return foundMatching;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type {ExtendedPanId} from "./tstypes";
|
|
2
|
+
|
|
3
|
+
/** Current supported Zigbee revision: https://csa-iot.org/wp-content/uploads/2023/04/05-3474-23-csg-zigbee-specification-compressed.pdf */
|
|
4
|
+
export const ZIGBEE_REVISION = 23;
|
|
5
|
+
|
|
6
|
+
/** The network ID of the coordinator in a Zigbee network is 0x0000. */
|
|
7
|
+
export const COORDINATOR_ADDRESS = 0x0000;
|
|
8
|
+
|
|
9
|
+
/** Min network address reserved for broadcasting (up to 0xffff) */
|
|
10
|
+
export const BROADCAST_MIN = 0xfff8;
|
|
11
|
+
|
|
12
|
+
/** Endpoint profile ID for Zigbee 3.0. "Home Automation" */
|
|
13
|
+
export const HA_PROFILE_ID = 0x0104;
|
|
14
|
+
/** Endpoint profile ID for Smart Energy */
|
|
15
|
+
export const SE_PROFILE_ID = 0x0109;
|
|
16
|
+
/** Endpoint profile ID for Green Power */
|
|
17
|
+
export const GP_PROFILE_ID = 0xa1e0;
|
|
18
|
+
/** The touchlink (Zigbee Light Link/ZLL) Profile ID. */
|
|
19
|
+
export const TOUCHLINK_PROFILE_ID = 0xc05e;
|
|
20
|
+
/** The profile ID used to address all the public profiles. */
|
|
21
|
+
export const WILDCARD_PROFILE_ID = 0xffff;
|
|
22
|
+
/** The profile ID used to access Shelly devices custom clusters. */
|
|
23
|
+
export const CUSTOM_SHELLY_PROFILE_ID = 0xc001;
|
|
24
|
+
|
|
25
|
+
/** The default HA endpoint. */
|
|
26
|
+
export const HA_ENDPOINT = 0x01;
|
|
27
|
+
/** The GP endpoint, as defined in the Zigbee spec. */
|
|
28
|
+
export const GP_ENDPOINT = 0xf2;
|
|
29
|
+
|
|
30
|
+
export const GP_GROUP_ID = 0x0b84;
|
|
31
|
+
|
|
32
|
+
/** The maximum 802.15.4 channel number is 26. */
|
|
33
|
+
export const MAX_802_15_4_CHANNEL_NUMBER = 26;
|
|
34
|
+
/** The minimum 2.4GHz 802.15.4 channel number is 11. */
|
|
35
|
+
export const MIN_802_15_4_CHANNEL_NUMBER = 11;
|
|
36
|
+
/** There are sixteen 802.15.4 channels. */
|
|
37
|
+
export const NUM_802_15_4_CHANNELS = MAX_802_15_4_CHANNEL_NUMBER - MIN_802_15_4_CHANNEL_NUMBER + 1;
|
|
38
|
+
/** A bitmask to scan all 2.4 GHz 802.15.4 channels. */
|
|
39
|
+
export const ALL_802_15_4_CHANNELS_MASK = 0x07fff800;
|
|
40
|
+
/** A bitmask of the preferred 2.4 GHz 802.15.4 channels to scan. */
|
|
41
|
+
export const PREFERRED_802_15_4_CHANNELS_MASK = 0x0318c800;
|
|
42
|
+
/** List of all Zigbee channels */
|
|
43
|
+
export const ALL_802_15_4_CHANNELS = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26];
|
|
44
|
+
/** List of preferred Zigbee channels */
|
|
45
|
+
export const PREFERRED_802_15_4_CHANNELS = [11, 14, 15, 19, 20, 24, 25];
|
|
46
|
+
|
|
47
|
+
/** A blank (also used as "wildcard") EUI64 hex string prefixed with 0x */
|
|
48
|
+
export const BLANK_EUI64 = "0xffffffffffffffff";
|
|
49
|
+
/** A blank extended PAN ID. (null/not present) */
|
|
50
|
+
export const BLANK_EXTENDED_PAN_ID: Readonly<ExtendedPanId> = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
|
|
51
|
+
|
|
52
|
+
/** An invalid profile ID. This is a reserved profileId. */
|
|
53
|
+
export const INVALID_PROFILE_ID = 0xffff;
|
|
54
|
+
/** An invalid cluster ID. */
|
|
55
|
+
export const INVALID_CLUSTER_ID = 0xffff;
|
|
56
|
+
/** An invalid PAN ID. */
|
|
57
|
+
export const INVALID_PAN_ID = 0xffff;
|
|
58
|
+
|
|
59
|
+
/** A distinguished network ID that will never be assigned to any node. It is used to indicate the absence of a node ID. */
|
|
60
|
+
export const NULL_NODE_ID = 0xffff;
|
|
61
|
+
/** A distinguished binding index used to indicate the absence of a binding. */
|
|
62
|
+
export const NULL_BINDING = 0xff;
|
|
63
|
+
|
|
64
|
+
/** This key is "ZigBeeAlliance09" */
|
|
65
|
+
export const INTEROPERABILITY_LINK_KEY: readonly number[] = [
|
|
66
|
+
0x5a, 0x69, 0x67, 0x42, 0x65, 0x65, 0x41, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x30, 0x39,
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
export const PERMIT_JOIN_FOREVER = 0xff;
|
|
70
|
+
export const PERMIT_JOIN_MAX_TIMEOUT = 0xfe;
|
|
71
|
+
|
|
72
|
+
/** Size of EUI64 (an IEEE address) in bytes. */
|
|
73
|
+
export const EUI64_SIZE = 8;
|
|
74
|
+
/** Size of an PAN identifier in bytes. */
|
|
75
|
+
export const PAN_ID_SIZE = 2;
|
|
76
|
+
/** Size of an extended PAN identifier in bytes. */
|
|
77
|
+
export const EXTENDED_PAN_ID_SIZE = 8;
|
|
78
|
+
/** Size of an encryption key in bytes. */
|
|
79
|
+
export const DEFAULT_ENCRYPTION_KEY_SIZE = 16;
|
|
80
|
+
/** Size of a AES-128-MMO (Matyas-Meyer-Oseas) block in bytes. */
|
|
81
|
+
export const AES_MMO_128_BLOCK_SIZE = 16;
|
|
82
|
+
/**
|
|
83
|
+
* Valid install code sizes, including `INSTALL_CODE_CRC_SIZE`.
|
|
84
|
+
*
|
|
85
|
+
* NOTE: 18 is now standard, first for iterations, order after is important (8 before 10)!
|
|
86
|
+
*/
|
|
87
|
+
export const INSTALL_CODE_SIZES: ReadonlyArray<number> = [18, 8, 10, 14];
|
|
88
|
+
/** Size of the CRC appended to install codes. */
|
|
89
|
+
export const INSTALL_CODE_CRC_SIZE = 2;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zigbee Broadcast Addresses
|
|
3
|
+
*
|
|
4
|
+
* Zigbee specifies three different broadcast addresses that reach different collections of nodes.
|
|
5
|
+
* Broadcasts are normally sent only to routers.
|
|
6
|
+
* Broadcasts can also be forwarded to end devices, either all of them or only those that do not sleep.
|
|
7
|
+
* Broadcasting to end devices is both significantly more resource-intensive and significantly less reliable than broadcasting to routers.
|
|
8
|
+
*/
|
|
9
|
+
export enum BroadcastAddress {
|
|
10
|
+
// Reserved = 0xfff8,
|
|
11
|
+
// Reserved = 0xfff9,
|
|
12
|
+
// Reserved = 0xfffa,
|
|
13
|
+
/** Low power routers only */
|
|
14
|
+
LOW_POWER_ROUTERS = 0xfffb,
|
|
15
|
+
/** All routers and coordinator */
|
|
16
|
+
DEFAULT = 0xfffc,
|
|
17
|
+
/** macRxOnWhenIdle = TRUE (all non-sleepy devices) */
|
|
18
|
+
RX_ON_WHEN_IDLE = 0xfffd,
|
|
19
|
+
// Reserved = 0xFFFE,
|
|
20
|
+
/** All devices in PAN (including sleepy end devices) */
|
|
21
|
+
SLEEPY = 0xffff,
|
|
22
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EUI 64-bit ID (IEEE 802.15.4 long address). uint8[EUI64_SIZE]
|
|
3
|
+
*
|
|
4
|
+
* NOTE: Expected to contain `0x` prefix
|
|
5
|
+
*/
|
|
6
|
+
export type Eui64 = `0x${string}`;
|
|
7
|
+
/** IEEE 802.15.4 node ID. Also known as short address. uint16 */
|
|
8
|
+
export type NodeId = number;
|
|
9
|
+
/** IEEE 802.15.4 PAN ID. uint16 */
|
|
10
|
+
export type PanId = number;
|
|
11
|
+
/** PAN 64-bit ID (IEEE 802.15.4 long address). uint8[EXTENDED_PAN_ID_SIZE] */
|
|
12
|
+
export type ExtendedPanId = number[];
|
|
13
|
+
/** 16-bit Zigbee multicast group identifier. uint16 */
|
|
14
|
+
export type MulticastId = number;
|
|
15
|
+
/** Refer to the Zigbee application profile ID. uint16 */
|
|
16
|
+
export type ProfileId = number;
|
|
17
|
+
/** Refer to the ZCL cluster ID. uint16 */
|
|
18
|
+
export type ClusterId = number;
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import {createCipheriv} from "node:crypto";
|
|
2
|
+
import {AES_MMO_128_BLOCK_SIZE, ALL_802_15_4_CHANNELS} from "./consts";
|
|
3
|
+
import {BroadcastAddress} from "./enums";
|
|
4
|
+
import type {Eui64} from "./tstypes";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Convert a channels array to a uint32 channel mask.
|
|
8
|
+
* @param channels
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export const channelsToUInt32Mask = (channels: number[]): number => {
|
|
12
|
+
return channels.reduce((a, c) => a + (1 << c), 0);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Convert a uint32 channel mask to a channels array.
|
|
17
|
+
* @param mask
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
20
|
+
export const uint32MaskToChannels = (mask: number): number[] => {
|
|
21
|
+
const channels: number[] = [];
|
|
22
|
+
|
|
23
|
+
for (const channel of ALL_802_15_4_CHANNELS) {
|
|
24
|
+
if ((2 ** channel) & mask) {
|
|
25
|
+
channels.push(channel);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return channels;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const isBroadcastAddress = (address: number): boolean => {
|
|
33
|
+
return (
|
|
34
|
+
address === BroadcastAddress.DEFAULT ||
|
|
35
|
+
address === BroadcastAddress.RX_ON_WHEN_IDLE ||
|
|
36
|
+
address === BroadcastAddress.SLEEPY ||
|
|
37
|
+
address === BroadcastAddress.LOW_POWER_ROUTERS
|
|
38
|
+
);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Represent a little endian buffer in `0x...` form
|
|
43
|
+
*
|
|
44
|
+
* NOTE: the buffer is always copied to avoid reversal in reference
|
|
45
|
+
*/
|
|
46
|
+
export const eui64LEBufferToHex = (eui64LEBuf: Buffer): Eui64 => `0x${Buffer.from(eui64LEBuf).reverse().toString("hex")}`;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Represent a big endian buffer in `0x...` form
|
|
50
|
+
*/
|
|
51
|
+
export const eui64BEBufferToHex = (eui64BEBuf: Buffer): Eui64 => `0x${eui64BEBuf.toString("hex")}`;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Calculate the CRC 8, 16 or 32 for the given data.
|
|
55
|
+
*
|
|
56
|
+
* @see https://www.crccalc.com/
|
|
57
|
+
*
|
|
58
|
+
* @param data
|
|
59
|
+
* @param length CRC Length
|
|
60
|
+
* @param poly Polynomial
|
|
61
|
+
* @param crc Initialization value
|
|
62
|
+
* @param xorOut Final XOR value
|
|
63
|
+
* @param refIn Reflected In
|
|
64
|
+
* @param refOut Reflected Out
|
|
65
|
+
* @returns The calculated CRC
|
|
66
|
+
*
|
|
67
|
+
* NOTE: This is not exported for test coverage reasons (large number of combinations possible, many unused).
|
|
68
|
+
* Specific, needed, algorithms should be defined as exported wrappers below, and coverage added for them.
|
|
69
|
+
*/
|
|
70
|
+
function calcCRC(
|
|
71
|
+
data: number[] | Uint8Array | Buffer,
|
|
72
|
+
length: 8 | 16 | 32,
|
|
73
|
+
poly: number,
|
|
74
|
+
crc = 0,
|
|
75
|
+
xorOut = 0,
|
|
76
|
+
refIn = false,
|
|
77
|
+
refOut = false,
|
|
78
|
+
): number {
|
|
79
|
+
// https://web.archive.org/web/20150226083354/http://leetcode.com/2011/08/reverse-bits.html
|
|
80
|
+
const reflect = (x: number, size: 8 | 16 | 32): number => {
|
|
81
|
+
if (size === 8) {
|
|
82
|
+
x = ((x & 0x55) << 1) | ((x & 0xaa) >> 1);
|
|
83
|
+
x = ((x & 0x33) << 2) | ((x & 0xcc) >> 2);
|
|
84
|
+
x = ((x & 0x0f) << 4) | ((x & 0xf0) >> 4);
|
|
85
|
+
} else if (size === 16) {
|
|
86
|
+
x = ((x & 0x5555) << 1) | ((x & 0xaaaa) >> 1);
|
|
87
|
+
x = ((x & 0x3333) << 2) | ((x & 0xcccc) >> 2);
|
|
88
|
+
x = ((x & 0x0f0f) << 4) | ((x & 0xf0f0) >> 4);
|
|
89
|
+
x = ((x & 0x00ff) << 8) | ((x & 0xff00) >> 8);
|
|
90
|
+
/* v8 ignore start */
|
|
91
|
+
} /* if (size === 32) */ else {
|
|
92
|
+
x = ((x & 0x55555555) << 1) | ((x & 0xaaaaaaaa) >> 1);
|
|
93
|
+
x = ((x & 0x33333333) << 2) | ((x & 0xcccccccc) >> 2);
|
|
94
|
+
x = ((x & 0x0f0f0f0f) << 4) | ((x & 0xf0f0f0f0) >> 4);
|
|
95
|
+
x = ((x & 0x00ff00ff) << 8) | ((x & 0xff00ff00) >> 8);
|
|
96
|
+
x = ((x & 0x0000ffff) << 16) | ((x & 0xffff0000) >> 16);
|
|
97
|
+
}
|
|
98
|
+
/* v8 ignore stop */
|
|
99
|
+
|
|
100
|
+
return x;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
poly = (1 << length) | poly;
|
|
104
|
+
|
|
105
|
+
for (let byte of data) {
|
|
106
|
+
if (refIn) {
|
|
107
|
+
byte = reflect(byte, 8);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
crc ^= byte << (length - 8);
|
|
111
|
+
|
|
112
|
+
for (let i = 0; i < 8; i++) {
|
|
113
|
+
crc <<= 1;
|
|
114
|
+
|
|
115
|
+
if (crc & (1 << length)) {
|
|
116
|
+
crc ^= poly;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (refOut) {
|
|
122
|
+
crc = reflect(crc, length);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return crc ^ xorOut;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* CRC-16/X-25
|
|
130
|
+
* aka CRC-16/IBM-SDLC
|
|
131
|
+
* aka CRC-16/ISO-HDLC
|
|
132
|
+
* aka CRC-16/ISO-IEC-14443-3-B
|
|
133
|
+
* aka CRC-B
|
|
134
|
+
* aka X-25
|
|
135
|
+
*
|
|
136
|
+
* Shortcut for `calcCRC(data, 16, 0x1021, 0xFFFF, 0xFFFF, true, true)`
|
|
137
|
+
*
|
|
138
|
+
* Used for Install Codes - see Document 13-0402-13 - 10.1
|
|
139
|
+
*/
|
|
140
|
+
export function crc16X25(data: number[] | Uint8Array | Buffer): number {
|
|
141
|
+
return calcCRC(data, 16, 0x1021, 0xffff, 0xffff, true, true);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* CRC-16/XMODEM
|
|
146
|
+
* aka CRC-16/ACORN
|
|
147
|
+
* aka CRC-16/LTE
|
|
148
|
+
* aka CRC-16/V-41-MSB
|
|
149
|
+
* aka XMODEM
|
|
150
|
+
* aka ZMODEM
|
|
151
|
+
*
|
|
152
|
+
* Shortcut for `calcCRC(data, 16, 0x1021)`
|
|
153
|
+
*
|
|
154
|
+
* Used for XMODEM transfers, often involved in Zigbee environments
|
|
155
|
+
*/
|
|
156
|
+
export function crc16XMODEM(data: number[] | Uint8Array | Buffer): number {
|
|
157
|
+
return calcCRC(data, 16, 0x1021);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* CRC-16/CCITT
|
|
162
|
+
* aka CRC-16/KERMIT
|
|
163
|
+
* aka CRC-16/BLUETOOTH
|
|
164
|
+
* aka CRC-16/CCITT-TRUE
|
|
165
|
+
* aka CRC-16/V-41-LSB
|
|
166
|
+
* aka CRC-CCITT
|
|
167
|
+
* aka KERMIT
|
|
168
|
+
*
|
|
169
|
+
* Shortcut for `calcCRC(data, 16, 0x1021, 0x0000, 0x0000, true, true)`
|
|
170
|
+
*/
|
|
171
|
+
export function crc16CCITT(data: number[] | Uint8Array | Buffer): number {
|
|
172
|
+
return calcCRC(data, 16, 0x1021, 0x0000, 0x0000, true, true);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* CRC-16/CCITT-FALSE
|
|
177
|
+
* aka CRC-16/IBM-3740
|
|
178
|
+
* aka CRC-16/AUTOSAR
|
|
179
|
+
*
|
|
180
|
+
* Shortcut for `calcCRC(data, 16, 0x1021, 0xffff)`
|
|
181
|
+
*/
|
|
182
|
+
export function crc16CCITTFALSE(data: number[] | Uint8Array | Buffer): number {
|
|
183
|
+
return calcCRC(data, 16, 0x1021, 0xffff);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function aes128MmoHashUpdate(result: Buffer, data: Buffer, dataSize: number): void {
|
|
187
|
+
while (dataSize >= AES_MMO_128_BLOCK_SIZE) {
|
|
188
|
+
const cipher = createCipheriv("aes-128-ecb", result, null);
|
|
189
|
+
const block = data.subarray(0, AES_MMO_128_BLOCK_SIZE);
|
|
190
|
+
const encryptedBlock = Buffer.concat([cipher.update(block), cipher.final()]);
|
|
191
|
+
|
|
192
|
+
// XOR encrypted and plaintext
|
|
193
|
+
for (let i = 0; i < AES_MMO_128_BLOCK_SIZE; i++) {
|
|
194
|
+
result[i] = encryptedBlock[i] ^ block[i];
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
data = data.subarray(AES_MMO_128_BLOCK_SIZE);
|
|
198
|
+
dataSize -= AES_MMO_128_BLOCK_SIZE;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* AES-128-MMO (Matyas-Meyer-Oseas) hashing (using node 'crypto' built-in with 'aes-128-ecb')
|
|
204
|
+
*
|
|
205
|
+
* Used for Install Codes - see Document 13-0402-13 - 10.1
|
|
206
|
+
*/
|
|
207
|
+
export function aes128MmoHash(data: Buffer): Buffer {
|
|
208
|
+
const hashResult = Buffer.alloc(AES_MMO_128_BLOCK_SIZE);
|
|
209
|
+
const temp = Buffer.alloc(AES_MMO_128_BLOCK_SIZE);
|
|
210
|
+
let remainingLength = data.length;
|
|
211
|
+
let position = 0;
|
|
212
|
+
|
|
213
|
+
for (position; remainingLength >= AES_MMO_128_BLOCK_SIZE; ) {
|
|
214
|
+
const chunk = data.subarray(position, position + AES_MMO_128_BLOCK_SIZE);
|
|
215
|
+
|
|
216
|
+
aes128MmoHashUpdate(hashResult, chunk, chunk.length);
|
|
217
|
+
|
|
218
|
+
position += AES_MMO_128_BLOCK_SIZE;
|
|
219
|
+
remainingLength -= AES_MMO_128_BLOCK_SIZE;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
for (let i = 0; i < remainingLength; i++) {
|
|
223
|
+
temp[i] = data[position + i];
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// per the spec, concatenate a 1 bit followed by all zero bits
|
|
227
|
+
temp[remainingLength] = 0x80;
|
|
228
|
+
|
|
229
|
+
// if appending the bit string will push us beyond the 16-byte boundary, hash that block and append another 16-byte block
|
|
230
|
+
if (AES_MMO_128_BLOCK_SIZE - remainingLength < 3) {
|
|
231
|
+
aes128MmoHashUpdate(hashResult, temp, AES_MMO_128_BLOCK_SIZE);
|
|
232
|
+
temp.fill(0);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
temp[AES_MMO_128_BLOCK_SIZE - 2] = (data.length >> 5) & 0xff;
|
|
236
|
+
temp[AES_MMO_128_BLOCK_SIZE - 1] = (data.length << 3) & 0xff;
|
|
237
|
+
|
|
238
|
+
aes128MmoHashUpdate(hashResult, temp, AES_MMO_128_BLOCK_SIZE);
|
|
239
|
+
|
|
240
|
+
const result = Buffer.alloc(AES_MMO_128_BLOCK_SIZE);
|
|
241
|
+
|
|
242
|
+
for (let i = 0; i < AES_MMO_128_BLOCK_SIZE; i++) {
|
|
243
|
+
result[i] = hashResult[i];
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
return result;
|
|
247
|
+
}
|