zigbee-herdsman 3.5.1 → 4.0.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/dependabot.yml +9 -3
- package/.github/workflows/ci.yml +2 -4
- package/.github/workflows/stale.yml +1 -1
- package/.release-please-manifest.json +1 -1
- package/.vscode/extensions.json +3 -0
- package/.vscode/settings.json +11 -0
- package/CHANGELOG.md +25 -0
- package/biome.json +89 -0
- package/dist/adapter/adapter.d.ts +11 -11
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +14 -14
- package/dist/adapter/adapterDiscovery.d.ts +6 -6
- package/dist/adapter/adapterDiscovery.d.ts.map +1 -1
- package/dist/adapter/adapterDiscovery.js +139 -141
- package/dist/adapter/adapterDiscovery.js.map +1 -1
- package/dist/adapter/const.d.ts +1 -1
- package/dist/adapter/const.js +2 -2
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +16 -16
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.js +95 -100
- package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
- package/dist/adapter/deconz/driver/constants.d.ts +5 -5
- package/dist/adapter/deconz/driver/constants.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/driver.d.ts +9 -9
- package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/driver.js +112 -106
- package/dist/adapter/deconz/driver/driver.js.map +1 -1
- package/dist/adapter/deconz/driver/frame.d.ts +1 -1
- package/dist/adapter/deconz/driver/frame.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/frame.js +1 -2
- package/dist/adapter/deconz/driver/frame.js.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.d.ts +1 -1
- package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.js +66 -70
- package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
- package/dist/adapter/deconz/driver/parser.d.ts +1 -1
- package/dist/adapter/deconz/driver/parser.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/parser.js +2 -2
- package/dist/adapter/deconz/driver/parser.js.map +1 -1
- package/dist/adapter/deconz/driver/writer.d.ts +2 -2
- package/dist/adapter/deconz/driver/writer.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/writer.js +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.d.ts +19 -19
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.js +117 -97
- package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
- package/dist/adapter/ember/adapter/endpoints.d.ts +1 -1
- package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.d.ts +5 -5
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.js +2 -2
- package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.d.ts +3 -3
- package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.js +20 -23
- package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
- package/dist/adapter/ember/enums.d.ts +4 -4
- package/dist/adapter/ember/enums.d.ts.map +1 -1
- package/dist/adapter/ember/enums.js +4 -6
- package/dist/adapter/ember/enums.js.map +1 -1
- package/dist/adapter/ember/ezsp/buffalo.d.ts +4 -4
- package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/buffalo.js +30 -32
- package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.d.ts +46 -46
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.js +85 -111
- package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
- package/dist/adapter/ember/ezspError.d.ts +1 -1
- package/dist/adapter/ember/types.d.ts +14 -14
- package/dist/adapter/ember/types.d.ts.map +1 -1
- package/dist/adapter/ember/uart/ash.d.ts +5 -5
- package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
- package/dist/adapter/ember/uart/ash.js +80 -71
- package/dist/adapter/ember/uart/ash.js.map +1 -1
- package/dist/adapter/ember/uart/parser.d.ts +2 -2
- package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
- package/dist/adapter/ember/uart/parser.js +2 -1
- package/dist/adapter/ember/uart/parser.js.map +1 -1
- package/dist/adapter/ember/uart/queues.js +27 -29
- package/dist/adapter/ember/uart/queues.js.map +1 -1
- package/dist/adapter/ember/uart/writer.d.ts +1 -1
- package/dist/adapter/ember/uart/writer.d.ts.map +1 -1
- package/dist/adapter/ember/uart/writer.js +3 -5
- package/dist/adapter/ember/uart/writer.js.map +1 -1
- package/dist/adapter/ember/utils/initters.d.ts +2 -2
- package/dist/adapter/ember/utils/initters.d.ts.map +1 -1
- package/dist/adapter/ember/utils/initters.js +1 -1
- package/dist/adapter/ember/utils/math.js +1 -1
- package/dist/adapter/events.d.ts +1 -1
- package/dist/adapter/events.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts +3 -3
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.js +8 -10
- package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +12 -12
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +45 -44
- package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
- package/dist/adapter/ezsp/driver/driver.d.ts +12 -12
- package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/driver.js +148 -141
- package/dist/adapter/ezsp/driver/driver.js.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.d.ts +7 -7
- package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.js +61 -59
- package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
- package/dist/adapter/ezsp/driver/frame.js +2 -2
- package/dist/adapter/ezsp/driver/index.d.ts +2 -2
- package/dist/adapter/ezsp/driver/multicast.d.ts +8 -5
- package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.js +9 -9
- package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
- package/dist/adapter/ezsp/driver/parser.d.ts +1 -1
- package/dist/adapter/ezsp/driver/parser.js +3 -3
- package/dist/adapter/ezsp/driver/types/basic.d.ts +5 -5
- package/dist/adapter/ezsp/driver/types/basic.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/basic.js +12 -33
- package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/index.d.ts +3 -3
- package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/index.js +8 -9
- package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.d.ts +2 -2
- package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.js +8 -11
- package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.d.ts +2 -2
- package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.js +207 -214
- package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
- package/dist/adapter/ezsp/driver/uart.d.ts +2 -2
- package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/uart.js +48 -37
- package/dist/adapter/ezsp/driver/uart.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +3 -3
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +16 -34
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.d.ts +4 -4
- package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.js +4 -4
- package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/writer.d.ts +1 -1
- package/dist/adapter/ezsp/driver/writer.js +2 -2
- package/dist/adapter/index.d.ts +3 -3
- package/dist/adapter/serialPort.d.ts +3 -3
- package/dist/adapter/serialPort.d.ts.map +1 -1
- package/dist/adapter/serialPort.js +1 -0
- package/dist/adapter/serialPort.js.map +1 -1
- package/dist/adapter/socketPortUtils.js +3 -3
- package/dist/adapter/tstype.d.ts +6 -6
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +4 -4
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.js +106 -119
- package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +10 -10
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +23 -24
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.d.ts +6 -6
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.js +115 -127
- package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
- package/dist/adapter/z-stack/adapter/tstype.d.ts +3 -3
- package/dist/adapter/z-stack/adapter/tstype.js +3 -3
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +10 -10
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +125 -137
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
- package/dist/adapter/z-stack/constants/common.d.ts.map +1 -1
- package/dist/adapter/z-stack/constants/common.js +0 -3
- package/dist/adapter/z-stack/constants/common.js.map +1 -1
- package/dist/adapter/z-stack/constants/index.d.ts +10 -10
- package/dist/adapter/z-stack/constants/index.d.ts.map +1 -1
- package/dist/adapter/z-stack/constants/index.js +2 -2
- package/dist/adapter/z-stack/constants/index.js.map +1 -1
- package/dist/adapter/z-stack/constants/utils.d.ts +1 -1
- package/dist/adapter/z-stack/constants/utils.js +2 -2
- package/dist/adapter/z-stack/constants/utils.js.map +1 -1
- package/dist/adapter/z-stack/models/startup-options.d.ts +2 -2
- package/dist/adapter/z-stack/models/startup-options.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +4 -5
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +2 -2
- package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-table.js +3 -4
- package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +1 -2
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +2 -2
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +3 -4
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +6 -7
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +2 -2
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +3 -4
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/channel-list.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/channel-list.js +1 -2
- package/dist/adapter/z-stack/structs/entries/channel-list.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/has-configured.js +2 -3
- package/dist/adapter/z-stack/structs/entries/has-configured.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/index.d.ts +16 -16
- package/dist/adapter/z-stack/structs/entries/nib.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nib.js +49 -50
- package/dist/adapter/z-stack/structs/entries/nib.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +1 -2
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key.js +1 -2
- package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +1 -2
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +3 -4
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +2 -2
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +3 -4
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +4 -5
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +2 -2
- package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-table.js +3 -4
- package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +1 -1
- package/dist/adapter/z-stack/structs/index.d.ts +4 -4
- package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +2 -2
- package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/struct.d.ts +8 -8
- package/dist/adapter/z-stack/structs/struct.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/struct.js +42 -43
- package/dist/adapter/z-stack/structs/struct.js.map +1 -1
- package/dist/adapter/z-stack/structs/table.d.ts +3 -3
- package/dist/adapter/z-stack/structs/table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/table.js +10 -10
- package/dist/adapter/z-stack/structs/table.js.map +1 -1
- package/dist/adapter/z-stack/unpi/frame.d.ts +1 -1
- package/dist/adapter/z-stack/unpi/frame.d.ts.map +1 -1
- package/dist/adapter/z-stack/unpi/frame.js +2 -4
- package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
- package/dist/adapter/z-stack/unpi/index.d.ts +4 -4
- package/dist/adapter/z-stack/unpi/parser.d.ts +1 -1
- package/dist/adapter/z-stack/unpi/parser.js +3 -3
- package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
- package/dist/adapter/z-stack/unpi/writer.d.ts +2 -2
- package/dist/adapter/z-stack/unpi/writer.d.ts.map +1 -1
- package/dist/adapter/z-stack/unpi/writer.js +1 -1
- package/dist/adapter/z-stack/utils/index.d.ts +2 -2
- package/dist/adapter/z-stack/utils/network-options.d.ts +1 -1
- package/dist/adapter/z-stack/utils/network-options.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +3 -3
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/buffaloZnp.js +34 -20
- package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -1
- package/dist/adapter/z-stack/znp/definition.d.ts +2 -2
- package/dist/adapter/z-stack/znp/definition.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/definition.js +1111 -1111
- package/dist/adapter/z-stack/znp/index.d.ts +2 -2
- package/dist/adapter/z-stack/znp/tstype.d.ts +7 -7
- package/dist/adapter/z-stack/znp/tstype.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/utils.d.ts +1 -1
- package/dist/adapter/z-stack/znp/utils.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/utils.js +2 -2
- package/dist/adapter/z-stack/znp/znp.d.ts +7 -7
- package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/znp.js +46 -45
- package/dist/adapter/z-stack/znp/znp.js.map +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.d.ts +8 -8
- package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.js +6 -6
- package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
- package/dist/adapter/zboss/adapter/zbossAdapter.d.ts +11 -11
- package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -1
- package/dist/adapter/zboss/adapter/zbossAdapter.js +37 -36
- package/dist/adapter/zboss/adapter/zbossAdapter.js.map +1 -1
- package/dist/adapter/zboss/commands.d.ts +4 -6
- package/dist/adapter/zboss/commands.d.ts.map +1 -1
- package/dist/adapter/zboss/commands.js +321 -287
- package/dist/adapter/zboss/commands.js.map +1 -1
- package/dist/adapter/zboss/driver.d.ts +9 -9
- package/dist/adapter/zboss/driver.d.ts.map +1 -1
- package/dist/adapter/zboss/driver.js +25 -25
- package/dist/adapter/zboss/driver.js.map +1 -1
- package/dist/adapter/zboss/frame.d.ts +9 -9
- package/dist/adapter/zboss/frame.d.ts.map +1 -1
- package/dist/adapter/zboss/frame.js +15 -15
- package/dist/adapter/zboss/frame.js.map +1 -1
- package/dist/adapter/zboss/reader.d.ts +2 -2
- package/dist/adapter/zboss/reader.d.ts.map +1 -1
- package/dist/adapter/zboss/reader.js +6 -5
- package/dist/adapter/zboss/reader.js.map +1 -1
- package/dist/adapter/zboss/uart.d.ts +3 -3
- package/dist/adapter/zboss/uart.d.ts.map +1 -1
- package/dist/adapter/zboss/uart.js +36 -36
- package/dist/adapter/zboss/uart.js.map +1 -1
- package/dist/adapter/zboss/writer.d.ts +1 -1
- package/dist/adapter/zboss/writer.d.ts.map +1 -1
- package/dist/adapter/zboss/writer.js +3 -5
- package/dist/adapter/zboss/writer.js.map +1 -1
- package/dist/adapter/zigate/adapter/patchZdoBuffaloBE.js +2 -2
- package/dist/adapter/zigate/adapter/patchZdoBuffaloBE.js.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +14 -14
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +52 -53
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +6 -6
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.js +41 -23
- package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
- package/dist/adapter/zigate/driver/commandType.d.ts +2 -2
- package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/commandType.js +37 -37
- package/dist/adapter/zigate/driver/commandType.js.map +1 -1
- package/dist/adapter/zigate/driver/constants.d.ts +27 -200
- package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/constants.js +40 -236
- package/dist/adapter/zigate/driver/constants.js.map +1 -1
- package/dist/adapter/zigate/driver/frame.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/frame.js +4 -3
- package/dist/adapter/zigate/driver/frame.js.map +1 -1
- package/dist/adapter/zigate/driver/messageType.d.ts +1 -1
- package/dist/adapter/zigate/driver/messageType.js +76 -76
- package/dist/adapter/zigate/driver/ziGateObject.d.ts +3 -3
- package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.js +7 -6
- package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
- package/dist/adapter/zigate/driver/zigate.d.ts +8 -8
- package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/zigate.js +59 -54
- package/dist/adapter/zigate/driver/zigate.js.map +1 -1
- package/dist/adapter/zoh/adapter/utils.js +1 -1
- package/dist/adapter/zoh/adapter/zohAdapter.d.ts +13 -13
- package/dist/adapter/zoh/adapter/zohAdapter.d.ts.map +1 -1
- package/dist/adapter/zoh/adapter/zohAdapter.js +101 -67
- package/dist/adapter/zoh/adapter/zohAdapter.js.map +1 -1
- package/dist/buffalo/buffalo.d.ts +2 -2
- package/dist/buffalo/buffalo.js +4 -4
- package/dist/buffalo/buffalo.js.map +1 -1
- package/dist/buffalo/index.d.ts +1 -1
- package/dist/controller/controller.d.ts +7 -7
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/controller/controller.js +94 -98
- package/dist/controller/controller.js.map +1 -1
- package/dist/controller/database.d.ts +1 -1
- package/dist/controller/database.d.ts.map +1 -1
- package/dist/controller/database.js +9 -9
- package/dist/controller/database.js.map +1 -1
- package/dist/controller/events.d.ts +6 -6
- package/dist/controller/events.d.ts.map +1 -1
- package/dist/controller/greenPower.d.ts +21 -21
- package/dist/controller/greenPower.d.ts.map +1 -1
- package/dist/controller/greenPower.js +41 -41
- package/dist/controller/greenPower.js.map +1 -1
- package/dist/controller/helpers/index.d.ts +1 -1
- package/dist/controller/helpers/request.d.ts +2 -2
- package/dist/controller/helpers/request.d.ts.map +1 -1
- package/dist/controller/helpers/request.js +31 -27
- package/dist/controller/helpers/request.js.map +1 -1
- package/dist/controller/helpers/requestQueue.d.ts +3 -3
- package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
- package/dist/controller/helpers/requestQueue.js +20 -20
- package/dist/controller/helpers/requestQueue.js.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.d.ts +2 -2
- package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.js +1 -1
- package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
- package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +6 -4
- package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts.map +1 -1
- package/dist/controller/helpers/zclTransactionSequenceNumber.js +6 -5
- package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +1 -1
- package/dist/controller/index.d.ts +1 -1
- package/dist/controller/model/device.d.ts +23 -19
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +153 -128
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts +11 -11
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +84 -67
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/controller/model/entity.d.ts +3 -3
- package/dist/controller/model/entity.d.ts.map +1 -1
- package/dist/controller/model/group.d.ts +4 -4
- package/dist/controller/model/group.d.ts.map +1 -1
- package/dist/controller/model/group.js +21 -9
- package/dist/controller/model/group.js.map +1 -1
- package/dist/controller/model/index.d.ts +4 -4
- package/dist/controller/touchlink.d.ts +1 -1
- package/dist/controller/touchlink.d.ts.map +1 -1
- package/dist/controller/touchlink.js +11 -11
- package/dist/controller/tstype.d.ts +3 -3
- package/dist/index.d.ts +10 -10
- package/dist/models/backup-storage-legacy.d.ts +14 -16
- package/dist/models/backup-storage-legacy.d.ts.map +1 -1
- package/dist/models/backup-storage-unified.d.ts +1 -1
- package/dist/models/backup.d.ts +2 -2
- package/dist/models/backup.d.ts.map +1 -1
- package/dist/models/index.d.ts +4 -4
- package/dist/utils/backup.d.ts +1 -1
- package/dist/utils/backup.d.ts.map +1 -1
- package/dist/utils/backup.js +26 -26
- package/dist/utils/backup.js.map +1 -1
- package/dist/utils/index.d.ts +5 -5
- package/dist/utils/logger.js +3 -3
- package/dist/utils/patchBigIntSerialization.js +1 -1
- package/dist/utils/patchBigIntSerialization.js.map +1 -1
- package/dist/utils/queue.d.ts.map +1 -1
- package/dist/utils/queue.js +1 -0
- package/dist/utils/queue.js.map +1 -1
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +5 -4
- package/dist/utils/utils.js.map +1 -1
- package/dist/utils/waitress.d.ts +1 -1
- package/dist/utils/waitress.js +3 -3
- package/dist/zspec/consts.d.ts +1 -1
- package/dist/zspec/consts.d.ts.map +1 -1
- package/dist/zspec/consts.js +1 -1
- package/dist/zspec/index.d.ts +3 -3
- package/dist/zspec/tstypes.d.ts +1 -1
- package/dist/zspec/utils.d.ts +4 -4
- package/dist/zspec/utils.d.ts.map +1 -1
- package/dist/zspec/utils.js +9 -13
- package/dist/zspec/utils.js.map +1 -1
- package/dist/zspec/zcl/buffaloZcl.d.ts +3 -3
- package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
- package/dist/zspec/zcl/buffaloZcl.js +127 -84
- package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
- package/dist/zspec/zcl/definition/cluster.d.ts +1 -1
- package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/cluster.js +894 -893
- package/dist/zspec/zcl/definition/cluster.js.map +1 -1
- package/dist/zspec/zcl/definition/consts.js +7 -7
- package/dist/zspec/zcl/definition/foundation.d.ts +3 -3
- package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/foundation.js +88 -89
- package/dist/zspec/zcl/definition/foundation.js.map +1 -1
- package/dist/zspec/zcl/definition/manufacturerCode.d.ts +1 -1
- package/dist/zspec/zcl/definition/manufacturerCode.js +1 -1
- package/dist/zspec/zcl/definition/manufacturerCode.js.map +1 -1
- package/dist/zspec/zcl/definition/status.d.ts +3 -3
- package/dist/zspec/zcl/definition/status.js +3 -3
- package/dist/zspec/zcl/definition/tstype.d.ts +3 -3
- package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
- package/dist/zspec/zcl/index.d.ts +10 -10
- package/dist/zspec/zcl/utils.d.ts +3 -3
- package/dist/zspec/zcl/utils.d.ts.map +1 -1
- package/dist/zspec/zcl/utils.js +18 -21
- package/dist/zspec/zcl/utils.js.map +1 -1
- package/dist/zspec/zcl/zclFrame.d.ts +7 -7
- package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
- package/dist/zspec/zcl/zclFrame.js +38 -41
- package/dist/zspec/zcl/zclFrame.js.map +1 -1
- package/dist/zspec/zcl/zclHeader.d.ts +2 -2
- package/dist/zspec/zcl/zclHeader.d.ts.map +1 -1
- package/dist/zspec/zcl/zclHeader.js +3 -3
- package/dist/zspec/zcl/zclStatusError.d.ts +1 -1
- package/dist/zspec/zdo/buffaloZdo.d.ts +7 -7
- package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -1
- package/dist/zspec/zdo/buffaloZdo.js +4 -4
- package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
- package/dist/zspec/zdo/definition/status.d.ts +1 -1
- package/dist/zspec/zdo/definition/status.js +1 -1
- package/dist/zspec/zdo/definition/tstypes.d.ts +48 -48
- package/dist/zspec/zdo/definition/tstypes.d.ts.map +1 -1
- package/dist/zspec/zdo/index.d.ts +7 -7
- package/dist/zspec/zdo/utils.d.ts +2 -2
- package/dist/zspec/zdo/utils.d.ts.map +1 -1
- package/dist/zspec/zdo/utils.js +1 -1
- package/dist/zspec/zdo/utils.js.map +1 -1
- package/dist/zspec/zdo/zdoStatusError.d.ts +1 -1
- package/examples/join-and-log.js +5 -5
- package/package.json +6 -13
- package/src/adapter/adapter.ts +189 -0
- package/src/adapter/adapterDiscovery.ts +653 -0
- package/src/adapter/const.ts +12 -0
- package/src/adapter/deconz/adapter/deconzAdapter.ts +768 -0
- package/src/adapter/deconz/driver/constants.ts +180 -0
- package/src/adapter/deconz/driver/driver.ts +900 -0
- package/src/adapter/deconz/driver/frame.ts +11 -0
- package/src/adapter/deconz/driver/frameParser.ts +557 -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 +2266 -0
- package/src/adapter/ember/adapter/endpoints.ts +86 -0
- package/src/adapter/ember/adapter/oneWaitress.ts +322 -0
- package/src/adapter/ember/adapter/tokensManager.ts +782 -0
- package/src/adapter/ember/consts.ts +178 -0
- package/src/adapter/ember/enums.ts +2123 -0
- package/src/adapter/ember/ezsp/buffalo.ts +1397 -0
- package/src/adapter/ember/ezsp/consts.ts +148 -0
- package/src/adapter/ember/ezsp/enums.ts +1087 -0
- package/src/adapter/ember/ezsp/ezsp.ts +8985 -0
- package/src/adapter/ember/ezspError.ts +10 -0
- package/src/adapter/ember/types.ts +866 -0
- package/src/adapter/ember/uart/ash.ts +1969 -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 +48 -0
- package/src/adapter/ember/uart/queues.ts +247 -0
- package/src/adapter/ember/uart/writer.ts +53 -0
- package/src/adapter/ember/utils/initters.ts +58 -0
- package/src/adapter/ember/utils/math.ts +73 -0
- package/src/adapter/events.ts +21 -0
- package/src/adapter/ezsp/adapter/backup.ts +109 -0
- package/src/adapter/ezsp/adapter/ezspAdapter.ts +614 -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/socketPortUtils.ts +16 -0
- package/src/adapter/tstype.ts +78 -0
- package/src/adapter/z-stack/adapter/adapter-backup.ts +519 -0
- package/src/adapter/z-stack/adapter/adapter-nv-memory.ts +457 -0
- package/src/adapter/z-stack/adapter/endpoints.ts +57 -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 +1190 -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 +56 -0
- package/src/adapter/z-stack/unpi/writer.ts +21 -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 +342 -0
- package/src/adapter/z-stack/znp/zpiObject.ts +148 -0
- package/src/adapter/zboss/adapter/zbossAdapter.ts +527 -0
- package/src/adapter/zboss/commands.ts +1184 -0
- package/src/adapter/zboss/consts.ts +9 -0
- package/src/adapter/zboss/driver.ts +423 -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 +27 -0
- package/src/adapter/zigate/adapter/zigateAdapter.ts +618 -0
- package/src/adapter/zigate/driver/LICENSE +17 -0
- package/src/adapter/zigate/driver/buffaloZiGate.ts +212 -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 +426 -0
- package/src/adapter/zoh/adapter/utils.ts +27 -0
- package/src/adapter/zoh/adapter/zohAdapter.ts +837 -0
- package/src/buffalo/buffalo.ts +335 -0
- package/src/buffalo/index.ts +1 -0
- package/src/controller/controller.ts +1048 -0
- package/src/controller/database.ts +124 -0
- package/src/controller/events.ts +51 -0
- package/src/controller/greenPower.ts +603 -0
- package/src/controller/helpers/index.ts +1 -0
- package/src/controller/helpers/request.ts +94 -0
- package/src/controller/helpers/requestQueue.ts +125 -0
- package/src/controller/helpers/zclFrameConverter.ts +51 -0
- package/src/controller/helpers/zclTransactionSequenceNumber.ts +19 -0
- package/src/controller/index.ts +6 -0
- package/src/controller/model/device.ts +1320 -0
- package/src/controller/model/endpoint.ts +1040 -0
- package/src/controller/model/entity.ts +23 -0
- package/src/controller/model/group.ts +333 -0
- package/src/controller/model/index.ts +4 -0
- package/src/controller/touchlink.ts +189 -0
- package/src/controller/tstype.ts +39 -0
- package/src/index.ts +12 -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/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 +76 -0
- package/src/utils/types.d.ts +3 -0
- package/src/utils/utils.ts +20 -0
- package/src/utils/wait.ts +5 -0
- package/src/utils/waitress.ts +95 -0
- package/src/zspec/consts.ts +84 -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 +308 -0
- package/src/zspec/zcl/buffaloZcl.ts +1133 -0
- package/src/zspec/zcl/definition/cluster.ts +5398 -0
- package/src/zspec/zcl/definition/consts.ts +24 -0
- package/src/zspec/zcl/definition/enums.ts +194 -0
- package/src/zspec/zcl/definition/foundation.ts +301 -0
- package/src/zspec/zcl/definition/manufacturerCode.ts +729 -0
- package/src/zspec/zcl/definition/status.ts +69 -0
- package/src/zspec/zcl/definition/tstype.ts +236 -0
- package/src/zspec/zcl/index.ts +10 -0
- package/src/zspec/zcl/utils.ts +342 -0
- package/src/zspec/zcl/zclFrame.ts +336 -0
- package/src/zspec/zcl/zclHeader.ts +102 -0
- package/src/zspec/zcl/zclStatusError.ts +10 -0
- package/src/zspec/zdo/buffaloZdo.ts +2345 -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 +1062 -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 +3449 -0
- package/test/adapter/ember/ezsp.test.ts +386 -0
- package/test/adapter/ember/ezspBuffalo.test.ts +92 -0
- package/test/adapter/ember/ezspError.test.ts +11 -0
- package/test/adapter/ember/math.test.ts +205 -0
- package/test/adapter/ezsp/frame.test.ts +29 -0
- package/test/adapter/ezsp/uart.test.ts +180 -0
- package/test/adapter/z-stack/adapter.test.ts +3985 -0
- package/test/adapter/z-stack/constants.test.ts +32 -0
- package/test/adapter/z-stack/structs.test.ts +114 -0
- package/test/adapter/z-stack/unpi.test.ts +212 -0
- package/test/adapter/z-stack/znp.test.ts +1284 -0
- package/test/adapter/zboss/fixZdoResponse.test.ts +178 -0
- package/test/adapter/zigate/patchZdoBuffaloBE.test.ts +80 -0
- package/test/adapter/zigate/zdo.test.ts +187 -0
- package/test/adapter/zoh/utils.test.ts +35 -0
- package/test/adapter/zoh/zohAdapter.test.ts +1306 -0
- package/test/buffalo.test.ts +430 -0
- package/test/controller.test.ts +10005 -0
- package/test/greenpower.test.ts +1421 -0
- package/test/mockAdapters.ts +65 -0
- package/test/mockDevices.ts +472 -0
- package/test/testUtils.ts +20 -0
- package/test/tsconfig.json +10 -0
- package/test/utils/math.ts +19 -0
- package/test/utils.test.ts +227 -0
- package/test/vitest.config.mts +25 -0
- package/test/zcl.test.ts +2832 -0
- package/test/zspec/utils.test.ts +131 -0
- package/test/zspec/zcl/buffalo.test.ts +1231 -0
- package/test/zspec/zcl/frame.test.ts +925 -0
- package/test/zspec/zcl/utils.test.ts +280 -0
- package/test/zspec/zdo/buffalo.test.ts +1849 -0
- package/test/zspec/zdo/utils.test.ts +240 -0
- package/.prettierignore +0 -2
- package/.prettierrc +0 -26
- package/eslint.config.mjs +0 -32
|
@@ -59,7 +59,7 @@ const initters_1 = require("../utils/initters");
|
|
|
59
59
|
const math_1 = require("../utils/math");
|
|
60
60
|
const endpoints_1 = require("./endpoints");
|
|
61
61
|
const oneWaitress_1 = require("./oneWaitress");
|
|
62
|
-
const NS =
|
|
62
|
+
const NS = "zh:ember";
|
|
63
63
|
var NetworkInitAction;
|
|
64
64
|
(function (NetworkInitAction) {
|
|
65
65
|
/** Ain't that nice! */
|
|
@@ -101,7 +101,7 @@ const QUEUE_NETWORK_DOWN_DEFER_MSEC = 1500;
|
|
|
101
101
|
* https://github.com/SiliconLabs/UnifySDK/blob/main/applications/zigbeed/project_files/zigbeed.slcp
|
|
102
102
|
*/
|
|
103
103
|
exports.DEFAULT_STACK_CONFIG = {
|
|
104
|
-
CONCENTRATOR_RAM_TYPE:
|
|
104
|
+
CONCENTRATOR_RAM_TYPE: "high",
|
|
105
105
|
CONCENTRATOR_MIN_TIME: 5, // zigpc: 10
|
|
106
106
|
CONCENTRATOR_MAX_TIME: 60, // zigpc: 60
|
|
107
107
|
CONCENTRATOR_ROUTE_ERROR_THRESHOLD: 3, // zigpc: 3
|
|
@@ -164,7 +164,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
164
164
|
this.manufacturerID = Zcl.ManufacturerCode.SILICON_LABORATORIES;
|
|
165
165
|
this.version = {
|
|
166
166
|
ezsp: 0,
|
|
167
|
-
revision:
|
|
167
|
+
revision: "unknown",
|
|
168
168
|
build: 0,
|
|
169
169
|
major: 0,
|
|
170
170
|
minor: 0,
|
|
@@ -181,66 +181,66 @@ class EmberAdapter extends __1.Adapter {
|
|
|
181
181
|
this.queue = new utils_1.Queue(this.adapterOptions.concurrent || 16); // ORed to avoid 0 (not checked in settings/queue constructor)
|
|
182
182
|
this.oneWaitress = new oneWaitress_1.EmberOneWaitress();
|
|
183
183
|
this.ezsp = new ezsp_1.Ezsp(serialPortOptions);
|
|
184
|
-
this.ezsp.on(
|
|
185
|
-
this.ezsp.on(
|
|
186
|
-
this.ezsp.on(
|
|
187
|
-
this.ezsp.on(
|
|
188
|
-
this.ezsp.on(
|
|
189
|
-
this.ezsp.on(
|
|
190
|
-
this.ezsp.once(
|
|
184
|
+
this.ezsp.on("zdoResponse", this.onZDOResponse.bind(this));
|
|
185
|
+
this.ezsp.on("incomingMessage", this.onIncomingMessage.bind(this));
|
|
186
|
+
this.ezsp.on("touchlinkMessage", this.onTouchlinkMessage.bind(this));
|
|
187
|
+
this.ezsp.on("stackStatus", this.onStackStatus.bind(this));
|
|
188
|
+
this.ezsp.on("trustCenterJoin", this.onTrustCenterJoin.bind(this));
|
|
189
|
+
this.ezsp.on("messageSent", this.onMessageSent.bind(this));
|
|
190
|
+
this.ezsp.once("ncpNeedsResetAndInit", this.onNcpNeedsResetAndInit.bind(this));
|
|
191
191
|
}
|
|
192
192
|
loadStackConfig() {
|
|
193
193
|
// store stack config in same dir as backup
|
|
194
|
-
const configPath = node_path_1.default.join(node_path_1.default.dirname(this.backupPath),
|
|
194
|
+
const configPath = node_path_1.default.join(node_path_1.default.dirname(this.backupPath), "stack_config.json");
|
|
195
195
|
try {
|
|
196
|
-
const customConfig = JSON.parse((0, node_fs_1.readFileSync)(configPath,
|
|
196
|
+
const customConfig = JSON.parse((0, node_fs_1.readFileSync)(configPath, "utf8"));
|
|
197
197
|
// set any undefined config to default
|
|
198
198
|
const config = { ...exports.DEFAULT_STACK_CONFIG, ...customConfig };
|
|
199
|
-
const inRange = (value, min, max) => (value ==
|
|
200
|
-
if (![
|
|
199
|
+
const inRange = (value, min, max) => !(value == null || value < min || value > max);
|
|
200
|
+
if (!["high", "low"].includes(config.CONCENTRATOR_RAM_TYPE)) {
|
|
201
201
|
config.CONCENTRATOR_RAM_TYPE = exports.DEFAULT_STACK_CONFIG.CONCENTRATOR_RAM_TYPE;
|
|
202
|
-
logger_1.logger.error(
|
|
202
|
+
logger_1.logger.error("[STACK CONFIG] Invalid CONCENTRATOR_RAM_TYPE, using default.", NS);
|
|
203
203
|
}
|
|
204
204
|
if (!inRange(config.CONCENTRATOR_MIN_TIME, 1, 60) || config.CONCENTRATOR_MIN_TIME >= config.CONCENTRATOR_MAX_TIME) {
|
|
205
205
|
config.CONCENTRATOR_MIN_TIME = exports.DEFAULT_STACK_CONFIG.CONCENTRATOR_MIN_TIME;
|
|
206
|
-
logger_1.logger.error(
|
|
206
|
+
logger_1.logger.error("[STACK CONFIG] Invalid CONCENTRATOR_MIN_TIME, using default.", NS);
|
|
207
207
|
}
|
|
208
208
|
if (!inRange(config.CONCENTRATOR_MAX_TIME, 30, 300) || config.CONCENTRATOR_MAX_TIME <= config.CONCENTRATOR_MIN_TIME) {
|
|
209
209
|
config.CONCENTRATOR_MAX_TIME = exports.DEFAULT_STACK_CONFIG.CONCENTRATOR_MAX_TIME;
|
|
210
|
-
logger_1.logger.error(
|
|
210
|
+
logger_1.logger.error("[STACK CONFIG] Invalid CONCENTRATOR_MAX_TIME, using default.", NS);
|
|
211
211
|
}
|
|
212
212
|
if (!inRange(config.CONCENTRATOR_ROUTE_ERROR_THRESHOLD, 1, 100)) {
|
|
213
213
|
config.CONCENTRATOR_ROUTE_ERROR_THRESHOLD = exports.DEFAULT_STACK_CONFIG.CONCENTRATOR_ROUTE_ERROR_THRESHOLD;
|
|
214
|
-
logger_1.logger.error(
|
|
214
|
+
logger_1.logger.error("[STACK CONFIG] Invalid CONCENTRATOR_ROUTE_ERROR_THRESHOLD, using default.", NS);
|
|
215
215
|
}
|
|
216
216
|
if (!inRange(config.CONCENTRATOR_DELIVERY_FAILURE_THRESHOLD, 1, 100)) {
|
|
217
217
|
config.CONCENTRATOR_DELIVERY_FAILURE_THRESHOLD = exports.DEFAULT_STACK_CONFIG.CONCENTRATOR_DELIVERY_FAILURE_THRESHOLD;
|
|
218
|
-
logger_1.logger.error(
|
|
218
|
+
logger_1.logger.error("[STACK CONFIG] Invalid CONCENTRATOR_DELIVERY_FAILURE_THRESHOLD, using default.", NS);
|
|
219
219
|
}
|
|
220
220
|
if (!inRange(config.CONCENTRATOR_MAX_HOPS, 0, 30)) {
|
|
221
221
|
config.CONCENTRATOR_MAX_HOPS = exports.DEFAULT_STACK_CONFIG.CONCENTRATOR_MAX_HOPS;
|
|
222
|
-
logger_1.logger.error(
|
|
222
|
+
logger_1.logger.error("[STACK CONFIG] Invalid CONCENTRATOR_MAX_HOPS, using default.", NS);
|
|
223
223
|
}
|
|
224
224
|
if (!inRange(config.MAX_END_DEVICE_CHILDREN, 6, 64)) {
|
|
225
225
|
config.MAX_END_DEVICE_CHILDREN = exports.DEFAULT_STACK_CONFIG.MAX_END_DEVICE_CHILDREN;
|
|
226
|
-
logger_1.logger.error(
|
|
226
|
+
logger_1.logger.error("[STACK CONFIG] Invalid MAX_END_DEVICE_CHILDREN, using default.", NS);
|
|
227
227
|
}
|
|
228
228
|
if (!inRange(config.TRANSIENT_DEVICE_TIMEOUT, 0, 65535)) {
|
|
229
229
|
config.TRANSIENT_DEVICE_TIMEOUT = exports.DEFAULT_STACK_CONFIG.TRANSIENT_DEVICE_TIMEOUT;
|
|
230
|
-
logger_1.logger.error(
|
|
230
|
+
logger_1.logger.error("[STACK CONFIG] Invalid TRANSIENT_DEVICE_TIMEOUT, using default.", NS);
|
|
231
231
|
}
|
|
232
232
|
if (!inRange(config.END_DEVICE_POLL_TIMEOUT, 0, 14)) {
|
|
233
233
|
config.END_DEVICE_POLL_TIMEOUT = exports.DEFAULT_STACK_CONFIG.END_DEVICE_POLL_TIMEOUT;
|
|
234
|
-
logger_1.logger.error(
|
|
234
|
+
logger_1.logger.error("[STACK CONFIG] Invalid END_DEVICE_POLL_TIMEOUT, using default.", NS);
|
|
235
235
|
}
|
|
236
236
|
if (!inRange(config.TRANSIENT_KEY_TIMEOUT_S, 0, 65535)) {
|
|
237
237
|
config.TRANSIENT_KEY_TIMEOUT_S = exports.DEFAULT_STACK_CONFIG.TRANSIENT_KEY_TIMEOUT_S;
|
|
238
|
-
logger_1.logger.error(
|
|
238
|
+
logger_1.logger.error("[STACK CONFIG] Invalid TRANSIENT_KEY_TIMEOUT_S, using default.", NS);
|
|
239
239
|
}
|
|
240
240
|
config.CCA_MODE = config.CCA_MODE ?? undefined; // always default to undefined
|
|
241
241
|
if (config.CCA_MODE && enums_1.IEEE802154CcaMode[config.CCA_MODE] === undefined) {
|
|
242
242
|
config.CCA_MODE = undefined;
|
|
243
|
-
logger_1.logger.error(
|
|
243
|
+
logger_1.logger.error("[STACK CONFIG] Invalid CCA_MODE, ignoring.", NS);
|
|
244
244
|
}
|
|
245
245
|
logger_1.logger.info(`Using stack config ${JSON.stringify(config)}.`, NS);
|
|
246
246
|
return config;
|
|
@@ -248,7 +248,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
248
248
|
catch {
|
|
249
249
|
/* empty */
|
|
250
250
|
}
|
|
251
|
-
logger_1.logger.info(
|
|
251
|
+
logger_1.logger.info("Using default stack config.", NS);
|
|
252
252
|
return exports.DEFAULT_STACK_CONFIG;
|
|
253
253
|
}
|
|
254
254
|
/**
|
|
@@ -261,25 +261,25 @@ class EmberAdapter extends __1.Adapter {
|
|
|
261
261
|
switch (status) {
|
|
262
262
|
case enums_1.SLStatus.NETWORK_UP: {
|
|
263
263
|
this.oneWaitress.resolveEvent(oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_UP);
|
|
264
|
-
logger_1.logger.info(
|
|
264
|
+
logger_1.logger.info("[STACK STATUS] Network up.", NS);
|
|
265
265
|
break;
|
|
266
266
|
}
|
|
267
267
|
case enums_1.SLStatus.NETWORK_DOWN: {
|
|
268
268
|
this.oneWaitress.resolveEvent(oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_DOWN);
|
|
269
|
-
logger_1.logger.info(
|
|
269
|
+
logger_1.logger.info("[STACK STATUS] Network down.", NS);
|
|
270
270
|
break;
|
|
271
271
|
}
|
|
272
272
|
case enums_1.SLStatus.ZIGBEE_NETWORK_OPENED: {
|
|
273
273
|
this.oneWaitress.resolveEvent(oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_OPENED);
|
|
274
|
-
logger_1.logger.info(
|
|
274
|
+
logger_1.logger.info("[STACK STATUS] Network opened.", NS);
|
|
275
275
|
break;
|
|
276
276
|
}
|
|
277
277
|
case enums_1.SLStatus.ZIGBEE_NETWORK_CLOSED: {
|
|
278
278
|
this.oneWaitress.resolveEvent(oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_CLOSED);
|
|
279
|
-
logger_1.logger.info(
|
|
279
|
+
logger_1.logger.info("[STACK STATUS] Network closed.", NS);
|
|
280
280
|
if (this.manufacturerCode !== DEFAULT_MANUFACTURER_CODE) {
|
|
281
281
|
await this.queue.execute(async () => {
|
|
282
|
-
logger_1.logger.debug(
|
|
282
|
+
logger_1.logger.debug("[WORKAROUND] Reverting coordinator manufacturer code to default.", NS);
|
|
283
283
|
await this.ezsp.ezspSetManufacturerCode(DEFAULT_MANUFACTURER_CODE);
|
|
284
284
|
this.manufacturerCode = DEFAULT_MANUFACTURER_CODE;
|
|
285
285
|
});
|
|
@@ -289,7 +289,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
289
289
|
case enums_1.SLStatus.ZIGBEE_CHANNEL_CHANGED: {
|
|
290
290
|
// invalidate cache
|
|
291
291
|
this.networkCache.parameters.radioChannel = consts_1.INVALID_RADIO_CHANNEL;
|
|
292
|
-
logger_1.logger.info(
|
|
292
|
+
logger_1.logger.info("[STACK STATUS] Channel changed.", NS);
|
|
293
293
|
break;
|
|
294
294
|
}
|
|
295
295
|
default: {
|
|
@@ -371,7 +371,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
371
371
|
* @param sender The sender of the response. Should match `payload.nodeId` in many responses.
|
|
372
372
|
* @param messageContents The content of the response.
|
|
373
373
|
*/
|
|
374
|
-
|
|
374
|
+
onZDOResponse(apsFrame, sender, messageContents) {
|
|
375
375
|
const result = Zdo.Buffalo.readResponse(this.hasZdoMessageOverhead, apsFrame.clusterId, messageContents);
|
|
376
376
|
if (apsFrame.clusterId === Zdo.ClusterId.NETWORK_ADDRESS_RESPONSE) {
|
|
377
377
|
// special case to properly resolve a NETWORK_ADDRESS_RESPONSE following a NETWORK_ADDRESS_REQUEST (based on EUI64 from ZDO payload)
|
|
@@ -383,7 +383,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
383
383
|
else {
|
|
384
384
|
this.oneWaitress.resolveZDO(sender, apsFrame, result);
|
|
385
385
|
}
|
|
386
|
-
this.emit(
|
|
386
|
+
this.emit("zdoResponse", apsFrame.clusterId, result);
|
|
387
387
|
}
|
|
388
388
|
/**
|
|
389
389
|
* Emitted from @see Ezsp.ezspIncomingMessageHandler @see Ezsp.ezspGpepIncomingMessageHandler
|
|
@@ -394,7 +394,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
394
394
|
* @param sender
|
|
395
395
|
* @param messageContents
|
|
396
396
|
*/
|
|
397
|
-
|
|
397
|
+
onIncomingMessage(type, apsFrame, lastHopLqi, sender, messageContents) {
|
|
398
398
|
const payload = {
|
|
399
399
|
clusterID: apsFrame.clusterId,
|
|
400
400
|
header: Zcl.Header.fromBuffer(messageContents),
|
|
@@ -407,18 +407,18 @@ class EmberAdapter extends __1.Adapter {
|
|
|
407
407
|
destinationEndpoint: apsFrame.destinationEndpoint,
|
|
408
408
|
};
|
|
409
409
|
this.oneWaitress.resolveZCL(payload);
|
|
410
|
-
this.emit(
|
|
410
|
+
this.emit("zclPayload", payload);
|
|
411
411
|
}
|
|
412
412
|
/**
|
|
413
413
|
* Emitted from @see Ezsp.ezspMacFilterMatchMessageHandler when the message is a valid InterPAN touchlink message.
|
|
414
414
|
*
|
|
415
|
-
* @param
|
|
415
|
+
* @param _sourcePanId
|
|
416
416
|
* @param sourceAddress
|
|
417
417
|
* @param groupId
|
|
418
418
|
* @param lastHopLqi
|
|
419
419
|
* @param messageContents
|
|
420
420
|
*/
|
|
421
|
-
|
|
421
|
+
onTouchlinkMessage(_sourcePanId, sourceAddress, groupId, lastHopLqi, messageContents) {
|
|
422
422
|
const endpoint = endpoints_1.FIXED_ENDPOINTS[0].endpoint;
|
|
423
423
|
const payload = {
|
|
424
424
|
clusterID: Zcl.Clusters.touchlink.ID,
|
|
@@ -432,7 +432,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
432
432
|
destinationEndpoint: endpoint,
|
|
433
433
|
};
|
|
434
434
|
this.oneWaitress.resolveZCL(payload);
|
|
435
|
-
this.emit(
|
|
435
|
+
this.emit("zclPayload", payload);
|
|
436
436
|
}
|
|
437
437
|
/**
|
|
438
438
|
* Emitted from @see Ezsp.ezspTrustCenterJoinHandler
|
|
@@ -450,7 +450,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
450
450
|
networkAddress: newNodeId,
|
|
451
451
|
ieeeAddr: newNodeEui64,
|
|
452
452
|
};
|
|
453
|
-
this.emit(
|
|
453
|
+
this.emit("deviceLeave", payload);
|
|
454
454
|
}
|
|
455
455
|
else {
|
|
456
456
|
if (policyDecision !== enums_1.EmberJoinDecision.DENY_JOIN) {
|
|
@@ -465,11 +465,11 @@ class EmberAdapter extends __1.Adapter {
|
|
|
465
465
|
logger_1.logger.debug(`[WORKAROUND] Setting coordinator manufacturer code to ${Zcl.ManufacturerCode[joinManufCode]}.`, NS);
|
|
466
466
|
await this.ezsp.ezspSetManufacturerCode(joinManufCode);
|
|
467
467
|
this.manufacturerCode = joinManufCode;
|
|
468
|
-
this.emit(
|
|
468
|
+
this.emit("deviceJoined", payload);
|
|
469
469
|
});
|
|
470
470
|
}
|
|
471
471
|
else {
|
|
472
|
-
this.emit(
|
|
472
|
+
this.emit("deviceJoined", payload);
|
|
473
473
|
}
|
|
474
474
|
}
|
|
475
475
|
else {
|
|
@@ -481,9 +481,9 @@ class EmberAdapter extends __1.Adapter {
|
|
|
481
481
|
await this.queue.execute(async () => {
|
|
482
482
|
// listed as per EmberCounterType
|
|
483
483
|
const ncpCounters = await this.ezsp.ezspReadAndClearCounters();
|
|
484
|
-
logger_1.logger.info(`[NCP COUNTERS] ${ncpCounters.join(
|
|
484
|
+
logger_1.logger.info(`[NCP COUNTERS] ${ncpCounters.join(",")}`, NS);
|
|
485
485
|
const ashCounters = this.ezsp.ash.readAndClearCounters();
|
|
486
|
-
logger_1.logger.info(`[ASH COUNTERS] ${ashCounters.join(
|
|
486
|
+
logger_1.logger.info(`[ASH COUNTERS] ${ashCounters.join(",")}`, NS);
|
|
487
487
|
});
|
|
488
488
|
}
|
|
489
489
|
/**
|
|
@@ -491,7 +491,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
491
491
|
* This is called by start and on internal reset.
|
|
492
492
|
*/
|
|
493
493
|
async initEzsp() {
|
|
494
|
-
let result =
|
|
494
|
+
let result = "resumed";
|
|
495
495
|
// NOTE: something deep in this call can throw too
|
|
496
496
|
const startResult = await this.ezsp.start();
|
|
497
497
|
if (startResult !== enums_1.EzspStatus.SUCCESS) {
|
|
@@ -536,7 +536,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
536
536
|
if (status !== enums_1.SLStatus.OK) {
|
|
537
537
|
throw new Error(`Failed to get network parameters with status=${enums_1.SLStatus[status]}.`);
|
|
538
538
|
}
|
|
539
|
-
if (this.adapterOptions.transmitPower !=
|
|
539
|
+
if (this.adapterOptions.transmitPower != null && parameters.radioTxPower !== this.adapterOptions.transmitPower) {
|
|
540
540
|
const status = await this.ezsp.ezspSetRadioPower(this.adapterOptions.transmitPower);
|
|
541
541
|
if (status !== enums_1.SLStatus.OK) {
|
|
542
542
|
// soft-fail, don't prevent start
|
|
@@ -564,7 +564,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
564
564
|
* (through a target node that is neither the trust center nor one of its neighboring routers.)
|
|
565
565
|
*/
|
|
566
566
|
async initNCPConcentrator() {
|
|
567
|
-
const status = await this.ezsp.ezspSetConcentrator(true, this.stackConfig.CONCENTRATOR_RAM_TYPE ===
|
|
567
|
+
const status = await this.ezsp.ezspSetConcentrator(true, this.stackConfig.CONCENTRATOR_RAM_TYPE === "low" ? consts_1.EMBER_LOW_RAM_CONCENTRATOR : consts_1.EMBER_HIGH_RAM_CONCENTRATOR, this.stackConfig.CONCENTRATOR_MIN_TIME, this.stackConfig.CONCENTRATOR_MAX_TIME, this.stackConfig.CONCENTRATOR_ROUTE_ERROR_THRESHOLD, this.stackConfig.CONCENTRATOR_DELIVERY_FAILURE_THRESHOLD, this.stackConfig.CONCENTRATOR_MAX_HOPS);
|
|
568
568
|
if (status !== enums_1.SLStatus.OK) {
|
|
569
569
|
throw new Error(`[CONCENTRATOR] Failed to set concentrator with status=${enums_1.SLStatus[status]}.`);
|
|
570
570
|
}
|
|
@@ -630,6 +630,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
630
630
|
throw new Error(`[INIT TC] Failed to set join policy to USE_PRECONFIGURED_KEY with status=${enums_1.SLStatus[status]}.`);
|
|
631
631
|
}
|
|
632
632
|
}
|
|
633
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
633
634
|
const configNetworkKey = Buffer.from(this.networkOptions.networkKey);
|
|
634
635
|
const networkInitStruct = {
|
|
635
636
|
bitmask: enums_1.EmberNetworkInitBitmask.PARENT_INFO_IN_TOKEN | enums_1.EmberNetworkInitBitmask.END_DEVICE_REJOIN_ON_REBOOT,
|
|
@@ -642,7 +643,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
642
643
|
let action = NetworkInitAction.DONE;
|
|
643
644
|
if (initStatus === enums_1.SLStatus.OK) {
|
|
644
645
|
// network
|
|
645
|
-
await this.oneWaitress.startWaitingForEvent({ eventName: oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_UP }, DEFAULT_NETWORK_REQUEST_TIMEOUT,
|
|
646
|
+
await this.oneWaitress.startWaitingForEvent({ eventName: oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_UP }, DEFAULT_NETWORK_REQUEST_TIMEOUT, "[INIT TC] Network init");
|
|
646
647
|
const [npStatus, nodeType, netParams] = await this.ezsp.ezspGetNetworkParameters();
|
|
647
648
|
logger_1.logger.debug(() => `[INIT TC] Current adapter network: nodeType=${enums_1.EmberNodeType[nodeType]} params=${JSON.stringify(netParams)}`, NS);
|
|
648
649
|
if (npStatus === enums_1.SLStatus.OK &&
|
|
@@ -667,12 +668,12 @@ class EmberAdapter extends __1.Adapter {
|
|
|
667
668
|
action = NetworkInitAction.LEAVE;
|
|
668
669
|
}
|
|
669
670
|
if (action === NetworkInitAction.LEAVE) {
|
|
670
|
-
logger_1.logger.info(
|
|
671
|
+
logger_1.logger.info("[INIT TC] Adapter network does not match config. Leaving network...", NS);
|
|
671
672
|
const leaveStatus = await this.ezsp.ezspLeaveNetwork();
|
|
672
673
|
if (leaveStatus !== enums_1.SLStatus.OK) {
|
|
673
674
|
throw new Error(`[INIT TC] Failed leave network request with status=${enums_1.SLStatus[leaveStatus]}.`);
|
|
674
675
|
}
|
|
675
|
-
await this.oneWaitress.startWaitingForEvent({ eventName: oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_DOWN }, DEFAULT_NETWORK_REQUEST_TIMEOUT,
|
|
676
|
+
await this.oneWaitress.startWaitingForEvent({ eventName: oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_DOWN }, DEFAULT_NETWORK_REQUEST_TIMEOUT, "[INIT TC] Leave network");
|
|
676
677
|
await (0, utils_1.wait)(200); // settle down
|
|
677
678
|
action = NetworkInitAction.LEFT;
|
|
678
679
|
}
|
|
@@ -680,8 +681,9 @@ class EmberAdapter extends __1.Adapter {
|
|
|
680
681
|
const backup = this.getStoredBackup();
|
|
681
682
|
if (initStatus === enums_1.SLStatus.NOT_JOINED || action === NetworkInitAction.LEFT) {
|
|
682
683
|
// no network
|
|
683
|
-
if (backup
|
|
684
|
+
if (backup !== undefined) {
|
|
684
685
|
if (this.networkOptions.panID === backup.networkOptions.panId &&
|
|
686
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
685
687
|
Buffer.from(this.networkOptions.extendedPanID).equals(backup.networkOptions.extendedPanId) &&
|
|
686
688
|
this.networkOptions.channelList.includes(backup.logicalChannel) &&
|
|
687
689
|
configNetworkKey.equals(backup.networkOptions.networkKey)) {
|
|
@@ -690,46 +692,67 @@ class EmberAdapter extends __1.Adapter {
|
|
|
690
692
|
}
|
|
691
693
|
else {
|
|
692
694
|
// config doesn't match backup
|
|
693
|
-
logger_1.logger.info(
|
|
695
|
+
logger_1.logger.info("[INIT TC] Config does not match backup.", NS);
|
|
694
696
|
action = NetworkInitAction.FORM_CONFIG;
|
|
695
697
|
}
|
|
696
698
|
}
|
|
697
699
|
else {
|
|
698
700
|
// no backup
|
|
699
|
-
logger_1.logger.info(
|
|
701
|
+
logger_1.logger.info("[INIT TC] No valid backup found.", NS);
|
|
700
702
|
action = NetworkInitAction.FORM_CONFIG;
|
|
701
703
|
}
|
|
702
704
|
}
|
|
703
705
|
//---- from here on, we assume everything is in place for whatever decision was taken above
|
|
704
|
-
let result =
|
|
706
|
+
let result = "resumed";
|
|
705
707
|
switch (action) {
|
|
706
708
|
case NetworkInitAction.FORM_BACKUP: {
|
|
707
|
-
logger_1.logger.info(
|
|
709
|
+
logger_1.logger.info("[INIT TC] Forming from backup.", NS);
|
|
708
710
|
// `backup` valid in this `action` path (not detected by TS)
|
|
709
711
|
/* v8 ignore start */
|
|
712
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
710
713
|
const keyList = backup.devices.map((device) => ({
|
|
711
714
|
deviceEui64: ZSpec.Utils.eui64BEBufferToHex(device.ieeeAddress),
|
|
715
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
712
716
|
key: { contents: device.linkKey.key },
|
|
717
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
713
718
|
outgoingFrameCounter: device.linkKey.txCounter,
|
|
719
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
714
720
|
incomingFrameCounter: device.linkKey.rxCounter,
|
|
715
721
|
}));
|
|
716
722
|
/* v8 ignore stop */
|
|
717
723
|
// before forming
|
|
718
724
|
await this.importLinkKeys(keyList);
|
|
719
|
-
await this.formNetwork(true /*from backup*/,
|
|
725
|
+
await this.formNetwork(true /*from backup*/,
|
|
726
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
727
|
+
backup.networkOptions.networkKey,
|
|
728
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
729
|
+
backup.networkKeyInfo.sequenceNumber,
|
|
730
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
731
|
+
backup.networkKeyInfo.frameCounter,
|
|
732
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
733
|
+
backup.networkOptions.panId,
|
|
734
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
735
|
+
Array.from(backup.networkOptions.extendedPanId),
|
|
736
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
737
|
+
backup.logicalChannel,
|
|
738
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
739
|
+
backup.ezsp.hashed_tclk, // valid from getStoredBackup
|
|
740
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
720
741
|
backup.networkUpdateId);
|
|
721
|
-
result =
|
|
742
|
+
result = "restored";
|
|
722
743
|
break;
|
|
723
744
|
}
|
|
724
745
|
case NetworkInitAction.FORM_CONFIG: {
|
|
725
|
-
logger_1.logger.info(
|
|
726
|
-
await this.formNetwork(false /*from config*/, configNetworkKey, 0, 0, this.networkOptions.panID,
|
|
746
|
+
logger_1.logger.info("[INIT TC] Forming from config.", NS);
|
|
747
|
+
await this.formNetwork(false /*from config*/, configNetworkKey, 0, 0, this.networkOptions.panID,
|
|
748
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
749
|
+
this.networkOptions.extendedPanID, this.networkOptions.channelList[0], (0, node_crypto_1.randomBytes)(consts_2.EMBER_ENCRYPTION_KEY_SIZE), // rnd TC link key
|
|
727
750
|
0);
|
|
728
|
-
result =
|
|
751
|
+
result = "reset";
|
|
729
752
|
break;
|
|
730
753
|
}
|
|
731
754
|
case NetworkInitAction.DONE: {
|
|
732
|
-
logger_1.logger.info(
|
|
755
|
+
logger_1.logger.info("[INIT TC] Adapter network matches config.", NS);
|
|
733
756
|
break;
|
|
734
757
|
}
|
|
735
758
|
}
|
|
@@ -748,7 +771,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
748
771
|
// return SLStatus.OK;
|
|
749
772
|
// }, logger.error, true);// no reject just log error if any, will retry next start, & prioritize so we know it'll run when expected
|
|
750
773
|
// }, 300000);
|
|
751
|
-
logger_1.logger.warning(
|
|
774
|
+
logger_1.logger.warning("[INIT TC] Network key frame counter is reaching its limit. A new network key will have to be instaured soon.", NS);
|
|
752
775
|
}
|
|
753
776
|
return result;
|
|
754
777
|
}
|
|
@@ -808,10 +831,10 @@ class EmberAdapter extends __1.Adapter {
|
|
|
808
831
|
if (status !== enums_1.SLStatus.OK) {
|
|
809
832
|
throw new Error(`[INIT FORM] Failed form network request with status=${enums_1.SLStatus[status]}.`);
|
|
810
833
|
}
|
|
811
|
-
await this.oneWaitress.startWaitingForEvent({ eventName: oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_UP }, DEFAULT_NETWORK_REQUEST_TIMEOUT,
|
|
834
|
+
await this.oneWaitress.startWaitingForEvent({ eventName: oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_UP }, DEFAULT_NETWORK_REQUEST_TIMEOUT, "[INIT FORM] Form network");
|
|
812
835
|
status = await this.ezsp.ezspStartWritingStackTokens();
|
|
813
836
|
logger_1.logger.debug(`[INIT FORM] Start writing stack tokens status=${enums_1.SLStatus[status]}.`, NS);
|
|
814
|
-
logger_1.logger.info(
|
|
837
|
+
logger_1.logger.info("[INIT FORM] New network formed!", NS);
|
|
815
838
|
}
|
|
816
839
|
/**
|
|
817
840
|
* Loads currently stored backup and returns it in internal backup model.
|
|
@@ -827,23 +850,21 @@ class EmberAdapter extends __1.Adapter {
|
|
|
827
850
|
catch (error) {
|
|
828
851
|
throw new Error(`[BACKUP] Coordinator backup is corrupted. (${error.stack})`);
|
|
829
852
|
}
|
|
830
|
-
if (data.metadata?.format ===
|
|
853
|
+
if (data.metadata?.format === "zigpy/open-coordinator-backup" && data.metadata?.version) {
|
|
831
854
|
if (data.metadata?.version !== 1) {
|
|
832
855
|
throw new Error(`[BACKUP] Unsupported open coordinator backup version (version=${data.metadata?.version}).`);
|
|
833
856
|
}
|
|
834
857
|
if (!data.stack_specific?.ezsp || !data.metadata.internal.ezspVersion) {
|
|
835
|
-
throw new Error(
|
|
858
|
+
throw new Error("[BACKUP] Current backup file is not for EmberZNet stack.");
|
|
836
859
|
}
|
|
837
860
|
if (data.metadata.internal.ezspVersion < BACKUP_OLDEST_SUPPORTED_EZSP_VERSION) {
|
|
838
861
|
(0, node_fs_1.renameSync)(this.backupPath, `${this.backupPath}.old`);
|
|
839
|
-
logger_1.logger.warning(
|
|
862
|
+
logger_1.logger.warning("[BACKUP] Current backup file is from an unsupported EZSP version. Renaming and ignoring.", NS);
|
|
840
863
|
return undefined;
|
|
841
864
|
}
|
|
842
865
|
return utils_1.BackupUtils.fromUnifiedBackup(data);
|
|
843
866
|
}
|
|
844
|
-
|
|
845
|
-
throw new Error(`[BACKUP] Unknown backup format.`);
|
|
846
|
-
}
|
|
867
|
+
throw new Error("[BACKUP] Unknown backup format.");
|
|
847
868
|
}
|
|
848
869
|
/**
|
|
849
870
|
* Export link keys for backup.
|
|
@@ -908,7 +929,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
908
929
|
? await this.ezsp.ezspEraseKeyTableEntry(i)
|
|
909
930
|
: await this.ezsp.ezspImportLinkKey(i, backupData[i].deviceEui64, backupData[i].key);
|
|
910
931
|
if (status !== enums_1.SLStatus.OK) {
|
|
911
|
-
throw new Error(`[BACKUP] Failed to ${i >= backupData.length ?
|
|
932
|
+
throw new Error(`[BACKUP] Failed to ${i >= backupData.length ? "erase" : "set"} key table entry at index ${i} with status=${enums_1.SLStatus[status]}.`);
|
|
912
933
|
}
|
|
913
934
|
}
|
|
914
935
|
logger_1.logger.info(`[BACKUP] Imported ${backupData.length} keys.`, NS);
|
|
@@ -921,7 +942,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
921
942
|
*/
|
|
922
943
|
async broadcastNetworkKeyUpdate() {
|
|
923
944
|
return await this.queue.execute(async () => {
|
|
924
|
-
logger_1.logger.warning(
|
|
945
|
+
logger_1.logger.warning("[TRUST CENTER] Performing a network key update. This might take a while and disrupt normal operation.", NS);
|
|
925
946
|
// zero-filled = let stack generate new random network key
|
|
926
947
|
let status = await this.ezsp.ezspBroadcastNextNetworkKey({ contents: Buffer.alloc(consts_2.EMBER_ENCRYPTION_KEY_SIZE) });
|
|
927
948
|
if (status !== enums_1.SLStatus.OK) {
|
|
@@ -941,9 +962,9 @@ class EmberAdapter extends __1.Adapter {
|
|
|
941
962
|
* Received when EZSP layer alerts of a problem that needs the NCP to be reset.
|
|
942
963
|
* @param status
|
|
943
964
|
*/
|
|
944
|
-
|
|
965
|
+
onNcpNeedsResetAndInit(status) {
|
|
945
966
|
logger_1.logger.error(`Adapter fatal error: ${enums_1.EzspStatus[status]}`, NS);
|
|
946
|
-
this.emit(
|
|
967
|
+
this.emit("disconnected");
|
|
947
968
|
}
|
|
948
969
|
//---- START Events
|
|
949
970
|
//---- END Events
|
|
@@ -1049,7 +1070,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1049
1070
|
const [status, versionStruct] = await this.ezsp.ezspGetVersionStruct();
|
|
1050
1071
|
if (status !== enums_1.SLStatus.OK) {
|
|
1051
1072
|
// Should never happen with support of only EZSP v13+
|
|
1052
|
-
throw new Error(
|
|
1073
|
+
throw new Error("NCP has old-style version number. Not supported.");
|
|
1053
1074
|
}
|
|
1054
1075
|
this.version = {
|
|
1055
1076
|
ezsp: ncpEzspProtocolVer,
|
|
@@ -1136,12 +1157,13 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1136
1157
|
* @return uint8_t The next device request sequence number
|
|
1137
1158
|
*/
|
|
1138
1159
|
nextZDORequestSequence() {
|
|
1139
|
-
|
|
1160
|
+
this.zdoRequestSequence = ++this.zdoRequestSequence & APPLICATION_ZDO_SEQUENCE_MASK;
|
|
1161
|
+
return this.zdoRequestSequence;
|
|
1140
1162
|
}
|
|
1141
1163
|
//---- END Ember ZDO
|
|
1142
1164
|
//-- START Adapter implementation
|
|
1143
1165
|
async start() {
|
|
1144
|
-
logger_1.logger.info(
|
|
1166
|
+
logger_1.logger.info("======== Ember Adapter Starting ========", NS);
|
|
1145
1167
|
const result = await this.initEzsp();
|
|
1146
1168
|
return result;
|
|
1147
1169
|
}
|
|
@@ -1149,7 +1171,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1149
1171
|
clearInterval(this.watchdogCountersHandle);
|
|
1150
1172
|
await this.ezsp.stop();
|
|
1151
1173
|
this.ezsp.removeAllListeners();
|
|
1152
|
-
logger_1.logger.info(
|
|
1174
|
+
logger_1.logger.info("======== Ember Adapter Stopped ========", NS);
|
|
1153
1175
|
}
|
|
1154
1176
|
async getCoordinatorIEEE() {
|
|
1155
1177
|
return await this.queue.execute(async () => {
|
|
@@ -1159,21 +1181,21 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1159
1181
|
});
|
|
1160
1182
|
}
|
|
1161
1183
|
async getCoordinatorVersion() {
|
|
1162
|
-
return { type:
|
|
1184
|
+
return await Promise.resolve({ type: "EmberZNet", meta: this.version });
|
|
1163
1185
|
}
|
|
1164
1186
|
// queued
|
|
1165
1187
|
async reset(type) {
|
|
1166
|
-
throw new Error(`Not supported '${type}'.`);
|
|
1167
1188
|
// NOTE: although this function is legacy atm, a couple of new untested EZSP functions that could also prove useful:
|
|
1168
1189
|
// this.ezsp.ezspTokenFactoryReset(true/*excludeOutgoingFC*/, true/*excludeBootCounter*/);
|
|
1169
1190
|
// this.ezsp.ezspResetNode()
|
|
1191
|
+
/* v8 ignore next */ // weird coverage bug
|
|
1192
|
+
await Promise.reject(new Error(`Not supported '${type}'.`));
|
|
1170
1193
|
}
|
|
1171
1194
|
async supportsBackup() {
|
|
1172
|
-
return true;
|
|
1195
|
+
return await Promise.resolve(true);
|
|
1173
1196
|
}
|
|
1174
1197
|
// queued
|
|
1175
|
-
|
|
1176
|
-
async backup(ieeeAddressesInDatabase) {
|
|
1198
|
+
async backup(_ieeeAddressesInDatabase) {
|
|
1177
1199
|
return await this.queue.execute(async () => {
|
|
1178
1200
|
// grab fresh version here, bypass cache
|
|
1179
1201
|
const [netStatus, , netParams] = await this.ezsp.ezspGetNetworkParameters();
|
|
@@ -1188,7 +1210,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1188
1210
|
throw new Error(`[BACKUP] Failed to get network keys info with status=${enums_1.SLStatus[netKeyStatus]}.`);
|
|
1189
1211
|
}
|
|
1190
1212
|
if (!netKeyInfo.networkKeySet) {
|
|
1191
|
-
throw new Error(
|
|
1213
|
+
throw new Error("[BACKUP] No network key set.");
|
|
1192
1214
|
}
|
|
1193
1215
|
/* v8 ignore next */
|
|
1194
1216
|
const keyList = ALLOW_APP_KEY_REQUESTS ? await this.exportLinkKeys() : [];
|
|
@@ -1228,12 +1250,12 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1228
1250
|
// },
|
|
1229
1251
|
securityLevel: consts_1.SECURITY_LEVEL_Z3,
|
|
1230
1252
|
networkUpdateId: netParams.nwkUpdateId,
|
|
1231
|
-
coordinatorIeeeAddress: Buffer.from(this.networkCache.eui64.substring(2) /*take out 0x*/,
|
|
1253
|
+
coordinatorIeeeAddress: Buffer.from(this.networkCache.eui64.substring(2) /*take out 0x*/, "hex").reverse(),
|
|
1232
1254
|
devices: keyList.map(
|
|
1233
1255
|
/* v8 ignore start */
|
|
1234
1256
|
(key) => ({
|
|
1235
1257
|
networkAddress: null, // not used for restore, no reason to make NCP calls for nothing
|
|
1236
|
-
ieeeAddress: Buffer.from(key.deviceEui64.substring(2) /*take out 0x*/,
|
|
1258
|
+
ieeeAddress: Buffer.from(key.deviceEui64.substring(2) /*take out 0x*/, "hex").reverse(),
|
|
1237
1259
|
isDirectChild: false, // not used
|
|
1238
1260
|
linkKey: {
|
|
1239
1261
|
key: key.key.contents,
|
|
@@ -1273,7 +1295,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1273
1295
|
// Add the key to the transient key table.
|
|
1274
1296
|
// This will be used while the DUT joins.
|
|
1275
1297
|
const impStatus = await this.ezsp.ezspImportTransientKey(ieeeAddress, { contents: hashed ? key : ZSpec.Utils.aes128MmoHash(key) });
|
|
1276
|
-
if (impStatus
|
|
1298
|
+
if (impStatus === enums_1.SLStatus.OK) {
|
|
1277
1299
|
logger_1.logger.debug(`[ADD INSTALL CODE] Success for '${ieeeAddress}'.`, NS);
|
|
1278
1300
|
}
|
|
1279
1301
|
else {
|
|
@@ -1282,7 +1304,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1282
1304
|
});
|
|
1283
1305
|
}
|
|
1284
1306
|
/** WARNING: Adapter impl. Starts timer immediately upon returning */
|
|
1285
|
-
waitFor(networkAddress, endpoint,
|
|
1307
|
+
waitFor(networkAddress, endpoint, _frameType, _direction, transactionSequenceNumber, clusterID, commandIdentifier, timeout) {
|
|
1286
1308
|
const sourceEndpointInfo = endpoints_1.FIXED_ENDPOINTS[0];
|
|
1287
1309
|
const waiter = this.oneWaitress.waitFor({
|
|
1288
1310
|
target: networkAddress,
|
|
@@ -1321,7 +1343,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1321
1343
|
let status;
|
|
1322
1344
|
let apsSequence;
|
|
1323
1345
|
if (ZSpec.Utils.isBroadcastAddress(networkAddress)) {
|
|
1324
|
-
logger_1.logger.debug(() => `~~~> [ZDO ${clusterName} BROADCAST to=${networkAddress} messageTag=${messageTag} payload=${payload.toString(
|
|
1346
|
+
logger_1.logger.debug(() => `~~~> [ZDO ${clusterName} BROADCAST to=${networkAddress} messageTag=${messageTag} payload=${payload.toString("hex")}]`, NS);
|
|
1325
1347
|
[status, apsSequence] = await this.ezsp.ezspSendBroadcast(ZSpec.NULL_NODE_ID, // alias
|
|
1326
1348
|
networkAddress, 0, // nwkSequence
|
|
1327
1349
|
apsFrame, ZDO_REQUEST_RADIUS, messageTag, payload);
|
|
@@ -1332,7 +1354,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1332
1354
|
}
|
|
1333
1355
|
}
|
|
1334
1356
|
else {
|
|
1335
|
-
logger_1.logger.debug(() => `~~~> [ZDO ${clusterName} UNICAST to=${ieeeAddress}:${networkAddress} messageTag=${messageTag} payload=${payload.toString(
|
|
1357
|
+
logger_1.logger.debug(() => `~~~> [ZDO ${clusterName} UNICAST to=${ieeeAddress}:${networkAddress} messageTag=${messageTag} payload=${payload.toString("hex")}]`, NS);
|
|
1336
1358
|
[status, apsSequence] = await this.ezsp.ezspSendUnicast(enums_1.EmberOutgoingMessageType.DIRECT, networkAddress, apsFrame, messageTag, payload);
|
|
1337
1359
|
apsFrame.sequence = apsSequence;
|
|
1338
1360
|
logger_1.logger.debug(`~~~> [SENT ZDO UNICAST messageTag=${messageTag} apsSequence=${apsSequence} status=${enums_1.SLStatus[status]}]`, NS);
|
|
@@ -1463,10 +1485,10 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1463
1485
|
if (status === enums_1.SLStatus.OK) {
|
|
1464
1486
|
break;
|
|
1465
1487
|
}
|
|
1466
|
-
|
|
1488
|
+
if (disableRecovery || i === QUEUE_MAX_SEND_ATTEMPTS) {
|
|
1467
1489
|
throw new Error(`~x~> [ZCL to=${ieeeAddr}:${networkAddress} apsFrame=${JSON.stringify(apsFrame)}] Failed to send request with status=${enums_1.SLStatus[status]}.`);
|
|
1468
1490
|
}
|
|
1469
|
-
|
|
1491
|
+
if (status === enums_1.SLStatus.ZIGBEE_MAX_MESSAGE_LIMIT_REACHED || status === enums_1.SLStatus.BUSY) {
|
|
1470
1492
|
await (0, utils_1.wait)(QUEUE_BUSY_DEFER_MSEC);
|
|
1471
1493
|
}
|
|
1472
1494
|
else if (status === enums_1.SLStatus.NETWORK_DOWN) {
|
|
@@ -1505,8 +1527,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1505
1527
|
return await this.queue.execute(async () => {
|
|
1506
1528
|
this.checkInterpanLock();
|
|
1507
1529
|
logger_1.logger.debug(() => `~~~> [ZCL GROUP apsFrame=${JSON.stringify(apsFrame)} header=${JSON.stringify(zclFrame.header)}]`, NS);
|
|
1508
|
-
//
|
|
1509
|
-
const [status, messageTag] = await this.ezsp.send(enums_1.EmberOutgoingMessageType.MULTICAST, groupID, // not used with MULTICAST
|
|
1530
|
+
const [status] = await this.ezsp.send(enums_1.EmberOutgoingMessageType.MULTICAST, groupID, // not used with MULTICAST
|
|
1510
1531
|
apsFrame, data, 0, // alias
|
|
1511
1532
|
0);
|
|
1512
1533
|
if (status !== enums_1.SLStatus.OK) {
|
|
@@ -1532,8 +1553,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1532
1553
|
return await this.queue.execute(async () => {
|
|
1533
1554
|
this.checkInterpanLock();
|
|
1534
1555
|
logger_1.logger.debug(() => `~~~> [ZCL BROADCAST apsFrame=${JSON.stringify(apsFrame)} header=${JSON.stringify(zclFrame.header)}]`, NS);
|
|
1535
|
-
//
|
|
1536
|
-
const [status, messageTag] = await this.ezsp.send(enums_1.EmberOutgoingMessageType.BROADCAST, destination, apsFrame, data, 0, // alias
|
|
1556
|
+
const [status] = await this.ezsp.send(enums_1.EmberOutgoingMessageType.BROADCAST, destination, apsFrame, data, 0, // alias
|
|
1537
1557
|
0);
|
|
1538
1558
|
if (status !== enums_1.SLStatus.OK) {
|
|
1539
1559
|
throw new Error(`~x~> [ZCL BROADCAST destination=${destination}] Failed to send with status=${enums_1.SLStatus[status]}.`);
|
|
@@ -1644,7 +1664,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1644
1664
|
//-- END Adapter implementation
|
|
1645
1665
|
checkInterpanLock() {
|
|
1646
1666
|
if (this.interpanLock) {
|
|
1647
|
-
throw new Error(
|
|
1667
|
+
throw new Error("[INTERPAN MODE] Cannot execute non-InterPAN commands.");
|
|
1648
1668
|
}
|
|
1649
1669
|
}
|
|
1650
1670
|
}
|