@willieee802/zigbee-herdsman 0.48.3 → 0.49.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1283 -0
- package/README.md +1 -1
- package/biome.json +103 -0
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapterDiscovery.d.ts.map +1 -0
- package/dist/adapter/const.d.ts.map +1 -0
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
- package/dist/adapter/ember/utils/initters.d.ts.map +1 -1
- package/dist/adapter/events.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
- package/dist/adapter/index.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/endpoints.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
- package/dist/adapter/z-stack/models/startup-options.d.ts.map +1 -1
- package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -0
- package/dist/adapter/zboss/driver.d.ts.map +1 -0
- package/dist/adapter/zboss/frame.d.ts.map +1 -0
- package/dist/adapter/zboss/frame.js +200 -0
- package/dist/adapter/zboss/frame.js.map +1 -0
- package/dist/adapter/zboss/uart.d.ts.map +1 -0
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.js +70 -62
- package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
- package/dist/adapter/zoh/adapter/zohAdapter.d.ts.map +1 -0
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/controller/controller.js +524 -350
- package/dist/controller/controller.js.map +1 -1
- package/dist/controller/database.d.ts.map +1 -1
- package/dist/controller/events.d.ts.map +1 -1
- package/dist/controller/events.js +0 -110
- package/dist/controller/events.js.map +1 -1
- package/dist/controller/greenPower.d.ts.map +1 -1
- package/dist/controller/greenPower.js +330 -121
- package/dist/controller/greenPower.js.map +1 -1
- package/dist/controller/helpers/index.d.ts.map +1 -1
- package/dist/controller/helpers/ota.d.ts.map +1 -0
- package/dist/controller/helpers/ota.js +467 -0
- package/dist/controller/helpers/ota.js.map +1 -0
- package/dist/controller/helpers/request.d.ts.map +1 -1
- package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.js +36 -22
- package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
- package/dist/controller/index.d.ts.map +1 -1
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +1052 -402
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +447 -292
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/controller/model/entity.d.ts.map +1 -1
- package/dist/controller/model/group.d.ts.map +1 -1
- package/dist/controller/model/group.js +202 -85
- package/dist/controller/model/group.js.map +1 -1
- package/dist/controller/model/index.d.ts.map +1 -1
- package/dist/controller/model/zigbeeEntity.d.ts.map +1 -0
- package/dist/controller/touchlink.d.ts.map +1 -1
- package/dist/controller/tstype.d.ts.map +1 -1
- package/dist/controller/tstype.js +0 -6
- package/dist/controller/tstype.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/utils/timeService.d.ts.map +1 -0
- package/dist/utils/timeService.js +127 -0
- package/dist/utils/timeService.js.map +1 -0
- package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
- package/dist/zspec/zcl/buffaloZcl.js +327 -287
- package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
- package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/cluster.js +6050 -4043
- package/dist/zspec/zcl/definition/cluster.js.map +1 -1
- package/dist/zspec/zcl/definition/clusters-types.d.ts +8135 -0
- package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/clusters-types.js +3 -0
- package/dist/zspec/zcl/definition/clusters-types.js.map +1 -0
- package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/foundation.js +170 -99
- package/dist/zspec/zcl/definition/foundation.js.map +1 -1
- package/dist/zspec/zcl/definition/tstype.d.ts +190 -31
- package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/tstype.js +0 -1
- package/dist/zspec/zcl/definition/tstype.js.map +1 -1
- package/dist/zspec/zcl/index.d.ts.map +1 -1
- package/dist/zspec/zcl/index.js +23 -13
- package/dist/zspec/zcl/index.js.map +1 -1
- package/dist/zspec/zcl/utils.d.ts.map +1 -1
- package/dist/zspec/zcl/utils.js +288 -103
- package/dist/zspec/zcl/utils.js.map +1 -1
- package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
- package/dist/zspec/zcl/zclFrame.js +121 -97
- package/dist/zspec/zcl/zclFrame.js.map +1 -1
- package/dist/zspec/zcl/zclHeader.d.ts.map +1 -1
- package/dist/zspec/zcl/zclHeader.js +13 -13
- package/dist/zspec/zcl/zclHeader.js.map +1 -1
- package/examples/join-and-log.js +18 -18
- package/package.json +23 -3
- 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 +578 -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 +7554 -0
- package/src/zspec/zcl/definition/clusters-types.ts +8228 -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 +432 -0
- package/src/zspec/zcl/index.ts +11 -0
- package/src/zspec/zcl/utils.ts +504 -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 +10038 -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 +2887 -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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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/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.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.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/database.d.ts +0 -20
- 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/greenPower.d.ts +0 -14
- package/dist/controller/helpers/index.d.ts +0 -3
- 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.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.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/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.js +0 -9
- package/dist/controller/index.js.map +0 -1
- package/dist/controller/model/device.d.ts +0 -140
- package/dist/controller/model/endpoint.d.ts +0 -134
- package/dist/controller/model/entity.d.ts +0 -15
- 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/index.d.ts +0 -6
- 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.js +0 -157
- package/dist/controller/touchlink.js.map +0 -1
- package/dist/controller/tstype.d.ts +0 -21
- package/dist/index.d.ts +0 -6
- 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/definition/cluster.d.ts +0 -3
- 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/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/index.d.ts +0 -11
- package/dist/zspec/zcl/utils.d.ts +0 -7
- package/dist/zspec/zcl/zclFrame.d.ts +0 -36
- package/dist/zspec/zcl/zclHeader.d.ts +0 -17
- 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,109 @@
|
|
|
1
|
+
import {EZSP_MAX_FRAME_LENGTH, EZSP_MIN_FRAME_LENGTH} from "../ezsp/consts";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Define the size of the receive buffer pool on the EZSP host.
|
|
5
|
+
*
|
|
6
|
+
* The number of receive buffers does not need to be greater than the number of packet buffers available on the NCP,
|
|
7
|
+
* because this in turn is the maximum number of callbacks that could be received between commands.
|
|
8
|
+
* In reality a value of 20 is a generous allocation.
|
|
9
|
+
*/
|
|
10
|
+
export const EZSP_HOST_RX_POOL_SIZE = 32;
|
|
11
|
+
/**
|
|
12
|
+
* The number of transmit buffers must be set to the number of receive buffers
|
|
13
|
+
* -- to hold the immediate ACKs sent for each callabck frame received --
|
|
14
|
+
* plus 3 buffers for the retransmit queue and one each for an automatic ACK
|
|
15
|
+
* (due to data flow control) and a command.
|
|
16
|
+
*/
|
|
17
|
+
export const TX_POOL_BUFFERS = EZSP_HOST_RX_POOL_SIZE + 5;
|
|
18
|
+
|
|
19
|
+
/** protocol version */
|
|
20
|
+
export const ASH_VERSION = 2;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Timeouts before link is judged down.
|
|
24
|
+
*
|
|
25
|
+
* Consecutive ACK timeouts (minus 1) needed to enter the ERROR state.
|
|
26
|
+
*
|
|
27
|
+
* Is 3 in ash-ncp.h
|
|
28
|
+
*/
|
|
29
|
+
export const ASH_MAX_TIMEOUTS = 6;
|
|
30
|
+
/** max time in msecs for ncp to wake */
|
|
31
|
+
export const ASH_MAX_WAKE_TIME = 150;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Define the units used by the Not Ready timer as 2**n msecs
|
|
35
|
+
* log2 of msecs per NR timer unit
|
|
36
|
+
*/
|
|
37
|
+
export const ASH_NR_TIMER_BIT = 4;
|
|
38
|
+
|
|
39
|
+
/** Control byte mask for DATA frame */
|
|
40
|
+
export const ASH_DFRAME_MASK = 0x80;
|
|
41
|
+
/** Control byte mask for short frames (ACK/NAK) */
|
|
42
|
+
export const ASH_SHFRAME_MASK = 0xe0;
|
|
43
|
+
|
|
44
|
+
/** Acknowledge frame number */
|
|
45
|
+
export const ASH_ACKNUM_MASK = 0x07;
|
|
46
|
+
export const ASH_ACKNUM_BIT = 0;
|
|
47
|
+
/** Retransmitted frame flag */
|
|
48
|
+
export const ASH_RFLAG_MASK = 0x08;
|
|
49
|
+
export const ASH_RFLAG_BIT = 3;
|
|
50
|
+
/** Receiver not ready flag */
|
|
51
|
+
export const ASH_NFLAG_MASK = 0x08;
|
|
52
|
+
export const ASH_NFLAG_BIT = 3;
|
|
53
|
+
/** Reserved for future use */
|
|
54
|
+
export const ASH_PFLAG_MASK = 0x10;
|
|
55
|
+
export const ASH_PFLAG_BIT = 4;
|
|
56
|
+
/** DATA frame number */
|
|
57
|
+
export const ASH_FRMNUM_MASK = 0x70;
|
|
58
|
+
export const ASH_FRMNUM_BIT = 4;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The wake byte special function applies only when in between frames,
|
|
62
|
+
* so it does not need to be escaped within a frame.
|
|
63
|
+
* (also means NCP data pending)
|
|
64
|
+
*/
|
|
65
|
+
export const ASH_WAKE = 0xff; /*!< */
|
|
66
|
+
|
|
67
|
+
/** Constant used in byte-stuffing (XOR mask used in byte stuffing) */
|
|
68
|
+
export const ASH_FLIP = 0x20;
|
|
69
|
+
|
|
70
|
+
// Field and frame lengths, excluding flag byte and any byte stuffing overhead
|
|
71
|
+
// All limits are inclusive
|
|
72
|
+
export const ASH_MIN_DATA_FIELD_LEN = EZSP_MIN_FRAME_LENGTH;
|
|
73
|
+
export const ASH_MAX_DATA_FIELD_LEN = EZSP_MAX_FRAME_LENGTH;
|
|
74
|
+
/** with control */
|
|
75
|
+
export const ASH_MIN_DATA_FRAME_LEN = ASH_MIN_DATA_FIELD_LEN + 1;
|
|
76
|
+
/** control plus data field, but not CRC */
|
|
77
|
+
export const ASH_MIN_FRAME_LEN = 1;
|
|
78
|
+
export const ASH_MAX_FRAME_LEN = ASH_MAX_DATA_FIELD_LEN + 1;
|
|
79
|
+
export const ASH_CRC_LEN = 2;
|
|
80
|
+
export const ASH_MIN_FRAME_WITH_CRC_LEN = ASH_MIN_FRAME_LEN + ASH_CRC_LEN;
|
|
81
|
+
export const ASH_MAX_FRAME_WITH_CRC_LEN = ASH_MAX_FRAME_LEN + ASH_CRC_LEN;
|
|
82
|
+
|
|
83
|
+
// Lengths for each frame type: includes control and data field (if any), excludes the CRC and flag bytes
|
|
84
|
+
/** ash frame len data min */
|
|
85
|
+
export const ASH_FRAME_LEN_DATA_MIN = ASH_MIN_DATA_FIELD_LEN + 1;
|
|
86
|
+
/** [control] */
|
|
87
|
+
export const ASH_FRAME_LEN_ACK = 1;
|
|
88
|
+
/** [control] */
|
|
89
|
+
export const ASH_FRAME_LEN_NAK = 1;
|
|
90
|
+
/** [control] */
|
|
91
|
+
export const ASH_FRAME_LEN_RST = 1;
|
|
92
|
+
/** [control, version, reset reason] */
|
|
93
|
+
export const ASH_FRAME_LEN_RSTACK = 3;
|
|
94
|
+
/** [control, version, error] */
|
|
95
|
+
export const ASH_FRAME_LEN_ERROR = 3;
|
|
96
|
+
|
|
97
|
+
// Define lengths of short frames - includes control byte and data field
|
|
98
|
+
/** longest non-data frame sent */
|
|
99
|
+
export const SH_TX_BUFFER_LEN = 2;
|
|
100
|
+
/** longest non-data frame received */
|
|
101
|
+
export const SH_RX_BUFFER_LEN = 3;
|
|
102
|
+
|
|
103
|
+
// Define constants for the LFSR in randomizeBuffer()
|
|
104
|
+
/** polynomial */
|
|
105
|
+
export const LFSR_POLY = 0xb8;
|
|
106
|
+
/** initial value (seed) */
|
|
107
|
+
export const LFSR_SEED = 0x42;
|
|
108
|
+
|
|
109
|
+
export const VALID_BAUDRATES = [600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800];
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identify the type of frame from control byte.
|
|
3
|
+
*
|
|
4
|
+
* Control byte formats
|
|
5
|
+
* +---------+----+----+----+----+----+----+----+----++---------+
|
|
6
|
+
* | | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 || Range |
|
|
7
|
+
* +---------+----+----+----+----+----+----+----+----++---------+
|
|
8
|
+
* | DATA | 0 | frameNum | rF | ackNum ||0x00-0x7F|
|
|
9
|
+
* +---------+----+----+----+----+----+----+----+----++---------+
|
|
10
|
+
* | ACK | 1 | 0 | 0 | pF | nF | ackNum ||0x80-0x9F|
|
|
11
|
+
* | NAK | 1 | 0 | 1 | pF | nF | ackNum ||0xA0-0xBF|
|
|
12
|
+
* +---------+----+----+----+----+----+----+----+----++---------+
|
|
13
|
+
* | RST | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 || 0xC0 |
|
|
14
|
+
* | RSTACK | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 || 0xC1 |
|
|
15
|
+
* | ERROR | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 || 0xC2 |
|
|
16
|
+
* +---------+----+----+----+----+----+----+----+----++---------+
|
|
17
|
+
* rF = rFlag (retransmission flag)
|
|
18
|
+
* nF = nFlag (receiver not ready flag, always 0 in frames sent by the NCP)
|
|
19
|
+
* pF = flag reserved for future use
|
|
20
|
+
* frameNum = DATA frame’s 3-bit sequence number
|
|
21
|
+
* ackNum = acknowledges receipt of DATA frames up to, but not including, ackNum
|
|
22
|
+
* Control byte values 0xC3-0xFE are unused, 0xFF is reserved.
|
|
23
|
+
*/
|
|
24
|
+
export enum AshFrameType {
|
|
25
|
+
INVALID = -1,
|
|
26
|
+
/**
|
|
27
|
+
* Carries all EZSP frames.
|
|
28
|
+
*
|
|
29
|
+
* [CONTROL, EZSP 0, EZSP 1, EZSP 2, EZSP n, CRC high, CRC low, FLAG]
|
|
30
|
+
*
|
|
31
|
+
* Notation used in documentation: DATA(F, A, R)
|
|
32
|
+
* - F: frame number (frmNum)
|
|
33
|
+
* - A: acknowledge number (ackNum)
|
|
34
|
+
* - R: retransmit flag (reTx)
|
|
35
|
+
*
|
|
36
|
+
* Example without pseudo-random sequence applied to Data Field:
|
|
37
|
+
* - EZSP “version” command: 00 00 00 02
|
|
38
|
+
* - DATA(2, 5, 0) = 25 00 00 00 02 1A AD 7E
|
|
39
|
+
* - EZSP “version” response: 00 80 00 02 02 11 30
|
|
40
|
+
* - DATA(5, 3, 0) = 53 00 80 00 02 02 11 30 63 16 7E
|
|
41
|
+
*
|
|
42
|
+
* Example with pseudo-random sequence applied to Data Field:
|
|
43
|
+
* - EZSP “version” command: 00 00 00 02
|
|
44
|
+
* - DATA(2, 5, 0) = 25 42 21 A8 56 A6 09 7E
|
|
45
|
+
* - EZSP “version” response: 00 80 00 02 02 11 30
|
|
46
|
+
* - DATA(5, 3, 0) = 53 42 A1 A8 56 28 04 82 96 23 7E
|
|
47
|
+
*
|
|
48
|
+
* Sent by: NCP, Host
|
|
49
|
+
*/
|
|
50
|
+
DATA = 0,
|
|
51
|
+
/**
|
|
52
|
+
* Acknowledges receipt of a valid DATA frame.
|
|
53
|
+
*
|
|
54
|
+
* [CONTROL, CRC high, CRC low, FLAG]
|
|
55
|
+
*
|
|
56
|
+
* Notation used in documentation: ACK(A)+/-
|
|
57
|
+
* - A: acknowledge number (ackNum)
|
|
58
|
+
* - +/-: not ready flag (nRdy); “+” = “0” = “ready”; “-” = “1” = “not ready”
|
|
59
|
+
*
|
|
60
|
+
* Examples:
|
|
61
|
+
* - ACK(1)+ :81 60 59 7E
|
|
62
|
+
* - ACK(6)– : 8E 91 B6 7E
|
|
63
|
+
*
|
|
64
|
+
* Sent by: NCP, Host
|
|
65
|
+
*/
|
|
66
|
+
ACK = 0x80, // 0b10000000
|
|
67
|
+
/**
|
|
68
|
+
* Indicates receipt of a DATA frame with an error or that was discarded due to lack of memory.
|
|
69
|
+
*
|
|
70
|
+
* [CONTROL, CRC high, CRC low, FLAG]
|
|
71
|
+
*
|
|
72
|
+
* Notation used in documentation: NAK(A)+/-
|
|
73
|
+
* - A: acknowledge number (ackNum)
|
|
74
|
+
* - +/-: not ready flag (nRdy); “+” = “0” = “ready”; “-” = “1” = “not ready”
|
|
75
|
+
*
|
|
76
|
+
* Examples:
|
|
77
|
+
* - NAK(6)+ : A6 34 DC 7E
|
|
78
|
+
* - NAK(5)- : AD 85 B7 7E
|
|
79
|
+
*
|
|
80
|
+
* Sent by: NCP, Host
|
|
81
|
+
*/
|
|
82
|
+
NAK = 0xa0, // 0b10100000
|
|
83
|
+
/**
|
|
84
|
+
* Requests the NCP to perform a software reset (valid even if the NCP is in the FAILED state).
|
|
85
|
+
*
|
|
86
|
+
* [CONTROL, CRC high, CRC low, FLAG]
|
|
87
|
+
*
|
|
88
|
+
* Notation used in documentation: RST()
|
|
89
|
+
*
|
|
90
|
+
* Example: C0 38 BC 7E
|
|
91
|
+
*
|
|
92
|
+
* Sent by: Host
|
|
93
|
+
*/
|
|
94
|
+
RST = 0xc0, // 0b11000000
|
|
95
|
+
/**
|
|
96
|
+
* Informs the Host that the NCP has reset and the reason for the reset.
|
|
97
|
+
*
|
|
98
|
+
* [CONTROL, version, reset code, CRC high, CRC low, FLAG]
|
|
99
|
+
*
|
|
100
|
+
* Notation used in documentation: RSTACK(V, C)
|
|
101
|
+
* - V: version
|
|
102
|
+
* - C: reset code
|
|
103
|
+
*
|
|
104
|
+
* Example: C1 02 02 9B 7B 7E
|
|
105
|
+
*
|
|
106
|
+
* Sent by: NCP
|
|
107
|
+
*/
|
|
108
|
+
RSTACK = 0xc1, // 0b11000001
|
|
109
|
+
/**
|
|
110
|
+
* Informs the Host that the NCP detected a fatal error and is in the FAILED state.
|
|
111
|
+
*
|
|
112
|
+
* [CONTROL, version, error code, CRC high, CRC low, FLAG]
|
|
113
|
+
*
|
|
114
|
+
* Notation used in documentation: ERROR(V, C )
|
|
115
|
+
* - V: version
|
|
116
|
+
* - C: reset code
|
|
117
|
+
*
|
|
118
|
+
* Example: C2 01 52 FA BD 7E
|
|
119
|
+
*
|
|
120
|
+
* Sent by: NCP
|
|
121
|
+
*/
|
|
122
|
+
ERROR = 0xc2, // 0b11000010
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export const enum AshReservedByte {
|
|
126
|
+
/**
|
|
127
|
+
* Marks the end of a frame.
|
|
128
|
+
*
|
|
129
|
+
* When a Flag Byte is received, the data received since the last Flag Byte or Cancel Byte
|
|
130
|
+
* is tested to see whether it is a valid frame. */
|
|
131
|
+
FLAG = 0x7e,
|
|
132
|
+
/**
|
|
133
|
+
* Indicates that the following byte is escaped.
|
|
134
|
+
*
|
|
135
|
+
* If the byte after the Escape Byte is not a reserved byte,
|
|
136
|
+
* bit 5 of the byte is complemented to restore its original value.
|
|
137
|
+
* If the byte after the Escape Byte is a reserved value, the Escape Byte has no effect. */
|
|
138
|
+
ESCAPE = 0x7d,
|
|
139
|
+
/**
|
|
140
|
+
* Resume transmission.
|
|
141
|
+
*
|
|
142
|
+
* Used in XON/XOFF flow control. Always ignored if received by the NCP.
|
|
143
|
+
*/
|
|
144
|
+
XON = 0x11,
|
|
145
|
+
/**
|
|
146
|
+
* Stop transmission.
|
|
147
|
+
*
|
|
148
|
+
* Used in XON/XOFF flow control. Always ignored if received by the NCP
|
|
149
|
+
*/
|
|
150
|
+
XOFF = 0x13,
|
|
151
|
+
/**
|
|
152
|
+
* Replaces a byte received with a low-level communication error (e.g., framing error) from the UART.
|
|
153
|
+
*
|
|
154
|
+
* When a Substitute Byte is processed, the data between the previous and the next Flag Bytes is ignored.
|
|
155
|
+
*/
|
|
156
|
+
SUBSTITUTE = 0x18,
|
|
157
|
+
/**
|
|
158
|
+
* Terminates a frame in progress.
|
|
159
|
+
*
|
|
160
|
+
* A Cancel Byte causes all data received since the previous Flag Byte to be ignored.
|
|
161
|
+
* Note that as a special case, RST and RSTACK frames are preceded by Cancel Bytes to ignore any link startup noise.
|
|
162
|
+
*/
|
|
163
|
+
CANCEL = 0x1a,
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* The NCP enters the FAILED state if it detects one of the following errors:
|
|
168
|
+
* - An abnormal internal reset due to an error, failed assertion, or fault.
|
|
169
|
+
* - Exceeding the maximum number of consecutive acknowledgement timeouts.
|
|
170
|
+
*
|
|
171
|
+
* When the NCP enters the FAILED state, the NCP sends an ERROR frame containing a reset or error code
|
|
172
|
+
* and will reply to all subsequent frames received, except RST, with an ERROR frame.
|
|
173
|
+
* To reinitialize the ASH protocol, the Host must reset the NCP by either asserting the nRESET pin or sending the RST frame.
|
|
174
|
+
*
|
|
175
|
+
* The codes are returned by the NCP in the:
|
|
176
|
+
* - Reset Code byte of a RSTACK frame
|
|
177
|
+
* - Error Code byte of an ERROR frame.
|
|
178
|
+
*
|
|
179
|
+
* Silicon Labs wireless mesh chips can detect numerous reset fault causes beyond those in the table.
|
|
180
|
+
* When sent to the host, these new reset codes have 0x80 added to the value returned by their HAL’s reset code.
|
|
181
|
+
*/
|
|
182
|
+
export enum NcpFailedCode {
|
|
183
|
+
RESET_UNKNOWN_REASON = 0,
|
|
184
|
+
RESET_EXTERNAL = 1,
|
|
185
|
+
RESET_POWERON = 2,
|
|
186
|
+
RESET_WATCHDOG = 3,
|
|
187
|
+
RESET_ASSERT = 6,
|
|
188
|
+
RESET_BOOTLOADER = 9,
|
|
189
|
+
RESET_SOFTWARE = 11,
|
|
190
|
+
ERROR_EXCEEDED_MAXIMUM_ACK_TIMEOUT_COUNT = 0x51,
|
|
191
|
+
CHIP_SPECIFIC_ERROR_RESET_CODE = 0x80,
|
|
192
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* v8 ignore start */
|
|
2
|
+
|
|
3
|
+
import {Transform, type TransformCallback} from "node:stream";
|
|
4
|
+
|
|
5
|
+
// import {logger} from '../../../utils/logger';
|
|
6
|
+
import {AshReservedByte} from "./enums";
|
|
7
|
+
|
|
8
|
+
// const NS = 'zh:ember:uart:ash:parser';
|
|
9
|
+
|
|
10
|
+
export class AshParser extends Transform {
|
|
11
|
+
#buffer = Buffer.alloc(0);
|
|
12
|
+
|
|
13
|
+
override _transform(chunk: Buffer, _encoding: BufferEncoding, cb: TransformCallback): void {
|
|
14
|
+
let data = Buffer.concat([this.#buffer, chunk]);
|
|
15
|
+
let position: number;
|
|
16
|
+
|
|
17
|
+
// biome-ignore lint/suspicious/noAssignInExpressions: shorter
|
|
18
|
+
while ((position = data.indexOf(AshReservedByte.FLAG)) !== -1) {
|
|
19
|
+
// emit the frame via 'data' event
|
|
20
|
+
const frame = data.subarray(0, position + 1);
|
|
21
|
+
|
|
22
|
+
// expensive and very verbose, enable locally only if necessary
|
|
23
|
+
// logger.debug(`<<<< [FRAME raw=${frame.toString('hex')}]`, NS);
|
|
24
|
+
this.push(frame);
|
|
25
|
+
|
|
26
|
+
// remove the frame from internal buffer (set below)
|
|
27
|
+
data = data.subarray(position + 1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
this.#buffer = data;
|
|
31
|
+
|
|
32
|
+
cb();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
override _flush(cb: TransformCallback): void {
|
|
36
|
+
this.push(this.#buffer);
|
|
37
|
+
|
|
38
|
+
this.#buffer = Buffer.alloc(0);
|
|
39
|
+
|
|
40
|
+
cb();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/* v8 ignore start */
|
|
2
|
+
|
|
3
|
+
import {logger} from "../../../utils/logger";
|
|
4
|
+
import {EZSP_MAX_FRAME_LENGTH} from "../ezsp/consts";
|
|
5
|
+
|
|
6
|
+
const NS = "zh:ember:uart:queues";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Buffer to hold a DATA frame.
|
|
10
|
+
* Allocates `data` to `EZSP_MAX_FRAME_LENGTH` filled with zeroes.
|
|
11
|
+
*/
|
|
12
|
+
export class EzspBuffer {
|
|
13
|
+
/** uint8_t[EZSP_MAX_FRAME_LENGTH] */
|
|
14
|
+
public data: Buffer;
|
|
15
|
+
public link?: EzspBuffer;
|
|
16
|
+
/** uint8_t */
|
|
17
|
+
public len: number;
|
|
18
|
+
|
|
19
|
+
constructor() {
|
|
20
|
+
this.data = Buffer.alloc(EZSP_MAX_FRAME_LENGTH); // inits to all-zeroes
|
|
21
|
+
this.link = undefined;
|
|
22
|
+
this.len = 0;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Simple queue (singly-linked list)
|
|
28
|
+
*/
|
|
29
|
+
export class EzspQueue {
|
|
30
|
+
public tail?: EzspBuffer;
|
|
31
|
+
|
|
32
|
+
constructor() {
|
|
33
|
+
this.tail = undefined;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Get the number of buffers in the queue.
|
|
38
|
+
* @returns
|
|
39
|
+
*/
|
|
40
|
+
get length(): number {
|
|
41
|
+
let head = this.tail;
|
|
42
|
+
let count = 0;
|
|
43
|
+
|
|
44
|
+
for (count; head !== undefined; count++) {
|
|
45
|
+
head = head.link;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return count;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
get empty(): boolean {
|
|
52
|
+
return this.tail === undefined;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Get a pointer to the buffer at the head of the queue.
|
|
57
|
+
* @returns
|
|
58
|
+
*/
|
|
59
|
+
get head(): EzspBuffer {
|
|
60
|
+
let head = this.tail;
|
|
61
|
+
|
|
62
|
+
if (head === undefined) {
|
|
63
|
+
throw new Error("Tried to get head from an empty queue.");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
while (head.link !== undefined) {
|
|
67
|
+
head = head.link;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return head;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Get a pointer to the Nth entry in the queue (the tail corresponds to N = 1).
|
|
75
|
+
*
|
|
76
|
+
* @param n
|
|
77
|
+
* @returns
|
|
78
|
+
*/
|
|
79
|
+
public getNthEntry(n: number): EzspBuffer | undefined {
|
|
80
|
+
if (n === 0) {
|
|
81
|
+
throw new Error("Asked for 0th element in queue.");
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
let buf = this.tail;
|
|
85
|
+
|
|
86
|
+
while (--n) {
|
|
87
|
+
if (buf === undefined) {
|
|
88
|
+
throw new Error("Less than N entries in queue.");
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
buf = buf.link;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return buf;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Get a pointer to the entry before the specified entry (closer to the tail).
|
|
99
|
+
* If the buffer specified is undefined, the head entry is returned.
|
|
100
|
+
* If the buffer specified is the tail, undefined is returned.
|
|
101
|
+
* @param entry The buffer to look before.
|
|
102
|
+
* @returns
|
|
103
|
+
*/
|
|
104
|
+
public getPrecedingEntry(entry?: EzspBuffer): EzspBuffer | undefined {
|
|
105
|
+
let buf = this.tail;
|
|
106
|
+
|
|
107
|
+
if (buf === entry) {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (buf === undefined) {
|
|
112
|
+
throw new Error("Tried to get preceding entry from an empty queue.");
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
do {
|
|
116
|
+
if (buf.link === entry) {
|
|
117
|
+
return buf;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
buf = buf.link;
|
|
121
|
+
} while (buf !== undefined);
|
|
122
|
+
|
|
123
|
+
throw new Error("Buffer not in queue.");
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Add a buffer to the tail of the queue.
|
|
128
|
+
* @param buf
|
|
129
|
+
*/
|
|
130
|
+
public addTail(buf: EzspBuffer): void {
|
|
131
|
+
if (buf) {
|
|
132
|
+
buf.link = this.tail;
|
|
133
|
+
this.tail = buf;
|
|
134
|
+
} else {
|
|
135
|
+
throw new Error("Called addTail with undefined buffer");
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Remove the buffer at the head of the queue.
|
|
141
|
+
* @returns The removed buffer.
|
|
142
|
+
*/
|
|
143
|
+
public removeHead(): EzspBuffer {
|
|
144
|
+
let head = this.tail;
|
|
145
|
+
|
|
146
|
+
if (head === undefined) {
|
|
147
|
+
throw new Error("Tried to remove head from an empty queue.");
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (head.link === undefined) {
|
|
151
|
+
this.tail = undefined;
|
|
152
|
+
} else {
|
|
153
|
+
let prev: EzspBuffer;
|
|
154
|
+
|
|
155
|
+
do {
|
|
156
|
+
prev = head;
|
|
157
|
+
head = head.link;
|
|
158
|
+
} while (head.link !== undefined);
|
|
159
|
+
|
|
160
|
+
prev.link = undefined;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
return head;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Remove the specified entry from the queue.
|
|
168
|
+
* @param entry
|
|
169
|
+
* @returns A pointer to the preceding entry (if any).
|
|
170
|
+
*/
|
|
171
|
+
public removeEntry(entry: EzspBuffer): EzspBuffer | undefined {
|
|
172
|
+
const buf = this.getPrecedingEntry(entry);
|
|
173
|
+
|
|
174
|
+
if (buf !== undefined) {
|
|
175
|
+
buf.link = entry.link;
|
|
176
|
+
} else {
|
|
177
|
+
this.tail = entry.link;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return buf;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Simple free list (singly-linked list)
|
|
186
|
+
*/
|
|
187
|
+
export class EzspFreeList {
|
|
188
|
+
public link?: EzspBuffer;
|
|
189
|
+
|
|
190
|
+
constructor() {
|
|
191
|
+
this.link = undefined;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Get the number of buffers in the free list.
|
|
196
|
+
* @returns
|
|
197
|
+
*/
|
|
198
|
+
get length(): number {
|
|
199
|
+
let next = this.link;
|
|
200
|
+
let count = 0;
|
|
201
|
+
|
|
202
|
+
for (count; next !== undefined; count++) {
|
|
203
|
+
next = next.link;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return count;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Add a buffer to the free list.
|
|
211
|
+
* @param buf
|
|
212
|
+
*/
|
|
213
|
+
public freeBuffer(buf: EzspBuffer): void {
|
|
214
|
+
if (buf) {
|
|
215
|
+
buf.link = this.link;
|
|
216
|
+
this.link = buf;
|
|
217
|
+
} else {
|
|
218
|
+
throw new Error("Called freeBuffer with undefined buffer");
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Get a buffer from the free list.
|
|
224
|
+
* @returns
|
|
225
|
+
*/
|
|
226
|
+
public allocBuffer(): EzspBuffer | undefined {
|
|
227
|
+
const buf = this.link;
|
|
228
|
+
|
|
229
|
+
if (buf !== undefined) {
|
|
230
|
+
this.link = buf.link;
|
|
231
|
+
buf.len = 0;
|
|
232
|
+
|
|
233
|
+
if (buf.data.length !== EZSP_MAX_FRAME_LENGTH) {
|
|
234
|
+
// should never happen if buffers are handled properly, but just in case, re-alloc to max length
|
|
235
|
+
buf.data = Buffer.alloc(EZSP_MAX_FRAME_LENGTH);
|
|
236
|
+
|
|
237
|
+
const e = new Error();
|
|
238
|
+
logger.error(`Pre-allocated buffer had improper size and had to be re-allocated. ${e.stack}`, NS);
|
|
239
|
+
} else {
|
|
240
|
+
// (void) memset(buffer->data, 0, EZSP_MAX_FRAME_LENGTH);
|
|
241
|
+
buf.data.fill(0);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return buf;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/* v8 ignore start */
|
|
2
|
+
|
|
3
|
+
import {Readable} from "node:stream";
|
|
4
|
+
import {ASH_MAX_FRAME_WITH_CRC_LEN} from "./consts";
|
|
5
|
+
|
|
6
|
+
// import {logger} from '../../../utils/logger';
|
|
7
|
+
|
|
8
|
+
// const NS = 'zh:ember:uart:ash:writer';
|
|
9
|
+
|
|
10
|
+
export class AshWriter extends Readable {
|
|
11
|
+
#writtenLen = 0;
|
|
12
|
+
#bytesToWrite = Buffer.alloc(ASH_MAX_FRAME_WITH_CRC_LEN);
|
|
13
|
+
|
|
14
|
+
private writeBytes(): void {
|
|
15
|
+
// expensive and very verbose, enable locally only if necessary
|
|
16
|
+
// logger.debug(`>>>> [FRAME raw=${buffer.toString('hex')}]`, NS);
|
|
17
|
+
|
|
18
|
+
// copy, can't use ref
|
|
19
|
+
const buffer = Buffer.from(this.#bytesToWrite.subarray(0, this.#writtenLen));
|
|
20
|
+
this.#writtenLen = 0;
|
|
21
|
+
|
|
22
|
+
// this.push(buffer);
|
|
23
|
+
this.emit("data", buffer);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public writeByte(byte: number): void {
|
|
27
|
+
this.#writtenLen = this.#bytesToWrite.writeUInt8(byte, this.#writtenLen);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public writeAvailable(): boolean {
|
|
31
|
+
if (this.readableLength < this.readableHighWaterMark) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
this.writeFlush();
|
|
36
|
+
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* If there is anything to send, send to the port.
|
|
42
|
+
*/
|
|
43
|
+
public writeFlush(): void {
|
|
44
|
+
if (this.#writtenLen > 0) {
|
|
45
|
+
this.writeBytes();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
public override _read(): void {}
|
|
50
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/* v8 ignore start */
|
|
2
|
+
|
|
3
|
+
import * as ZSpec from "../../../zspec";
|
|
4
|
+
import type {NetworkCache} from "../adapter/emberAdapter";
|
|
5
|
+
import {INVALID_RADIO_CHANNEL, ZB_PSA_ALG} from "../consts";
|
|
6
|
+
import {EmberJoinMethod, SecManDerivedKeyType, SecManFlag, SecManKeyType} from "../enums";
|
|
7
|
+
import {EMBER_AES_HASH_BLOCK_SIZE} from "../ezsp/consts";
|
|
8
|
+
import type {EmberAesMmoHashContext, SecManContext} from "../types";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Initialize a network cache index with proper "invalid" values.
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
export const initNetworkCache = (): NetworkCache => {
|
|
15
|
+
return {
|
|
16
|
+
eui64: ZSpec.BLANK_EUI64,
|
|
17
|
+
parameters: {
|
|
18
|
+
extendedPanId: ZSpec.BLANK_EXTENDED_PAN_ID.slice(), // copy
|
|
19
|
+
panId: ZSpec.INVALID_PAN_ID,
|
|
20
|
+
radioTxPower: 0,
|
|
21
|
+
radioChannel: INVALID_RADIO_CHANNEL,
|
|
22
|
+
joinMethod: EmberJoinMethod.MAC_ASSOCIATION,
|
|
23
|
+
nwkManagerId: ZSpec.NULL_NODE_ID,
|
|
24
|
+
nwkUpdateId: 0,
|
|
25
|
+
channels: ZSpec.ALL_802_15_4_CHANNELS_MASK,
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* This routine will initialize a Security Manager context correctly for use in subsequent function calls.
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
34
|
+
export const initSecurityManagerContext = (): SecManContext => {
|
|
35
|
+
return {
|
|
36
|
+
coreKeyType: SecManKeyType.NONE,
|
|
37
|
+
keyIndex: 0,
|
|
38
|
+
derivedType: SecManDerivedKeyType.NONE,
|
|
39
|
+
eui64: "0x0000000000000000",
|
|
40
|
+
multiNetworkIndex: 0,
|
|
41
|
+
flags: SecManFlag.NONE,
|
|
42
|
+
psaKeyAlgPermission: ZB_PSA_ALG, // unused for classic key storage
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* This routine clears the passed context so that a new hash calculation
|
|
48
|
+
* can be performed.
|
|
49
|
+
*
|
|
50
|
+
* @returns context A pointer to the location of hash context to clear.
|
|
51
|
+
*/
|
|
52
|
+
export const aesMmoHashInit = (): EmberAesMmoHashContext => {
|
|
53
|
+
// MEMSET(context, 0, sizeof(EmberAesMmoHashContext));
|
|
54
|
+
return {
|
|
55
|
+
result: Buffer.alloc(EMBER_AES_HASH_BLOCK_SIZE), // uint8_t[EMBER_AES_HASH_BLOCK_SIZE]
|
|
56
|
+
length: 0x00000000, // uint32_t
|
|
57
|
+
};
|
|
58
|
+
};
|