zigbee-herdsman 0.55.5 → 0.56.2
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/workflows/typedoc.yaml +38 -0
- package/.github/workflows/update_deps.yml +1 -1
- package/.prettierrc +18 -1
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +31 -0
- package/README.md +1 -1
- package/dist/adapter/adapter.d.ts +16 -8
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +5 -3
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +11 -11
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.js +103 -106
- package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/index.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/index.js +0 -2
- package/dist/adapter/deconz/adapter/index.js.map +1 -1
- package/dist/adapter/deconz/driver/driver.d.ts +13 -13
- package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/driver.js +126 -128
- package/dist/adapter/deconz/driver/driver.js.map +1 -1
- package/dist/adapter/deconz/driver/frame.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/frame.js +1 -1
- package/dist/adapter/deconz/driver/frame.js.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.d.ts +3 -1
- package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.js +52 -40
- package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
- package/dist/adapter/deconz/driver/parser.d.ts +3 -4
- package/dist/adapter/deconz/driver/parser.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/parser.js +4 -29
- package/dist/adapter/deconz/driver/parser.js.map +1 -1
- package/dist/adapter/deconz/driver/writer.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/writer.js +2 -2
- package/dist/adapter/deconz/driver/writer.js.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.d.ts +11 -21
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.js +77 -123
- package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.js +6 -3
- package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.d.ts +1 -1
- package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.js +3 -3
- package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
- package/dist/adapter/ember/enums.d.ts +22 -0
- package/dist/adapter/ember/enums.d.ts.map +1 -1
- package/dist/adapter/ember/enums.js +24 -1
- package/dist/adapter/ember/enums.js.map +1 -1
- package/dist/adapter/ember/ezsp/buffalo.d.ts +1 -3
- package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/buffalo.js +16 -37
- package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.d.ts +25 -41
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.js +67 -72
- package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
- package/dist/adapter/ember/types.d.ts +16 -23
- package/dist/adapter/ember/types.d.ts.map +1 -1
- package/dist/adapter/ember/uart/ash.d.ts +6 -22
- package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
- package/dist/adapter/ember/uart/ash.js +100 -117
- package/dist/adapter/ember/uart/ash.js.map +1 -1
- package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
- package/dist/adapter/ember/uart/parser.js +1 -1
- package/dist/adapter/ember/uart/parser.js.map +1 -1
- package/dist/adapter/ember/uart/queues.d.ts +9 -9
- package/dist/adapter/ember/uart/queues.d.ts.map +1 -1
- package/dist/adapter/ember/uart/queues.js +27 -26
- package/dist/adapter/ember/uart/queues.js.map +1 -1
- package/dist/adapter/ember/uart/writer.d.ts.map +1 -1
- package/dist/adapter/ember/uart/writer.js +1 -1
- package/dist/adapter/ember/uart/writer.js.map +1 -1
- 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/initters.js.map +1 -1
- package/dist/adapter/events.d.ts +1 -9
- package/dist/adapter/events.d.ts.map +1 -1
- package/dist/adapter/events.js +0 -10
- package/dist/adapter/events.js.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts +1 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.js +33 -10
- package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +7 -7
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +35 -45
- package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
- package/dist/adapter/ezsp/adapter/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/index.js +0 -2
- package/dist/adapter/ezsp/adapter/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/commands.d.ts +2 -2
- package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/commands.js +112 -112
- package/dist/adapter/ezsp/driver/commands.js.map +1 -1
- package/dist/adapter/ezsp/driver/driver.d.ts +2 -3
- package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/driver.js +21 -13
- package/dist/adapter/ezsp/driver/driver.js.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.d.ts +3 -3
- package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.js +8 -10
- package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
- package/dist/adapter/ezsp/driver/frame.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/frame.js +1 -1
- package/dist/adapter/ezsp/driver/frame.js.map +1 -1
- package/dist/adapter/ezsp/driver/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/index.js +0 -1
- package/dist/adapter/ezsp/driver/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.js +3 -3
- package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
- package/dist/adapter/ezsp/driver/parser.d.ts +1 -2
- package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/parser.js +3 -9
- package/dist/adapter/ezsp/driver/parser.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/basic.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/basic.js +0 -1
- package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/index.d.ts +4 -4
- package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/index.js +85 -86
- package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.js +1 -3
- package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.js +63 -3
- package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
- package/dist/adapter/ezsp/driver/uart.d.ts +2 -3
- package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/uart.js +9 -13
- package/dist/adapter/ezsp/driver/uart.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +3 -1
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +1 -2
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.d.ts +1 -15
- package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.js +2 -41
- package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/writer.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/writer.js +1 -1
- package/dist/adapter/ezsp/driver/writer.js.map +1 -1
- package/dist/adapter/serialPort.d.ts +7 -2
- package/dist/adapter/serialPort.d.ts.map +1 -1
- package/dist/adapter/serialPort.js +6 -2
- package/dist/adapter/serialPort.js.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.js +28 -21
- package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +1 -1
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +27 -14
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.js +10 -10
- package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +7 -7
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +40 -31
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +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 +1 -3
- 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.map +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-table.js +5 -0
- 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.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.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +5 -0
- 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.js +1 -2
- 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.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +5 -0
- 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.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 +12 -6
- package/dist/adapter/z-stack/structs/entries/has-configured.js.map +1 -1
- 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 +6 -2
- 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 +9 -3
- 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 +9 -3
- package/dist/adapter/z-stack/structs/entries/nwk-key.js.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.js +1 -2
- 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.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +5 -0
- 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.js +1 -2
- 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.map +1 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-table.js +5 -0
- package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +1 -1
- package/dist/adapter/z-stack/structs/struct.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/struct.js +16 -4
- package/dist/adapter/z-stack/structs/struct.js.map +1 -1
- package/dist/adapter/z-stack/structs/table.d.ts +1 -1
- package/dist/adapter/z-stack/structs/table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/table.js +17 -13
- package/dist/adapter/z-stack/structs/table.js.map +1 -1
- package/dist/adapter/z-stack/unpi/frame.d.ts +3 -3
- package/dist/adapter/z-stack/unpi/frame.d.ts.map +1 -1
- package/dist/adapter/z-stack/unpi/frame.js +1 -1
- package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
- package/dist/adapter/z-stack/unpi/parser.js +1 -1
- package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
- package/dist/adapter/z-stack/utils/network-options.d.ts.map +1 -1
- package/dist/adapter/z-stack/utils/network-options.js +1 -2
- package/dist/adapter/z-stack/utils/network-options.js.map +1 -1
- package/dist/adapter/z-stack/znp/znp.d.ts +5 -6
- package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/znp.js +21 -28
- package/dist/adapter/z-stack/znp/znp.js.map +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.js +2 -2
- package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
- package/dist/adapter/zigate/adapter/index.js +1 -2
- package/dist/adapter/zigate/adapter/index.js.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +9 -9
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +92 -118
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.js +4 -4
- package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
- package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/commandType.js +3 -2
- package/dist/adapter/zigate/driver/commandType.js.map +1 -1
- package/dist/adapter/zigate/driver/constants.d.ts +7 -1
- package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/constants.js +1 -2
- 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 +2 -3
- package/dist/adapter/zigate/driver/frame.js.map +1 -1
- package/dist/adapter/zigate/driver/messageType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/messageType.js +1 -2
- package/dist/adapter/zigate/driver/messageType.js.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.d.ts +5 -5
- package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.js +9 -10
- package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
- package/dist/adapter/zigate/driver/zigate.d.ts +7 -10
- package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/zigate.js +35 -40
- package/dist/adapter/zigate/driver/zigate.js.map +1 -1
- package/dist/controller/controller.d.ts +18 -6
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/controller/controller.js +95 -103
- package/dist/controller/controller.js.map +1 -1
- package/dist/controller/events.d.ts +2 -13
- package/dist/controller/events.d.ts.map +1 -1
- package/dist/controller/events.js +0 -13
- package/dist/controller/events.js.map +1 -1
- package/dist/controller/greenPower.d.ts +6 -2
- package/dist/controller/greenPower.d.ts.map +1 -1
- package/dist/controller/greenPower.js +26 -16
- package/dist/controller/greenPower.js.map +1 -1
- package/dist/controller/helpers/request.d.ts +1 -1
- package/dist/controller/helpers/request.d.ts.map +1 -1
- package/dist/controller/helpers/request.js.map +1 -1
- package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
- package/dist/controller/helpers/requestQueue.js +1 -1
- 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.map +1 -1
- package/dist/controller/index.d.ts.map +1 -1
- package/dist/controller/index.js.map +1 -1
- package/dist/controller/model/device.d.ts +31 -29
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +42 -30
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts +5 -2
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +96 -97
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/controller/model/entity.d.ts +5 -3
- package/dist/controller/model/entity.d.ts.map +1 -1
- package/dist/controller/model/entity.js +2 -2
- package/dist/controller/model/entity.js.map +1 -1
- package/dist/controller/model/group.d.ts +1 -0
- package/dist/controller/model/group.d.ts.map +1 -1
- package/dist/controller/model/group.js +36 -28
- package/dist/controller/model/group.js.map +1 -1
- package/dist/controller/touchlink.d.ts.map +1 -1
- package/dist/controller/touchlink.js +6 -5
- package/dist/controller/touchlink.js.map +1 -1
- package/dist/controller/tstype.d.ts +1 -4
- package/dist/controller/tstype.d.ts.map +1 -1
- package/dist/controller/tstype.js +0 -5
- package/dist/controller/tstype.js.map +1 -1
- package/dist/models/backup-storage-unified.d.ts +2 -2
- package/dist/models/backup-storage-unified.d.ts.map +1 -1
- package/dist/models/backup.d.ts +1 -1
- package/dist/models/backup.d.ts.map +1 -1
- package/dist/utils/backup.d.ts.map +1 -1
- package/dist/utils/backup.js +22 -55
- package/dist/utils/backup.js.map +1 -1
- package/dist/utils/index.d.ts +2 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -5
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/queue.d.ts.map +1 -1
- package/dist/utils/queue.js +8 -8
- package/dist/utils/queue.js.map +1 -1
- package/dist/utils/realpathSync.d.ts.map +1 -1
- package/dist/utils/realpathSync.js +1 -1
- package/dist/utils/realpathSync.js.map +1 -1
- package/dist/utils/utils.d.ts +5 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +24 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/zspec/consts.d.ts +1 -0
- package/dist/zspec/consts.d.ts.map +1 -1
- package/dist/zspec/consts.js +2 -1
- package/dist/zspec/consts.js.map +1 -1
- package/dist/zspec/index.js +0 -10
- package/dist/zspec/index.js.map +1 -1
- package/dist/zspec/utils.d.ts.map +1 -1
- package/dist/zspec/utils.js +7 -1
- package/dist/zspec/utils.js.map +1 -1
- package/dist/zspec/zcl/buffaloZcl.js +13 -13
- 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 +1 -1
- package/dist/zspec/zcl/definition/cluster.js.map +1 -1
- package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/foundation.js +1 -1
- package/dist/zspec/zcl/definition/foundation.js.map +1 -1
- package/dist/zspec/zcl/definition/tstype.d.ts +1 -1
- package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
- package/dist/zspec/zcl/utils.d.ts +1 -1
- package/dist/zspec/zcl/utils.d.ts.map +1 -1
- package/dist/zspec/zcl/utils.js +21 -20
- package/dist/zspec/zcl/utils.js.map +1 -1
- package/dist/zspec/zcl/zclFrame.d.ts +4 -4
- package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
- package/dist/zspec/zcl/zclFrame.js +10 -17
- 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/zclHeader.js.map +1 -1
- package/dist/zspec/zdo/buffaloZdo.d.ts +2 -2
- package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -1
- package/dist/zspec/zdo/buffaloZdo.js +12 -8
- package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
- package/dist/zspec/zdo/definition/tstypes.d.ts +1 -1
- package/dist/zspec/zdo/definition/tstypes.d.ts.map +1 -1
- package/eslint.config.mjs +32 -0
- package/package.json +12 -10
- package/tsconfig.json +1 -0
- package/.eslintignore +0 -3
- 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/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
|
@@ -28,9 +28,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.EmberAdapter = exports.DEFAULT_APS_OPTIONS = exports.DEFAULT_STACK_CONFIG = void 0;
|
|
30
30
|
const crypto_1 = require("crypto");
|
|
31
|
-
const es6_1 = __importDefault(require("fast-deep-equal/es6"));
|
|
32
31
|
const fs_1 = require("fs");
|
|
33
32
|
const path_1 = __importDefault(require("path"));
|
|
33
|
+
const es6_1 = __importDefault(require("fast-deep-equal/es6"));
|
|
34
34
|
const __1 = require("../..");
|
|
35
35
|
const utils_1 = require("../../../utils");
|
|
36
36
|
const logger_1 = require("../../../utils/logger");
|
|
@@ -38,7 +38,6 @@ const ZSpec = __importStar(require("../../../zspec"));
|
|
|
38
38
|
const Zcl = __importStar(require("../../../zspec/zcl"));
|
|
39
39
|
const Zdo = __importStar(require("../../../zspec/zdo"));
|
|
40
40
|
const buffaloZdo_1 = require("../../../zspec/zdo/buffaloZdo");
|
|
41
|
-
const events_1 = require("../../events");
|
|
42
41
|
const serialPortUtils_1 = __importDefault(require("../../serialPortUtils"));
|
|
43
42
|
const socketPortUtils_1 = __importDefault(require("../../socketPortUtils"));
|
|
44
43
|
const consts_1 = require("../consts");
|
|
@@ -103,7 +102,6 @@ const BACKUP_OLDEST_SUPPORTED_EZSP_VERSION = 12;
|
|
|
103
102
|
* NOTE: This is blocking the request queue, so we shouldn't go crazy high.
|
|
104
103
|
*/
|
|
105
104
|
const BROADCAST_NETWORK_KEY_SWITCH_WAIT_TIME = 15000;
|
|
106
|
-
const QUEUE_HIGH_COUNT = 4;
|
|
107
105
|
const QUEUE_MAX_SEND_ATTEMPTS = 3;
|
|
108
106
|
const QUEUE_BUSY_DEFER_MSEC = 500;
|
|
109
107
|
const QUEUE_NETWORK_DOWN_DEFER_MSEC = 1500;
|
|
@@ -126,6 +124,7 @@ exports.DEFAULT_STACK_CONFIG = {
|
|
|
126
124
|
TRANSIENT_DEVICE_TIMEOUT: 10000,
|
|
127
125
|
END_DEVICE_POLL_TIMEOUT: 8, // zigpc: 8
|
|
128
126
|
TRANSIENT_KEY_TIMEOUT_S: 300, // zigpc: 65535
|
|
127
|
+
CCA_MODE: undefined, // not set by default
|
|
129
128
|
};
|
|
130
129
|
/** Default behavior is to disable app key requests */
|
|
131
130
|
const ALLOW_APP_KEY_REQUESTS = false;
|
|
@@ -140,8 +139,8 @@ const TRUST_CENTER_ADDRESS_CACHE_SIZE = 2;
|
|
|
140
139
|
* Removing `ENABLE_ROUTE_DISCOVERY` leads to devices that won't reconnect/go offline, and various other issues. Keeping it for now.
|
|
141
140
|
*/
|
|
142
141
|
exports.DEFAULT_APS_OPTIONS = enums_1.EmberApsOption.RETRY | enums_1.EmberApsOption.ENABLE_ROUTE_DISCOVERY | enums_1.EmberApsOption.ENABLE_ADDRESS_DISCOVERY;
|
|
143
|
-
/** Time for a
|
|
144
|
-
const
|
|
142
|
+
/** Time for a request to get a callback response. ASH is 2400*6 for ACK timeout. */
|
|
143
|
+
const DEFAULT_REQUEST_TIMEOUT = 15000; // msec
|
|
145
144
|
/** Time for a network-related request to get a response (usually via event). */
|
|
146
145
|
const DEFAULT_NETWORK_REQUEST_TIMEOUT = 10000; // nothing on the network to bother requests, should be much faster than this
|
|
147
146
|
/** Time between watchdog counters reading/clearing */
|
|
@@ -183,17 +182,32 @@ class EmberAdapter extends __1.Adapter {
|
|
|
183
182
|
multicastTable;
|
|
184
183
|
constructor(networkOptions, serialPortOptions, backupPath, adapterOptions) {
|
|
185
184
|
super(networkOptions, serialPortOptions, backupPath, adapterOptions);
|
|
185
|
+
this.version = {
|
|
186
|
+
ezsp: 0,
|
|
187
|
+
revision: 'unknown',
|
|
188
|
+
build: 0,
|
|
189
|
+
major: 0,
|
|
190
|
+
minor: 0,
|
|
191
|
+
patch: 0,
|
|
192
|
+
special: 0,
|
|
193
|
+
type: enums_1.EmberVersionType.GA,
|
|
194
|
+
};
|
|
195
|
+
this.zdoRequestSequence = 0; // start at 1
|
|
196
|
+
this.interpanLock = false;
|
|
197
|
+
this.networkCache = (0, initters_1.initNetworkCache)();
|
|
198
|
+
this.manufacturerCode = DEFAULT_MANUFACTURER_CODE; // will be set in NCP in initEzsp
|
|
199
|
+
this.multicastTable = [];
|
|
186
200
|
this.stackConfig = this.loadStackConfig();
|
|
187
201
|
this.queue = new utils_1.Queue(this.adapterOptions.concurrent || 16); // ORed to avoid 0 (not checked in settings/queue constructor)
|
|
188
202
|
this.oneWaitress = new oneWaitress_1.EmberOneWaitress();
|
|
189
203
|
this.ezsp = new ezsp_1.Ezsp(serialPortOptions);
|
|
190
|
-
this.ezsp.on(
|
|
191
|
-
this.ezsp.on(
|
|
192
|
-
this.ezsp.on(
|
|
193
|
-
this.ezsp.on(
|
|
194
|
-
this.ezsp.on(
|
|
195
|
-
this.ezsp.on(
|
|
196
|
-
this.ezsp.
|
|
204
|
+
this.ezsp.on('zdoResponse', this.onZDOResponse.bind(this));
|
|
205
|
+
this.ezsp.on('incomingMessage', this.onIncomingMessage.bind(this));
|
|
206
|
+
this.ezsp.on('touchlinkMessage', this.onTouchlinkMessage.bind(this));
|
|
207
|
+
this.ezsp.on('stackStatus', this.onStackStatus.bind(this));
|
|
208
|
+
this.ezsp.on('trustCenterJoin', this.onTrustCenterJoin.bind(this));
|
|
209
|
+
this.ezsp.on('messageSent', this.onMessageSent.bind(this));
|
|
210
|
+
this.ezsp.once('ncpNeedsResetAndInit', this.onNcpNeedsResetAndInit.bind(this));
|
|
197
211
|
}
|
|
198
212
|
loadStackConfig() {
|
|
199
213
|
// store stack config in same dir as backup
|
|
@@ -243,10 +257,17 @@ class EmberAdapter extends __1.Adapter {
|
|
|
243
257
|
config.TRANSIENT_KEY_TIMEOUT_S = exports.DEFAULT_STACK_CONFIG.TRANSIENT_KEY_TIMEOUT_S;
|
|
244
258
|
logger_1.logger.error(`[STACK CONFIG] Invalid TRANSIENT_KEY_TIMEOUT_S, using default.`, NS);
|
|
245
259
|
}
|
|
260
|
+
config.CCA_MODE = config.CCA_MODE ?? undefined; // always default to undefined
|
|
261
|
+
if (config.CCA_MODE && enums_1.IEEE802154CcaMode[config.CCA_MODE] === undefined) {
|
|
262
|
+
config.CCA_MODE = undefined;
|
|
263
|
+
logger_1.logger.error(`[STACK CONFIG] Invalid CCA_MODE, ignoring.`, NS);
|
|
264
|
+
}
|
|
246
265
|
logger_1.logger.info(`Using stack config ${JSON.stringify(config)}.`, NS);
|
|
247
266
|
return config;
|
|
248
267
|
}
|
|
249
|
-
catch {
|
|
268
|
+
catch {
|
|
269
|
+
/* empty */
|
|
270
|
+
}
|
|
250
271
|
logger_1.logger.info(`Using default stack config.`, NS);
|
|
251
272
|
return exports.DEFAULT_STACK_CONFIG;
|
|
252
273
|
}
|
|
@@ -349,7 +370,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
349
370
|
catch (error) {
|
|
350
371
|
// remove to allow retry on next occurrence
|
|
351
372
|
this.multicastTable.splice(tableIdx, 1);
|
|
352
|
-
logger_1.logger.error(error, NS);
|
|
373
|
+
logger_1.logger.error(error.message, NS);
|
|
353
374
|
}
|
|
354
375
|
}
|
|
355
376
|
break;
|
|
@@ -370,13 +391,13 @@ class EmberAdapter extends __1.Adapter {
|
|
|
370
391
|
logger_1.logger.debug(`<~~~ [ZDO ${Zdo.ClusterId[apsFrame.clusterId]} from=${sender} ${payload ? JSON.stringify(payload) : 'OK'}]`, NS);
|
|
371
392
|
this.oneWaitress.resolveZDO(sender, apsFrame, payload);
|
|
372
393
|
if (apsFrame.clusterId === Zdo.ClusterId.NETWORK_ADDRESS_RESPONSE) {
|
|
373
|
-
this.emit(
|
|
394
|
+
this.emit('networkAddress', {
|
|
374
395
|
networkAddress: payload.nwkAddress,
|
|
375
396
|
ieeeAddr: payload.eui64,
|
|
376
397
|
});
|
|
377
398
|
}
|
|
378
399
|
else if (apsFrame.clusterId === Zdo.ClusterId.END_DEVICE_ANNOUNCE) {
|
|
379
|
-
this.emit(
|
|
400
|
+
this.emit('deviceAnnounce', {
|
|
380
401
|
networkAddress: payload.nwkAddress,
|
|
381
402
|
ieeeAddr: payload.eui64,
|
|
382
403
|
});
|
|
@@ -387,7 +408,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
387
408
|
}
|
|
388
409
|
}
|
|
389
410
|
/**
|
|
390
|
-
* Emitted from @see Ezsp.ezspIncomingMessageHandler
|
|
411
|
+
* Emitted from @see Ezsp.ezspIncomingMessageHandler @see Ezsp.ezspGpepIncomingMessageHandler
|
|
391
412
|
*
|
|
392
413
|
* @param type
|
|
393
414
|
* @param apsFrame
|
|
@@ -408,7 +429,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
408
429
|
destinationEndpoint: apsFrame.destinationEndpoint,
|
|
409
430
|
};
|
|
410
431
|
this.oneWaitress.resolveZCL(payload);
|
|
411
|
-
this.emit(
|
|
432
|
+
this.emit('zclPayload', payload);
|
|
412
433
|
}
|
|
413
434
|
/**
|
|
414
435
|
* Emitted from @see Ezsp.ezspMacFilterMatchMessageHandler when the message is a valid InterPAN touchlink message.
|
|
@@ -433,51 +454,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
433
454
|
destinationEndpoint: endpoint,
|
|
434
455
|
};
|
|
435
456
|
this.oneWaitress.resolveZCL(payload);
|
|
436
|
-
this.emit(
|
|
437
|
-
}
|
|
438
|
-
/**
|
|
439
|
-
* Emitted from @see Ezsp.ezspGpepIncomingMessageHandler
|
|
440
|
-
*
|
|
441
|
-
* @param sequenceNumber
|
|
442
|
-
* @param commandIdentifier
|
|
443
|
-
* @param sourceId
|
|
444
|
-
* @param frameCounter
|
|
445
|
-
* @param gpdCommandId
|
|
446
|
-
* @param gpdCommandPayload
|
|
447
|
-
* @param gpdLink
|
|
448
|
-
*/
|
|
449
|
-
async onGreenpowerMessage(sequenceNumber, commandIdentifier, sourceId, frameCounter, gpdCommandId, gpdCommandPayload, gpdLink) {
|
|
450
|
-
try {
|
|
451
|
-
const gpdHeader = Buffer.alloc(15);
|
|
452
|
-
gpdHeader.writeUInt8(0b00000001, 0); // frameControl: FrameType.SPECIFIC + Direction.CLIENT_TO_SERVER + disableDefaultResponse=false
|
|
453
|
-
gpdHeader.writeUInt8(sequenceNumber, 1); // transactionSequenceNumber
|
|
454
|
-
gpdHeader.writeUInt8(commandIdentifier, 2); // commandIdentifier
|
|
455
|
-
gpdHeader.writeUInt16LE(0, 3); // options XXX: bypassed, same as deconz https://github.com/Koenkk/zigbee-herdsman/pull/536
|
|
456
|
-
gpdHeader.writeUInt32LE(sourceId, 5); // srcID
|
|
457
|
-
// omitted: gpdIEEEAddr ieeeAddr
|
|
458
|
-
// omitted: gpdEndpoint uint8
|
|
459
|
-
gpdHeader.writeUInt32LE(frameCounter, 9); // frameCounter
|
|
460
|
-
gpdHeader.writeUInt8(gpdCommandId, 13); // commandID
|
|
461
|
-
gpdHeader.writeUInt8(gpdCommandPayload.length, 14); // payloadSize
|
|
462
|
-
const data = Buffer.concat([gpdHeader, gpdCommandPayload]);
|
|
463
|
-
const payload = {
|
|
464
|
-
header: Zcl.Header.fromBuffer(data),
|
|
465
|
-
data,
|
|
466
|
-
clusterID: Zcl.Clusters.greenPower.ID,
|
|
467
|
-
address: sourceId,
|
|
468
|
-
endpoint: ZSpec.GP_ENDPOINT,
|
|
469
|
-
linkquality: gpdLink,
|
|
470
|
-
groupID: this.greenPowerGroup,
|
|
471
|
-
wasBroadcast: true,
|
|
472
|
-
destinationEndpoint: ZSpec.GP_ENDPOINT,
|
|
473
|
-
};
|
|
474
|
-
this.oneWaitress.resolveZCL(payload);
|
|
475
|
-
this.emit(events_1.Events.zclPayload, payload);
|
|
476
|
-
}
|
|
477
|
-
catch (err) {
|
|
478
|
-
logger_1.logger.error(`<~x~ [GP] Failed creating ZCL payload. Skipping. ${err}`, NS);
|
|
479
|
-
return;
|
|
480
|
-
}
|
|
457
|
+
this.emit('zclPayload', payload);
|
|
481
458
|
}
|
|
482
459
|
/**
|
|
483
460
|
* Emitted from @see Ezsp.ezspTrustCenterJoinHandler
|
|
@@ -495,7 +472,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
495
472
|
networkAddress: newNodeId,
|
|
496
473
|
ieeeAddr: newNodeEui64,
|
|
497
474
|
};
|
|
498
|
-
this.emit(
|
|
475
|
+
this.emit('deviceLeave', payload);
|
|
499
476
|
}
|
|
500
477
|
else {
|
|
501
478
|
if (policyDecision !== enums_1.EmberJoinDecision.DENY_JOIN) {
|
|
@@ -510,11 +487,11 @@ class EmberAdapter extends __1.Adapter {
|
|
|
510
487
|
logger_1.logger.debug(`[WORKAROUND] Setting coordinator manufacturer code to ${Zcl.ManufacturerCode[joinManufCode]}.`, NS);
|
|
511
488
|
await this.ezsp.ezspSetManufacturerCode(joinManufCode);
|
|
512
489
|
this.manufacturerCode = joinManufCode;
|
|
513
|
-
this.emit(
|
|
490
|
+
this.emit('deviceJoined', payload);
|
|
514
491
|
});
|
|
515
492
|
}
|
|
516
493
|
else {
|
|
517
|
-
this.emit(
|
|
494
|
+
this.emit('deviceJoined', payload);
|
|
518
495
|
}
|
|
519
496
|
}
|
|
520
497
|
else {
|
|
@@ -531,17 +508,6 @@ class EmberAdapter extends __1.Adapter {
|
|
|
531
508
|
logger_1.logger.info(`[ASH COUNTERS] ${ashCounters.join(',')}`, NS);
|
|
532
509
|
});
|
|
533
510
|
}
|
|
534
|
-
initVariables() {
|
|
535
|
-
this.ezsp.removeAllListeners(ezsp_1.EzspEvents.NCP_NEEDS_RESET_AND_INIT);
|
|
536
|
-
clearInterval(this.watchdogCountersHandle);
|
|
537
|
-
this.queue.clear();
|
|
538
|
-
this.zdoRequestSequence = 0; // start at 1
|
|
539
|
-
this.interpanLock = false;
|
|
540
|
-
this.networkCache = (0, initters_1.initNetworkCache)();
|
|
541
|
-
this.manufacturerCode = DEFAULT_MANUFACTURER_CODE; // will be set in NCP in initEzsp
|
|
542
|
-
this.multicastTable = [];
|
|
543
|
-
this.ezsp.once(ezsp_1.EzspEvents.NCP_NEEDS_RESET_AND_INIT, this.onNcpNeedsResetAndInit.bind(this));
|
|
544
|
-
}
|
|
545
511
|
/**
|
|
546
512
|
* Proceed to execute the long list of commands required to setup comms between Host<>NCP.
|
|
547
513
|
* This is called by start and on internal reset.
|
|
@@ -575,6 +541,12 @@ class EmberAdapter extends __1.Adapter {
|
|
|
575
541
|
await this.emberSetEzspConfigValue(enums_2.EzspConfigId.MAX_END_DEVICE_CHILDREN, this.stackConfig.MAX_END_DEVICE_CHILDREN);
|
|
576
542
|
await this.emberSetEzspConfigValue(enums_2.EzspConfigId.END_DEVICE_POLL_TIMEOUT, this.stackConfig.END_DEVICE_POLL_TIMEOUT);
|
|
577
543
|
await this.emberSetEzspConfigValue(enums_2.EzspConfigId.TRANSIENT_KEY_TIMEOUT_S, this.stackConfig.TRANSIENT_KEY_TIMEOUT_S);
|
|
544
|
+
// XXX: temp-fix: forces a side-effect in the firmware that prevents broadcast issues in environments with unusual interferences
|
|
545
|
+
await this.emberSetEzspValue(enums_2.EzspValueId.CCA_THRESHOLD, 1, [0]);
|
|
546
|
+
if (this.stackConfig.CCA_MODE) {
|
|
547
|
+
// validated in `loadStackConfig`
|
|
548
|
+
await this.ezsp.ezspSetRadioIeee802154CcaMode(enums_1.IEEE802154CcaMode[this.stackConfig.CCA_MODE]);
|
|
549
|
+
}
|
|
578
550
|
// WARNING: From here on EZSP commands that affect memory allocation on the NCP should no longer be called (like resizing tables)
|
|
579
551
|
await this.registerFixedEndpoints();
|
|
580
552
|
this.clearNetworkCache();
|
|
@@ -726,7 +698,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
726
698
|
const backup = this.getStoredBackup();
|
|
727
699
|
if (initStatus === enums_1.SLStatus.NOT_JOINED || action === NetworkInitAction.LEFT) {
|
|
728
700
|
// no network
|
|
729
|
-
if (backup !=
|
|
701
|
+
if (backup != undefined) {
|
|
730
702
|
if (this.networkOptions.panID === backup.networkOptions.panId &&
|
|
731
703
|
Buffer.from(this.networkOptions.extendedPanID).equals(backup.networkOptions.extendedPanId) &&
|
|
732
704
|
this.networkOptions.channelList.includes(backup.logicalChannel) &&
|
|
@@ -751,6 +723,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
751
723
|
switch (action) {
|
|
752
724
|
case NetworkInitAction.FORM_BACKUP: {
|
|
753
725
|
logger_1.logger.info(`[INIT TC] Forming from backup.`, NS);
|
|
726
|
+
// `backup` valid in this `action` path (not detected by TS)
|
|
754
727
|
/* istanbul ignore next */
|
|
755
728
|
const keyList = backup.devices.map((device) => {
|
|
756
729
|
const octets = Array.from(device.ieeeAddress.reverse());
|
|
@@ -855,14 +828,14 @@ class EmberAdapter extends __1.Adapter {
|
|
|
855
828
|
*/
|
|
856
829
|
getStoredBackup() {
|
|
857
830
|
if (!(0, fs_1.existsSync)(this.backupPath)) {
|
|
858
|
-
return
|
|
831
|
+
return undefined;
|
|
859
832
|
}
|
|
860
833
|
let data;
|
|
861
834
|
try {
|
|
862
835
|
data = JSON.parse((0, fs_1.readFileSync)(this.backupPath).toString());
|
|
863
836
|
}
|
|
864
837
|
catch (error) {
|
|
865
|
-
throw new Error(`[BACKUP] Coordinator backup is corrupted. (${error.
|
|
838
|
+
throw new Error(`[BACKUP] Coordinator backup is corrupted. (${error.stack})`);
|
|
866
839
|
}
|
|
867
840
|
if (data.metadata?.format === 'zigpy/open-coordinator-backup' && data.metadata?.version) {
|
|
868
841
|
if (data.metadata?.version !== 1) {
|
|
@@ -874,7 +847,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
874
847
|
if (data.metadata.internal.ezspVersion < BACKUP_OLDEST_SUPPORTED_EZSP_VERSION) {
|
|
875
848
|
(0, fs_1.renameSync)(this.backupPath, `${this.backupPath}.old`);
|
|
876
849
|
logger_1.logger.warning(`[BACKUP] Current backup file is from an unsupported EZSP version. Renaming and ignoring.`, NS);
|
|
877
|
-
return
|
|
850
|
+
return undefined;
|
|
878
851
|
}
|
|
879
852
|
return utils_1.BackupUtils.fromUnifiedBackup(data);
|
|
880
853
|
}
|
|
@@ -987,23 +960,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
987
960
|
* @param status
|
|
988
961
|
*/
|
|
989
962
|
async onNcpNeedsResetAndInit(status) {
|
|
990
|
-
logger_1.logger.error(
|
|
991
|
-
|
|
992
|
-
logger_1.logger.info(`Request queue is high (${this.queue.count()}), triggering full restart to prevent stressing the adapter.`, NS);
|
|
993
|
-
this.emit(events_1.Events.disconnected);
|
|
994
|
-
}
|
|
995
|
-
else {
|
|
996
|
-
logger_1.logger.info(`Attempting adapter reset...`, NS);
|
|
997
|
-
try {
|
|
998
|
-
await this.stop();
|
|
999
|
-
await (0, utils_1.Wait)(500); // just because
|
|
1000
|
-
await this.start();
|
|
1001
|
-
}
|
|
1002
|
-
catch (err) {
|
|
1003
|
-
logger_1.logger.error(`Failed to reset and init adapter. ${err}`, NS);
|
|
1004
|
-
this.emit(events_1.Events.disconnected);
|
|
1005
|
-
}
|
|
1006
|
-
}
|
|
963
|
+
logger_1.logger.error(`Adapter fatal error: ${enums_1.EzspStatus[status]}`, NS);
|
|
964
|
+
this.emit('disconnected');
|
|
1007
965
|
}
|
|
1008
966
|
//---- START Events
|
|
1009
967
|
//---- END Events
|
|
@@ -1196,8 +1154,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1196
1154
|
*/
|
|
1197
1155
|
async emberPermitJoining(duration, broadcastMgmtPermitJoin) {
|
|
1198
1156
|
let status = await this.ezsp.ezspPermitJoining(duration);
|
|
1199
|
-
let apsFrame
|
|
1200
|
-
let messageTag
|
|
1157
|
+
let apsFrame;
|
|
1158
|
+
let messageTag;
|
|
1201
1159
|
logger_1.logger.debug(`Permit joining for ${duration} sec. status=${[status]}`, NS);
|
|
1202
1160
|
if (broadcastMgmtPermitJoin) {
|
|
1203
1161
|
// `authentication`: TC significance always 1 (zb specs)
|
|
@@ -1306,17 +1264,17 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1306
1264
|
static async autoDetectPath() {
|
|
1307
1265
|
const paths = await serialPortUtils_1.default.find(autoDetectDefinitions);
|
|
1308
1266
|
paths.sort((a, b) => (a < b ? -1 : 1));
|
|
1309
|
-
return paths.length > 0 ? paths[0] :
|
|
1267
|
+
return paths.length > 0 ? paths[0] : undefined;
|
|
1310
1268
|
}
|
|
1311
1269
|
async start() {
|
|
1312
1270
|
logger_1.logger.info(`======== Ember Adapter Starting ========`, NS);
|
|
1313
|
-
this.initVariables();
|
|
1314
1271
|
const result = await this.initEzsp();
|
|
1315
1272
|
return result;
|
|
1316
1273
|
}
|
|
1317
1274
|
async stop() {
|
|
1275
|
+
clearInterval(this.watchdogCountersHandle);
|
|
1318
1276
|
await this.ezsp.stop();
|
|
1319
|
-
this.
|
|
1277
|
+
this.ezsp.removeAllListeners();
|
|
1320
1278
|
logger_1.logger.info(`======== Ember Adapter Stopped ========`, NS);
|
|
1321
1279
|
}
|
|
1322
1280
|
// queued, non-InterPAN
|
|
@@ -1388,14 +1346,11 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1388
1346
|
if (nkStatus !== enums_1.SLStatus.OK) {
|
|
1389
1347
|
throw new Error(`[BACKUP] Failed to export Network Key with status=${enums_1.SLStatus[nkStatus]}.`);
|
|
1390
1348
|
}
|
|
1391
|
-
const zbChannels = Array.from(Array(ZSpec.NUM_802_15_4_CHANNELS), (e, i) => i + ZSpec.MIN_802_15_4_CHANNEL_NUMBER);
|
|
1392
1349
|
return {
|
|
1393
1350
|
networkOptions: {
|
|
1394
1351
|
panId: netParams.panId, // uint16_t
|
|
1395
1352
|
extendedPanId: Buffer.from(netParams.extendedPanId),
|
|
1396
|
-
channelList:
|
|
1397
|
-
.map(/* istanbul ignore next */ (c) => ((2 ** c) & netParams.channels ? c : null))
|
|
1398
|
-
.filter((x) => x),
|
|
1353
|
+
channelList: ZSpec.Utils.uint32MaskToChannels(netParams.channels),
|
|
1399
1354
|
networkKey: networkKey.contents,
|
|
1400
1355
|
networkKeyDistribute: false,
|
|
1401
1356
|
},
|
|
@@ -1570,7 +1525,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1570
1525
|
target: networkAddress,
|
|
1571
1526
|
apsFrame,
|
|
1572
1527
|
responseClusterId: Zdo.ClusterId.PERMIT_JOINING_RESPONSE,
|
|
1573
|
-
},
|
|
1528
|
+
}, DEFAULT_REQUEST_TIMEOUT);
|
|
1574
1529
|
});
|
|
1575
1530
|
}
|
|
1576
1531
|
else {
|
|
@@ -1618,7 +1573,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1618
1573
|
target: networkAddress,
|
|
1619
1574
|
apsFrame,
|
|
1620
1575
|
responseClusterId: Zdo.ClusterId.LQI_TABLE_RESPONSE,
|
|
1621
|
-
},
|
|
1576
|
+
}, DEFAULT_REQUEST_TIMEOUT);
|
|
1622
1577
|
for (const entry of result.entryList) {
|
|
1623
1578
|
neighbors.push({
|
|
1624
1579
|
ieeeAddr: entry.eui64,
|
|
@@ -1655,7 +1610,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1655
1610
|
target: networkAddress,
|
|
1656
1611
|
apsFrame,
|
|
1657
1612
|
responseClusterId: Zdo.ClusterId.ROUTING_TABLE_RESPONSE,
|
|
1658
|
-
},
|
|
1613
|
+
}, DEFAULT_REQUEST_TIMEOUT);
|
|
1659
1614
|
for (const entry of result.entryList) {
|
|
1660
1615
|
table.push({
|
|
1661
1616
|
destinationAddress: entry.destinationAddress,
|
|
@@ -1688,7 +1643,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1688
1643
|
target: networkAddress,
|
|
1689
1644
|
apsFrame,
|
|
1690
1645
|
responseClusterId: Zdo.ClusterId.NODE_DESCRIPTOR_RESPONSE,
|
|
1691
|
-
},
|
|
1646
|
+
}, DEFAULT_REQUEST_TIMEOUT);
|
|
1692
1647
|
let type = 'Unknown';
|
|
1693
1648
|
switch (result.logicalType) {
|
|
1694
1649
|
case 0x0:
|
|
@@ -1723,7 +1678,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1723
1678
|
target: networkAddress,
|
|
1724
1679
|
apsFrame,
|
|
1725
1680
|
responseClusterId: Zdo.ClusterId.ACTIVE_ENDPOINTS_RESPONSE,
|
|
1726
|
-
},
|
|
1681
|
+
}, DEFAULT_REQUEST_TIMEOUT);
|
|
1727
1682
|
return { endpoints: result.endpointList };
|
|
1728
1683
|
}, networkAddress);
|
|
1729
1684
|
}
|
|
@@ -1740,7 +1695,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1740
1695
|
target: networkAddress,
|
|
1741
1696
|
apsFrame,
|
|
1742
1697
|
responseClusterId: Zdo.ClusterId.SIMPLE_DESCRIPTOR_RESPONSE,
|
|
1743
|
-
},
|
|
1698
|
+
}, DEFAULT_REQUEST_TIMEOUT);
|
|
1744
1699
|
return {
|
|
1745
1700
|
profileID: result.profileId,
|
|
1746
1701
|
endpointID: result.endpoint,
|
|
@@ -1756,7 +1711,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1756
1711
|
this.checkInterpanLock();
|
|
1757
1712
|
const zdoPayload = buffaloZdo_1.BuffaloZdo.buildBindRequest(sourceIeeeAddress, sourceEndpoint, clusterID, type === 'group' ? Zdo.MULTICAST_BINDING : Zdo.UNICAST_BINDING, destinationAddressOrGroup, // not used with MULTICAST_BINDING
|
|
1758
1713
|
destinationAddressOrGroup, // not used with UNICAST_BINDING
|
|
1759
|
-
destinationEndpoint);
|
|
1714
|
+
destinationEndpoint ?? 0);
|
|
1760
1715
|
const [status, apsFrame] = await this.sendZDORequest(destinationNetworkAddress, Zdo.ClusterId.BIND_REQUEST, zdoPayload, exports.DEFAULT_APS_OPTIONS);
|
|
1761
1716
|
if (status !== enums_1.SLStatus.OK) {
|
|
1762
1717
|
throw new Error(`[ZDO] Failed bind request for '${destinationNetworkAddress}' destination '${destinationAddressOrGroup}' endpoint '${destinationEndpoint}' with status=${enums_1.SLStatus[status]}.`);
|
|
@@ -1765,7 +1720,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1765
1720
|
target: destinationNetworkAddress,
|
|
1766
1721
|
apsFrame,
|
|
1767
1722
|
responseClusterId: Zdo.ClusterId.BIND_RESPONSE,
|
|
1768
|
-
},
|
|
1723
|
+
}, DEFAULT_REQUEST_TIMEOUT);
|
|
1769
1724
|
}, destinationNetworkAddress);
|
|
1770
1725
|
}
|
|
1771
1726
|
// queued, non-InterPAN
|
|
@@ -1774,7 +1729,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1774
1729
|
this.checkInterpanLock();
|
|
1775
1730
|
const zdoPayload = buffaloZdo_1.BuffaloZdo.buildUnbindRequest(sourceIeeeAddress, sourceEndpoint, clusterID, type === 'group' ? Zdo.MULTICAST_BINDING : Zdo.UNICAST_BINDING, destinationAddressOrGroup, // not used with MULTICAST_BINDING
|
|
1776
1731
|
destinationAddressOrGroup, // not used with UNICAST_BINDING
|
|
1777
|
-
destinationEndpoint);
|
|
1732
|
+
destinationEndpoint ?? 0);
|
|
1778
1733
|
const [status, apsFrame] = await this.sendZDORequest(destinationNetworkAddress, Zdo.ClusterId.UNBIND_REQUEST, zdoPayload, exports.DEFAULT_APS_OPTIONS);
|
|
1779
1734
|
if (status !== enums_1.SLStatus.OK) {
|
|
1780
1735
|
throw new Error(`[ZDO] Failed unbind request for '${destinationNetworkAddress}' destination '${destinationAddressOrGroup}' endpoint '${destinationEndpoint}' with status=${enums_1.SLStatus[status]}.`);
|
|
@@ -1783,7 +1738,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1783
1738
|
target: destinationNetworkAddress,
|
|
1784
1739
|
apsFrame,
|
|
1785
1740
|
responseClusterId: Zdo.ClusterId.UNBIND_RESPONSE,
|
|
1786
|
-
},
|
|
1741
|
+
}, DEFAULT_REQUEST_TIMEOUT);
|
|
1787
1742
|
}, destinationNetworkAddress);
|
|
1788
1743
|
}
|
|
1789
1744
|
// queued, non-InterPAN
|
|
@@ -1799,7 +1754,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1799
1754
|
target: networkAddress,
|
|
1800
1755
|
apsFrame,
|
|
1801
1756
|
responseClusterId: Zdo.ClusterId.LEAVE_RESPONSE,
|
|
1802
|
-
},
|
|
1757
|
+
}, DEFAULT_REQUEST_TIMEOUT);
|
|
1803
1758
|
}, networkAddress);
|
|
1804
1759
|
}
|
|
1805
1760
|
//---- ZCL
|
|
@@ -1807,7 +1762,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1807
1762
|
async sendZclFrameToEndpoint(ieeeAddr, networkAddress, endpoint, zclFrame, timeout, disableResponse, disableRecovery, sourceEndpoint) {
|
|
1808
1763
|
const sourceEndpointInfo = (sourceEndpoint && endpoints_1.FIXED_ENDPOINTS.find((epi) => epi.endpoint === sourceEndpoint)) || endpoints_1.FIXED_ENDPOINTS[0];
|
|
1809
1764
|
const command = zclFrame.command;
|
|
1810
|
-
let commandResponseId
|
|
1765
|
+
let commandResponseId;
|
|
1811
1766
|
if (command.response !== undefined && disableResponse === false) {
|
|
1812
1767
|
commandResponseId = command.response;
|
|
1813
1768
|
}
|
|
@@ -1824,7 +1779,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1824
1779
|
sequence: 0, // set by stack
|
|
1825
1780
|
};
|
|
1826
1781
|
// don't RETRY if no response expected
|
|
1827
|
-
if (commandResponseId
|
|
1782
|
+
if (commandResponseId === undefined) {
|
|
1828
1783
|
apsFrame.options &= ~enums_1.EmberApsOption.RETRY;
|
|
1829
1784
|
}
|
|
1830
1785
|
const data = zclFrame.toBuffer();
|
|
@@ -1870,7 +1825,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1870
1825
|
}
|
|
1871
1826
|
logger_1.logger.debug(`~x~> [ZCL to=${networkAddress}] Failed to send request attempt ${i}/${QUEUE_MAX_SEND_ATTEMPTS} with status=${enums_1.SLStatus[status]}.`, NS);
|
|
1872
1827
|
}
|
|
1873
|
-
if (commandResponseId
|
|
1828
|
+
if (commandResponseId !== undefined) {
|
|
1874
1829
|
// NOTE: aps sequence number will have been set by send function
|
|
1875
1830
|
const result = await this.oneWaitress.startWaitingFor({
|
|
1876
1831
|
target: networkAddress,
|
|
@@ -1880,7 +1835,6 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1880
1835
|
}, timeout);
|
|
1881
1836
|
return result;
|
|
1882
1837
|
}
|
|
1883
|
-
return null;
|
|
1884
1838
|
}, networkAddress);
|
|
1885
1839
|
}
|
|
1886
1840
|
// queued, non-InterPAN
|
|
@@ -2015,7 +1969,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2015
1969
|
}
|
|
2016
1970
|
// NOTE: can use ezspRawTransmitCompleteHandler if needed here
|
|
2017
1971
|
const result = await this.oneWaitress.startWaitingFor({
|
|
2018
|
-
target:
|
|
1972
|
+
target: undefined,
|
|
2019
1973
|
apsFrame: apsFrame,
|
|
2020
1974
|
zclSequence: zclFrame.header.transactionSequenceNumber,
|
|
2021
1975
|
commandIdentifier: command.response,
|