@willieee802/zigbee-herdsman 0.19.21 → 0.36.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/.babelrc.js +0 -4
- package/.release-please-manifest.json +1 -2
- package/CHANGELOG.md +462 -0
- package/README.md +1 -1
- package/dist/adapter/adapter.d.ts +61 -61
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +158 -153
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +68 -68
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.js +1081 -1060
- package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/index.d.ts +2 -2
- package/dist/adapter/deconz/adapter/index.js +10 -10
- package/dist/adapter/deconz/driver/constants.d.ts +104 -104
- package/dist/adapter/deconz/driver/constants.js +55 -55
- package/dist/adapter/deconz/driver/driver.d.ts +81 -81
- package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/driver.js +750 -732
- package/dist/adapter/deconz/driver/driver.js.map +1 -1
- package/dist/adapter/deconz/driver/frame.d.ts +6 -6
- package/dist/adapter/deconz/driver/frame.js +13 -13
- package/dist/adapter/deconz/driver/frameParser.d.ts +2 -2
- package/dist/adapter/deconz/driver/frameParser.js +443 -443
- package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
- package/dist/adapter/deconz/driver/parser.d.ts +12 -12
- package/dist/adapter/deconz/driver/parser.js +63 -61
- package/dist/adapter/deconz/driver/parser.js.map +1 -1
- package/dist/adapter/deconz/driver/writer.d.ts +8 -8
- package/dist/adapter/deconz/driver/writer.js +44 -44
- package/dist/adapter/ember/adapter/emberAdapter.d.ts +810 -0
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/emberAdapter.js +2970 -0
- package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -0
- package/dist/adapter/ember/adapter/endpoints.d.ts +25 -0
- package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/endpoints.js +66 -0
- package/dist/adapter/ember/adapter/endpoints.js.map +1 -0
- package/dist/adapter/ember/adapter/index.d.ts +3 -0
- package/dist/adapter/ember/adapter/index.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/index.js +6 -0
- package/dist/adapter/ember/adapter/index.js.map +1 -0
- package/dist/adapter/ember/adapter/oneWaitress.d.ts +100 -0
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/oneWaitress.js +227 -0
- package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -0
- package/dist/adapter/ember/adapter/requestQueue.d.ts +59 -0
- package/dist/adapter/ember/adapter/requestQueue.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/requestQueue.js +144 -0
- package/dist/adapter/ember/adapter/requestQueue.js.map +1 -0
- package/dist/adapter/ember/adapter/tokensManager.d.ts +69 -0
- package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/tokensManager.js +685 -0
- package/dist/adapter/ember/adapter/tokensManager.js.map +1 -0
- package/dist/adapter/ember/consts.d.ts +198 -0
- package/dist/adapter/ember/consts.d.ts.map +1 -0
- package/dist/adapter/ember/consts.js +253 -0
- package/dist/adapter/ember/consts.js.map +1 -0
- package/dist/adapter/ember/enums.d.ts +2174 -0
- package/dist/adapter/ember/enums.d.ts.map +1 -0
- package/dist/adapter/ember/enums.js +2377 -0
- package/dist/adapter/ember/enums.js.map +1 -0
- package/dist/adapter/ember/ezsp/buffalo.d.ts +156 -0
- package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -0
- package/dist/adapter/ember/ezsp/buffalo.js +1033 -0
- package/dist/adapter/ember/ezsp/buffalo.js.map +1 -0
- package/dist/adapter/ember/ezsp/consts.d.ts +116 -0
- package/dist/adapter/ember/ezsp/consts.d.ts.map +1 -0
- package/dist/adapter/ember/ezsp/consts.js +128 -0
- package/dist/adapter/ember/ezsp/consts.js.map +1 -0
- package/dist/adapter/ember/ezsp/enums.d.ts +879 -0
- package/dist/adapter/ember/ezsp/enums.d.ts.map +1 -0
- package/dist/adapter/ember/ezsp/enums.js +948 -0
- package/dist/adapter/ember/ezsp/enums.js.map +1 -0
- package/dist/adapter/ember/ezsp/ezsp.d.ts +2663 -0
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -0
- package/dist/adapter/ember/ezsp/ezsp.js +6435 -0
- package/dist/adapter/ember/ezsp/ezsp.js.map +1 -0
- package/dist/adapter/ember/types.d.ts +733 -0
- package/dist/adapter/ember/types.d.ts.map +1 -0
- package/dist/adapter/ember/types.js +3 -0
- package/dist/adapter/ember/types.js.map +1 -0
- package/dist/adapter/ember/uart/ash.d.ts +458 -0
- package/dist/adapter/ember/uart/ash.d.ts.map +1 -0
- package/dist/adapter/ember/uart/ash.js +1601 -0
- package/dist/adapter/ember/uart/ash.js.map +1 -0
- package/dist/adapter/ember/uart/consts.d.ts +91 -0
- package/dist/adapter/ember/uart/consts.d.ts.map +1 -0
- package/dist/adapter/ember/uart/consts.js +100 -0
- package/dist/adapter/ember/uart/consts.js.map +1 -0
- package/dist/adapter/ember/uart/enums.d.ts +191 -0
- package/dist/adapter/ember/uart/enums.d.ts.map +1 -0
- package/dist/adapter/ember/uart/enums.js +197 -0
- package/dist/adapter/ember/uart/enums.js.map +1 -0
- package/dist/adapter/ember/uart/parser.d.ts +10 -0
- package/dist/adapter/ember/uart/parser.d.ts.map +1 -0
- package/dist/adapter/ember/uart/parser.js +41 -0
- package/dist/adapter/ember/uart/parser.js.map +1 -0
- package/dist/adapter/ember/uart/queues.d.ts +85 -0
- package/dist/adapter/ember/uart/queues.d.ts.map +1 -0
- package/dist/adapter/ember/uart/queues.js +212 -0
- package/dist/adapter/ember/uart/queues.js.map +1 -0
- package/dist/adapter/ember/uart/writer.d.ts +15 -0
- package/dist/adapter/ember/uart/writer.d.ts.map +1 -0
- package/dist/adapter/ember/uart/writer.js +48 -0
- package/dist/adapter/ember/uart/writer.js.map +1 -0
- package/dist/adapter/ember/utils/initters.d.ts +20 -0
- package/dist/adapter/ember/utils/initters.d.ts.map +1 -0
- package/dist/adapter/ember/utils/initters.js +58 -0
- package/dist/adapter/ember/utils/initters.js.map +1 -0
- package/dist/adapter/ember/utils/math.d.ts +51 -0
- package/dist/adapter/ember/utils/math.d.ts.map +1 -0
- package/dist/adapter/ember/utils/math.js +102 -0
- package/dist/adapter/ember/utils/math.js.map +1 -0
- package/dist/adapter/ember/zdo.d.ts +921 -0
- package/dist/adapter/ember/zdo.d.ts.map +1 -0
- package/dist/adapter/ember/zdo.js +723 -0
- package/dist/adapter/ember/zdo.js.map +1 -0
- package/dist/adapter/events.d.ts +47 -47
- package/dist/adapter/events.js +13 -14
- package/dist/adapter/events.js.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts +13 -9
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.js +104 -53
- package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +61 -60
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +626 -608
- package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
- package/dist/adapter/ezsp/adapter/index.d.ts +2 -2
- package/dist/adapter/ezsp/adapter/index.js +10 -10
- package/dist/adapter/ezsp/driver/commands.d.ts +36 -36
- package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/commands.js +2388 -2359
- package/dist/adapter/ezsp/driver/commands.js.map +1 -1
- package/dist/adapter/ezsp/driver/consts.d.ts +10 -10
- package/dist/adapter/ezsp/driver/consts.js +13 -13
- package/dist/adapter/ezsp/driver/driver.d.ts +111 -101
- package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/driver.js +816 -638
- package/dist/adapter/ezsp/driver/driver.js.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.d.ts +105 -96
- package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.js +652 -586
- package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
- package/dist/adapter/ezsp/driver/frame.d.ts +40 -0
- package/dist/adapter/ezsp/driver/frame.d.ts.map +1 -0
- package/dist/adapter/ezsp/driver/frame.js +101 -0
- package/dist/adapter/ezsp/driver/frame.js.map +1 -0
- package/dist/adapter/ezsp/driver/index.d.ts +3 -3
- package/dist/adapter/ezsp/driver/index.js +8 -8
- package/dist/adapter/ezsp/driver/multicast.d.ts +12 -12
- package/dist/adapter/ezsp/driver/multicast.js +77 -72
- package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
- package/dist/adapter/ezsp/driver/parser.d.ts +11 -12
- package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/parser.js +104 -111
- package/dist/adapter/ezsp/driver/parser.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/basic.d.ts +62 -62
- package/dist/adapter/ezsp/driver/types/basic.js +208 -208
- package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/index.d.ts +9 -9
- package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/index.js +138 -133
- package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.d.ts +1287 -697
- package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.js +2329 -1726
- package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.d.ts +270 -251
- package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.js +803 -708
- package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
- package/dist/adapter/ezsp/driver/uart.d.ts +48 -44
- package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/uart.js +382 -368
- package/dist/adapter/ezsp/driver/uart.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +2 -2
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +55 -55
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.d.ts +19 -18
- package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.js +72 -67
- package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/writer.d.ts +13 -13
- package/dist/adapter/ezsp/driver/writer.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/writer.js +85 -88
- package/dist/adapter/ezsp/driver/writer.js.map +1 -1
- package/dist/adapter/index.d.ts +4 -4
- package/dist/adapter/index.js +35 -35
- package/dist/adapter/serialPort.d.ts +13 -8
- package/dist/adapter/serialPort.d.ts.map +1 -1
- package/dist/adapter/serialPort.js +46 -22
- package/dist/adapter/serialPort.js.map +1 -1
- package/dist/adapter/serialPortUtils.d.ts +12 -12
- package/dist/adapter/serialPortUtils.js +18 -18
- package/dist/adapter/serialPortUtils.js.map +1 -1
- package/dist/adapter/socketPortUtils.d.ts +10 -10
- package/dist/adapter/socketPortUtils.js +16 -16
- package/dist/adapter/tstype.d.ts +85 -85
- package/dist/adapter/tstype.d.ts.map +1 -1
- package/dist/adapter/tstype.js +2 -2
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +62 -62
- package/dist/adapter/z-stack/adapter/adapter-backup.js +462 -461
- package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +150 -150
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +258 -258
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
- package/dist/adapter/z-stack/adapter/endpoints.d.ts +11 -11
- package/dist/adapter/z-stack/adapter/endpoints.js +73 -73
- package/dist/adapter/z-stack/adapter/index.d.ts +2 -2
- package/dist/adapter/z-stack/adapter/index.js +8 -8
- package/dist/adapter/z-stack/adapter/manager.d.ts +86 -86
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.js +482 -476
- package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
- package/dist/adapter/z-stack/adapter/tstype.d.ts +6 -6
- package/dist/adapter/z-stack/adapter/tstype.js +9 -10
- package/dist/adapter/z-stack/adapter/tstype.js.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +81 -81
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +885 -868
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
- package/dist/adapter/z-stack/constants/af.d.ts +23 -23
- package/dist/adapter/z-stack/constants/af.js +27 -27
- package/dist/adapter/z-stack/constants/common.d.ts +278 -278
- package/dist/adapter/z-stack/constants/common.d.ts.map +1 -1
- package/dist/adapter/z-stack/constants/common.js +292 -289
- package/dist/adapter/z-stack/constants/common.js.map +1 -1
- package/dist/adapter/z-stack/constants/dbg.d.ts +22 -22
- package/dist/adapter/z-stack/constants/dbg.js +24 -24
- package/dist/adapter/z-stack/constants/index.d.ts +10 -10
- package/dist/adapter/z-stack/constants/index.js +47 -47
- package/dist/adapter/z-stack/constants/mac.d.ts +127 -127
- package/dist/adapter/z-stack/constants/mac.js +129 -129
- package/dist/adapter/z-stack/constants/sapi.d.ts +24 -24
- package/dist/adapter/z-stack/constants/sapi.js +26 -26
- package/dist/adapter/z-stack/constants/sys.d.ts +71 -71
- package/dist/adapter/z-stack/constants/sys.js +73 -73
- package/dist/adapter/z-stack/constants/util.d.ts +81 -81
- package/dist/adapter/z-stack/constants/util.js +83 -83
- package/dist/adapter/z-stack/constants/utils.d.ts +4 -4
- package/dist/adapter/z-stack/constants/utils.js +14 -14
- package/dist/adapter/z-stack/constants/zdo.d.ts +102 -102
- package/dist/adapter/z-stack/constants/zdo.js +104 -104
- package/dist/adapter/z-stack/models/index.d.ts +1 -1
- package/dist/adapter/z-stack/models/index.js +17 -17
- package/dist/adapter/z-stack/models/startup-options.d.ts +12 -12
- package/dist/adapter/z-stack/models/startup-options.js +2 -2
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +23 -23
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +45 -45
- 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 +10 -10
- package/dist/adapter/z-stack/structs/entries/address-manager-table.js +22 -22
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +21 -21
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +23 -23
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +24 -24
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +23 -23
- package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +8 -8
- package/dist/adapter/z-stack/structs/entries/channel-list.js +15 -15
- package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +8 -8
- package/dist/adapter/z-stack/structs/entries/has-configured.js +16 -16
- package/dist/adapter/z-stack/structs/entries/index.d.ts +16 -16
- package/dist/adapter/z-stack/structs/entries/index.js +32 -32
- package/dist/adapter/z-stack/structs/entries/nib.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/nib.js +68 -68
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +18 -18
- package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +8 -8
- package/dist/adapter/z-stack/structs/entries/nwk-key.js +15 -15
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +8 -8
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +15 -15
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +13 -13
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +23 -23
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +22 -22
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +20 -20
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +36 -36
- 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 +10 -10
- package/dist/adapter/z-stack/structs/entries/security-manager-table.js +24 -24
- package/dist/adapter/z-stack/structs/index.d.ts +4 -4
- package/dist/adapter/z-stack/structs/index.js +20 -20
- package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +13 -13
- package/dist/adapter/z-stack/structs/serializable-memory-object.js +2 -2
- package/dist/adapter/z-stack/structs/struct.d.ts +99 -99
- package/dist/adapter/z-stack/structs/struct.js +296 -295
- package/dist/adapter/z-stack/structs/struct.js.map +1 -1
- package/dist/adapter/z-stack/structs/table.d.ts +94 -94
- package/dist/adapter/z-stack/structs/table.js +163 -161
- package/dist/adapter/z-stack/structs/table.js.map +1 -1
- package/dist/adapter/z-stack/unpi/constants.d.ts +28 -28
- package/dist/adapter/z-stack/unpi/constants.js +39 -41
- package/dist/adapter/z-stack/unpi/constants.js.map +1 -1
- package/dist/adapter/z-stack/unpi/frame.d.ts +16 -16
- package/dist/adapter/z-stack/unpi/frame.js +54 -48
- package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
- package/dist/adapter/z-stack/unpi/index.d.ts +5 -5
- package/dist/adapter/z-stack/unpi/index.js +37 -37
- package/dist/adapter/z-stack/unpi/parser.d.ts +10 -10
- package/dist/adapter/z-stack/unpi/parser.js +75 -74
- package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
- package/dist/adapter/z-stack/unpi/writer.d.ts +10 -10
- package/dist/adapter/z-stack/unpi/writer.js +44 -44
- package/dist/adapter/z-stack/utils/channel-list.d.ts +20 -20
- package/dist/adapter/z-stack/utils/channel-list.js +40 -40
- package/dist/adapter/z-stack/utils/channel-list.js.map +1 -1
- package/dist/adapter/z-stack/utils/index.d.ts +2 -2
- package/dist/adapter/z-stack/utils/index.js +18 -18
- package/dist/adapter/z-stack/utils/network-options.d.ts +8 -8
- package/dist/adapter/z-stack/utils/network-options.js +22 -22
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +11 -11
- package/dist/adapter/z-stack/znp/buffaloZnp.js +113 -113
- package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -1
- package/dist/adapter/z-stack/znp/definition.d.ts +5 -5
- package/dist/adapter/z-stack/znp/definition.js +3050 -3050
- package/dist/adapter/z-stack/znp/index.d.ts +3 -3
- package/dist/adapter/z-stack/znp/index.js +10 -10
- package/dist/adapter/z-stack/znp/parameterType.d.ts +22 -22
- package/dist/adapter/z-stack/znp/parameterType.js +25 -25
- package/dist/adapter/z-stack/znp/tstype.d.ts +21 -21
- package/dist/adapter/z-stack/znp/tstype.js +2 -2
- package/dist/adapter/z-stack/znp/znp.d.ts +44 -43
- package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/znp.js +326 -325
- package/dist/adapter/z-stack/znp/znp.js.map +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.d.ts +19 -19
- package/dist/adapter/z-stack/znp/zpiObject.js +102 -96
- package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
- package/dist/adapter/zigate/adapter/index.d.ts +2 -2
- package/dist/adapter/zigate/adapter/index.js +10 -10
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +70 -70
- package/dist/adapter/zigate/adapter/zigateAdapter.js +689 -684
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
- package/dist/adapter/zigate/debug.d.ts +7 -7
- package/dist/adapter/zigate/debug.d.ts.map +1 -1
- package/dist/adapter/zigate/debug.js +19 -22
- package/dist/adapter/zigate/debug.js.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +18 -18
- package/dist/adapter/zigate/driver/buffaloZiGate.js +139 -139
- package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
- package/dist/adapter/zigate/driver/commandType.d.ts +41 -41
- package/dist/adapter/zigate/driver/commandType.js +385 -385
- package/dist/adapter/zigate/driver/commandType.js.map +1 -1
- package/dist/adapter/zigate/driver/constants.d.ts +276 -276
- package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/constants.js +371 -371
- package/dist/adapter/zigate/driver/constants.js.map +1 -1
- package/dist/adapter/zigate/driver/frame.d.ts +26 -26
- package/dist/adapter/zigate/driver/frame.js +172 -172
- package/dist/adapter/zigate/driver/frame.js.map +1 -1
- package/dist/adapter/zigate/driver/messageType.d.ts +11 -11
- package/dist/adapter/zigate/driver/messageType.js +278 -278
- package/dist/adapter/zigate/driver/messageType.js.map +1 -1
- package/dist/adapter/zigate/driver/parameterType.d.ts +20 -20
- package/dist/adapter/zigate/driver/parameterType.js +23 -23
- package/dist/adapter/zigate/driver/ziGateObject.d.ts +23 -23
- package/dist/adapter/zigate/driver/ziGateObject.js +110 -106
- package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
- package/dist/adapter/zigate/driver/zigate.d.ts +49 -49
- package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/zigate.js +296 -303
- package/dist/adapter/zigate/driver/zigate.js.map +1 -1
- package/dist/buffalo/buffalo.d.ts +50 -50
- package/dist/buffalo/buffalo.js +324 -322
- package/dist/buffalo/buffalo.js.map +1 -1
- package/dist/buffalo/index.d.ts +3 -3
- package/dist/buffalo/index.js +33 -33
- package/dist/buffalo/tstype.d.ts +8 -8
- package/dist/buffalo/tstype.js +2 -2
- package/dist/controller/controller.d.ts +113 -113
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/controller/controller.js +641 -619
- package/dist/controller/controller.js.map +1 -1
- package/dist/controller/database.d.ts +18 -18
- package/dist/controller/database.js +96 -93
- package/dist/controller/database.js.map +1 -1
- package/dist/controller/events.d.ts +58 -58
- package/dist/controller/events.d.ts.map +1 -1
- package/dist/controller/events.js +108 -102
- package/dist/controller/events.js.map +1 -1
- package/dist/controller/greenPower.d.ts +12 -12
- package/dist/controller/greenPower.js +221 -220
- package/dist/controller/greenPower.js.map +1 -1
- package/dist/controller/helpers/index.d.ts +2 -2
- package/dist/controller/helpers/index.js +28 -28
- package/dist/controller/helpers/request.d.ts +21 -22
- package/dist/controller/helpers/request.d.ts.map +1 -1
- package/dist/controller/helpers/request.js +77 -71
- package/dist/controller/helpers/request.js.map +1 -1
- package/dist/controller/helpers/requestQueue.d.ts +13 -0
- package/dist/controller/helpers/requestQueue.d.ts.map +1 -0
- package/dist/controller/helpers/requestQueue.js +116 -0
- package/dist/controller/helpers/requestQueue.js.map +1 -0
- package/dist/controller/helpers/zclFrameConverter.d.ts +7 -7
- package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.js +50 -31
- package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
- package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +5 -5
- package/dist/controller/helpers/zclTransactionSequenceNumber.js +13 -13
- package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +1 -1
- package/dist/controller/index.d.ts +5 -5
- package/dist/controller/index.js +8 -8
- package/dist/controller/logger-stub.d.ts +6 -6
- package/dist/controller/logger-stub.js +2 -2
- package/dist/controller/model/device.d.ts +132 -133
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +726 -717
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts +128 -131
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +755 -821
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/controller/model/entity.d.ts +14 -14
- package/dist/controller/model/entity.js +26 -26
- package/dist/controller/model/entity.js.map +1 -1
- package/dist/controller/model/group.d.ts +38 -38
- package/dist/controller/model/group.d.ts.map +1 -1
- package/dist/controller/model/group.js +225 -221
- package/dist/controller/model/group.js.map +1 -1
- package/dist/controller/model/index.d.ts +5 -5
- package/dist/controller/model/index.js +14 -14
- package/dist/controller/touchlink.d.ts +19 -19
- package/dist/controller/touchlink.js +159 -157
- package/dist/controller/touchlink.js.map +1 -1
- package/dist/controller/tstype.d.ts +20 -21
- package/dist/controller/tstype.d.ts.map +1 -1
- package/dist/controller/tstype.js +8 -9
- package/dist/controller/tstype.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +33 -33
- package/dist/models/backup-storage-legacy.d.ts +26 -26
- package/dist/models/backup-storage-legacy.js +2 -2
- package/dist/models/backup-storage-unified.d.ts +49 -49
- package/dist/models/backup-storage-unified.js +2 -2
- package/dist/models/backup.d.ts +37 -37
- package/dist/models/backup.js +2 -2
- package/dist/models/index.d.ts +4 -4
- package/dist/models/index.js +20 -20
- package/dist/models/network-options.d.ts +12 -12
- package/dist/models/network-options.js +2 -2
- package/dist/utils/assertString.d.ts +2 -2
- package/dist/utils/assertString.js +8 -8
- package/dist/utils/assertString.js.map +1 -1
- package/dist/utils/backup.d.ts +20 -20
- package/dist/utils/backup.d.ts.map +1 -1
- package/dist/utils/backup.js +189 -187
- package/dist/utils/backup.js.map +1 -1
- package/dist/utils/equalsPartial.d.ts +2 -2
- package/dist/utils/equalsPartial.js +11 -11
- package/dist/utils/index.d.ts +9 -9
- package/dist/utils/index.js +45 -45
- package/dist/utils/isNumberArray.d.ts +2 -2
- package/dist/utils/isNumberArray.js +6 -6
- package/dist/utils/queue.d.ts +11 -11
- package/dist/utils/queue.d.ts.map +1 -1
- package/dist/utils/queue.js +61 -50
- package/dist/utils/queue.js.map +1 -1
- package/dist/utils/realpathSync.d.ts +2 -2
- package/dist/utils/realpathSync.js +12 -12
- package/dist/utils/wait.d.ts +2 -2
- package/dist/utils/wait.js +8 -8
- package/dist/utils/waitress.d.ts +21 -21
- package/dist/utils/waitress.d.ts.map +1 -1
- package/dist/utils/waitress.js +68 -61
- package/dist/utils/waitress.js.map +1 -1
- package/dist/zcl/buffaloZcl.d.ts +41 -41
- package/dist/zcl/buffaloZcl.d.ts.map +1 -1
- package/dist/zcl/buffaloZcl.js +594 -591
- package/dist/zcl/buffaloZcl.js.map +1 -1
- package/dist/zcl/definition/buffaloZclDataType.d.ts +17 -17
- package/dist/zcl/definition/buffaloZclDataType.js +20 -20
- package/dist/zcl/definition/cluster.d.ts +29 -29
- package/dist/zcl/definition/cluster.d.ts.map +1 -1
- package/dist/zcl/definition/cluster.js +5530 -5335
- package/dist/zcl/definition/cluster.js.map +1 -1
- package/dist/zcl/definition/dataType.d.ts +59 -59
- package/dist/zcl/definition/dataType.js +64 -64
- package/dist/zcl/definition/direction.d.ts +5 -5
- package/dist/zcl/definition/direction.js +8 -8
- package/dist/zcl/definition/endpointDeviceType.d.ts +4 -4
- package/dist/zcl/definition/endpointDeviceType.js +15 -15
- package/dist/zcl/definition/foundation.d.ts +11 -11
- package/dist/zcl/definition/foundation.js +167 -167
- package/dist/zcl/definition/frameControl.d.ts +10 -10
- package/dist/zcl/definition/frameControl.js +2 -2
- package/dist/zcl/definition/frameType.d.ts +5 -5
- package/dist/zcl/definition/frameType.js +8 -8
- package/dist/zcl/definition/index.d.ts +13 -13
- package/dist/zcl/definition/index.js +51 -51
- package/dist/zcl/definition/manufacturerCode.d.ts +1077 -1074
- package/dist/zcl/definition/manufacturerCode.d.ts.map +1 -1
- package/dist/zcl/definition/manufacturerCode.js +1082 -1079
- package/dist/zcl/definition/manufacturerCode.js.map +1 -1
- package/dist/zcl/definition/powerSource.d.ts +4 -4
- package/dist/zcl/definition/powerSource.js +12 -12
- package/dist/zcl/definition/status.d.ts +38 -38
- package/dist/zcl/definition/status.js +41 -41
- package/dist/zcl/definition/tstype.d.ts +16 -16
- package/dist/zcl/definition/tstype.js +2 -2
- package/dist/zcl/index.d.ts +16 -16
- package/dist/zcl/index.js +55 -55
- package/dist/zcl/tstype.d.ts +56 -56
- package/dist/zcl/tstype.js +9 -10
- package/dist/zcl/tstype.js.map +1 -1
- package/dist/zcl/utils.d.ts +6 -6
- package/dist/zcl/utils.js +164 -165
- package/dist/zcl/utils.js.map +1 -1
- package/dist/zcl/zclFrame.d.ts +40 -40
- package/dist/zcl/zclFrame.js +351 -347
- package/dist/zcl/zclFrame.js.map +1 -1
- package/dist/zcl/zclHeader.d.ts +8 -8
- package/dist/zcl/zclHeader.js +2 -2
- package/dist/zcl/zclStatusError.d.ts +5 -5
- package/dist/zcl/zclStatusError.js +14 -13
- package/dist/zcl/zclStatusError.js.map +1 -1
- package/package.json +11 -11
- package/release-please-config.json +1 -5
- package/tsconfig.json +4 -2
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EmberOneWaitress = void 0;
|
|
7
|
+
/* istanbul ignore file */
|
|
8
|
+
const es6_1 = __importDefault(require("fast-deep-equal/es6"));
|
|
9
|
+
const consts_1 = require("../consts");
|
|
10
|
+
const zdo_1 = require("../zdo");
|
|
11
|
+
;
|
|
12
|
+
/**
|
|
13
|
+
* The one waitress to rule them all. Hopefully.
|
|
14
|
+
* Careful, she'll burn you if you're late on delivery!
|
|
15
|
+
*
|
|
16
|
+
* NOTE: `messageTag` is unreliable, so not used...
|
|
17
|
+
*/
|
|
18
|
+
class EmberOneWaitress {
|
|
19
|
+
waiters;
|
|
20
|
+
// NOTE: for now, this could be much simpler (array-like), but more complex events might come into play
|
|
21
|
+
eventWaiters;
|
|
22
|
+
currentId;
|
|
23
|
+
currentEventId;
|
|
24
|
+
constructor() {
|
|
25
|
+
this.waiters = new Map();
|
|
26
|
+
this.eventWaiters = new Map();
|
|
27
|
+
this.currentId = 0;
|
|
28
|
+
this.currentEventId = 0;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Reject because of failed delivery notified by `ezspMessageSentHandler`.
|
|
32
|
+
* NOTE: This checks for APS sequence, which is only valid in `ezspMessageSentHandler`, not `ezspIncomingMessageHandler` (sequence from stack)
|
|
33
|
+
*
|
|
34
|
+
* @param target
|
|
35
|
+
* @param apsFrame
|
|
36
|
+
* @returns
|
|
37
|
+
*/
|
|
38
|
+
deliveryFailedFor(target, apsFrame) {
|
|
39
|
+
for (const [index, waiter] of this.waiters.entries()) {
|
|
40
|
+
if (waiter.timedout) {
|
|
41
|
+
this.waiters.delete(index);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
// no target in touchlink
|
|
45
|
+
// in `ezspMessageSentHandler`, the clusterId for ZDO is still the request one, so check against apsFrame, not override
|
|
46
|
+
if (((waiter.matcher.apsFrame.profileId === consts_1.TOUCHLINK_PROFILE_ID) || (target === waiter.matcher.target))
|
|
47
|
+
&& (apsFrame.sequence === waiter.matcher.apsFrame.sequence) && (apsFrame.profileId === waiter.matcher.apsFrame.profileId)
|
|
48
|
+
&& (apsFrame.clusterId === waiter.matcher.apsFrame.clusterId)) {
|
|
49
|
+
clearTimeout(waiter.timer);
|
|
50
|
+
waiter.resolved = true;
|
|
51
|
+
this.waiters.delete(index);
|
|
52
|
+
waiter.reject(new Error(`Delivery failed for ${JSON.stringify(apsFrame)}`));
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Resolve or reject ZDO response based on given status.
|
|
60
|
+
* @param status
|
|
61
|
+
* @param sender
|
|
62
|
+
* @param apsFrame
|
|
63
|
+
* @param payload
|
|
64
|
+
* @returns
|
|
65
|
+
*/
|
|
66
|
+
resolveZDO(status, sender, apsFrame, payload) {
|
|
67
|
+
for (const [index, waiter] of this.waiters.entries()) {
|
|
68
|
+
if (waiter.timedout) {
|
|
69
|
+
this.waiters.delete(index);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
// always a sender expected in ZDO, profileId is a bit redundant here, but...
|
|
73
|
+
if ((sender === waiter.matcher.target) && (apsFrame.profileId === waiter.matcher.apsFrame.profileId)
|
|
74
|
+
&& (apsFrame.clusterId === (waiter.matcher.responseClusterId != null ?
|
|
75
|
+
waiter.matcher.responseClusterId : waiter.matcher.apsFrame.clusterId))) {
|
|
76
|
+
clearTimeout(waiter.timer);
|
|
77
|
+
waiter.resolved = true;
|
|
78
|
+
this.waiters.delete(index);
|
|
79
|
+
if (status === zdo_1.EmberZdoStatus.ZDP_SUCCESS) {
|
|
80
|
+
waiter.resolve(payload);
|
|
81
|
+
}
|
|
82
|
+
else if (status === zdo_1.EmberZdoStatus.ZDP_NO_ENTRY) {
|
|
83
|
+
// XXX: bypassing fail here since Z2M seems to trigger ZDO remove-type commands without checking current state
|
|
84
|
+
// Z2M also fails with ZCL payload NOT_FOUND though. This should be removed once upstream fixes that.
|
|
85
|
+
console.log(`[ZDO] Received status ZDP_NO_ENTRY for "${sender}" cluster "${apsFrame.clusterId}". Ignoring.`);
|
|
86
|
+
waiter.resolve(payload);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
waiter.reject(new Error(`[ZDO] Failed response by NCP for "${sender}" cluster "${apsFrame.clusterId}" `
|
|
90
|
+
+ `with status=${zdo_1.EmberZdoStatus[status]}.`));
|
|
91
|
+
}
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
resolveZCL(payload) {
|
|
98
|
+
for (const [index, waiter] of this.waiters.entries()) {
|
|
99
|
+
if (waiter.timedout) {
|
|
100
|
+
this.waiters.delete(index);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
// no target in touchlink, also no APS sequence, but use the ZCL one instead
|
|
104
|
+
if (((waiter.matcher.apsFrame.profileId === consts_1.TOUCHLINK_PROFILE_ID) || (payload.address === waiter.matcher.target))
|
|
105
|
+
&& (!waiter.matcher.zclSequence || (payload.frame.Header.transactionSequenceNumber === waiter.matcher.zclSequence))
|
|
106
|
+
&& (!waiter.matcher.commandIdentifier || (payload.frame.Header.commandIdentifier === waiter.matcher.commandIdentifier))
|
|
107
|
+
&& (payload.frame.Cluster.ID === waiter.matcher.apsFrame.clusterId)
|
|
108
|
+
&& (payload.endpoint === waiter.matcher.apsFrame.destinationEndpoint)) {
|
|
109
|
+
clearTimeout(waiter.timer);
|
|
110
|
+
waiter.resolved = true;
|
|
111
|
+
this.waiters.delete(index);
|
|
112
|
+
waiter.resolve(payload);
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
waitFor(matcher, timeout) {
|
|
119
|
+
const id = this.currentId++;
|
|
120
|
+
this.currentId &= 0xFFFF; // roll-over every so often - 65535 should be enough not to create conflicts ;-)
|
|
121
|
+
const promise = new Promise((resolve, reject) => {
|
|
122
|
+
const object = { matcher, resolve, reject, timedout: false, resolved: false, id };
|
|
123
|
+
this.waiters.set(id, object);
|
|
124
|
+
});
|
|
125
|
+
const start = () => {
|
|
126
|
+
const waiter = this.waiters.get(id);
|
|
127
|
+
if (waiter && !waiter.resolved && !waiter.timer) {
|
|
128
|
+
// Capture the stack trace from the caller of start()
|
|
129
|
+
const error = new Error();
|
|
130
|
+
Error.captureStackTrace(error);
|
|
131
|
+
waiter.timer = setTimeout(() => {
|
|
132
|
+
error.message = `${JSON.stringify(matcher)} timed out after ${timeout}ms`;
|
|
133
|
+
waiter.timedout = true;
|
|
134
|
+
waiter.reject(error);
|
|
135
|
+
}, timeout);
|
|
136
|
+
}
|
|
137
|
+
return { promise, id };
|
|
138
|
+
};
|
|
139
|
+
return { id, start };
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Shortcut that starts the timer immediately and returns the promise.
|
|
143
|
+
* No access to `id`, so no easy cancel.
|
|
144
|
+
* @param matcher
|
|
145
|
+
* @param timeout
|
|
146
|
+
* @returns
|
|
147
|
+
*/
|
|
148
|
+
startWaitingFor(matcher, timeout) {
|
|
149
|
+
return this.waitFor(matcher, timeout).start().promise;
|
|
150
|
+
}
|
|
151
|
+
remove(id) {
|
|
152
|
+
const waiter = this.waiters.get(id);
|
|
153
|
+
if (waiter) {
|
|
154
|
+
if (!waiter.timedout && waiter.timer) {
|
|
155
|
+
clearTimeout(waiter.timer);
|
|
156
|
+
}
|
|
157
|
+
this.waiters.delete(id);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Matches event name with matcher's, and payload (if any in matcher) using `fast-deep-equal/es6` (all keys & values must match)
|
|
162
|
+
* @param eventName
|
|
163
|
+
* @param payload
|
|
164
|
+
* @returns
|
|
165
|
+
*/
|
|
166
|
+
resolveEvent(eventName, payload) {
|
|
167
|
+
for (const [index, waiter] of this.eventWaiters.entries()) {
|
|
168
|
+
if (waiter.timedout) {
|
|
169
|
+
this.eventWaiters.delete(index);
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
if (eventName === waiter.matcher.eventName && (!waiter.matcher.payload || ((0, es6_1.default)(payload, waiter.matcher.payload)))) {
|
|
173
|
+
clearTimeout(waiter.timer);
|
|
174
|
+
waiter.resolved = true;
|
|
175
|
+
this.eventWaiters.delete(index);
|
|
176
|
+
waiter.resolve(payload);
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
waitForEvent(matcher, timeout, reason = null) {
|
|
182
|
+
// NOTE: logic is very much the same as `waitFor`, just different matcher
|
|
183
|
+
const id = this.currentEventId++;
|
|
184
|
+
this.currentEventId &= 0xFFFF; // roll-over every so often - 65535 should be enough not to create conflicts ;-)
|
|
185
|
+
const promise = new Promise((resolve, reject) => {
|
|
186
|
+
const object = { matcher, resolve, reject, timedout: false, resolved: false, id };
|
|
187
|
+
this.eventWaiters.set(id, object);
|
|
188
|
+
});
|
|
189
|
+
const start = () => {
|
|
190
|
+
const waiter = this.eventWaiters.get(id);
|
|
191
|
+
if (waiter && !waiter.resolved && !waiter.timer) {
|
|
192
|
+
// Capture the stack trace from the caller of start()
|
|
193
|
+
const error = new Error();
|
|
194
|
+
Error.captureStackTrace(error);
|
|
195
|
+
waiter.timer = setTimeout(() => {
|
|
196
|
+
error.message = `${reason ? reason : JSON.stringify(matcher)} timed out after ${timeout}ms`;
|
|
197
|
+
waiter.timedout = true;
|
|
198
|
+
waiter.reject(error);
|
|
199
|
+
}, timeout);
|
|
200
|
+
}
|
|
201
|
+
return { promise, id };
|
|
202
|
+
};
|
|
203
|
+
return { id, start };
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Shortcut that starts the timer immediately and returns the promise.
|
|
207
|
+
* No access to `id`, so no easy cancel.
|
|
208
|
+
* @param matcher
|
|
209
|
+
* @param timeout
|
|
210
|
+
* @param reason If supplied, will be used as timeout label, otherwise stringified matcher is.
|
|
211
|
+
* @returns
|
|
212
|
+
*/
|
|
213
|
+
startWaitingForEvent(matcher, timeout, reason = null) {
|
|
214
|
+
return this.waitForEvent(matcher, timeout, reason).start().promise;
|
|
215
|
+
}
|
|
216
|
+
removeEvent(id) {
|
|
217
|
+
const waiter = this.eventWaiters.get(id);
|
|
218
|
+
if (waiter) {
|
|
219
|
+
if (!waiter.timedout && waiter.timer) {
|
|
220
|
+
clearTimeout(waiter.timer);
|
|
221
|
+
}
|
|
222
|
+
this.eventWaiters.delete(id);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
exports.EmberOneWaitress = EmberOneWaitress;
|
|
227
|
+
//# sourceMappingURL=oneWaitress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneWaitress.js","sourceRoot":"","sources":["../../../../src/adapter/ember/adapter/oneWaitress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { EmberStatus } from "../enums";
|
|
2
|
+
export declare const NETWORK_BUSY_DEFER_MSEC = 500;
|
|
3
|
+
export declare const NETWORK_DOWN_DEFER_MSEC = 1500;
|
|
4
|
+
export declare class EmberRequestQueue {
|
|
5
|
+
private readonly dispatchInterval;
|
|
6
|
+
/** Interval handler that manages `dispatch()` */
|
|
7
|
+
private dispatchHandler;
|
|
8
|
+
/** If true, the queue is currently busy dispatching. */
|
|
9
|
+
private dispatching;
|
|
10
|
+
/** The queue holding requests to be sent. */
|
|
11
|
+
private queue;
|
|
12
|
+
/** Queue with requests that should take priority over the above queue. */
|
|
13
|
+
private priorityQueue;
|
|
14
|
+
constructor(dispatchInterval: number);
|
|
15
|
+
/**
|
|
16
|
+
* Empty each queue.
|
|
17
|
+
*/
|
|
18
|
+
clear(): void;
|
|
19
|
+
/**
|
|
20
|
+
* Prevent sending requests (usually due to NCP being reset).
|
|
21
|
+
*/
|
|
22
|
+
stopDispatching(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Allow sending requests.
|
|
25
|
+
* Must be called after init.
|
|
26
|
+
*/
|
|
27
|
+
startDispatching(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Store a function in the queue to be resolved when appropriate.
|
|
30
|
+
* @param function The function to enqueue. Upon dispatch:
|
|
31
|
+
* - if its return value is one of MAX_MESSAGE_LIMIT_REACHED, NETWORK_BUSY, NETWORK_DOWN,
|
|
32
|
+
* queue will defer dispatching and keep the function in the queue; reject otherwise.
|
|
33
|
+
* - if it throws, it is expected to throw `EzspStatus`, and will act same as above if one of NOT_CONNECTED, NO_TX_SPACE; reject otherwise.
|
|
34
|
+
* - any other value will result in the function being removed from the queue.
|
|
35
|
+
* @param reject The `reject` of the Promise wrapping the `enqueue` call
|
|
36
|
+
* (`resolve` is done in `func` directly to have typing on results & control on exec).
|
|
37
|
+
* @param prioritize If true, function will be enqueued in the priority queue. Defaults to false.
|
|
38
|
+
* @returns new length of the queue.
|
|
39
|
+
*/
|
|
40
|
+
enqueue(func: () => Promise<EmberStatus>, reject: (reason: Error) => void, prioritize?: boolean): number;
|
|
41
|
+
/**
|
|
42
|
+
* Dispatch the head of the queue.
|
|
43
|
+
*
|
|
44
|
+
* If request `func` throws, catch error and reject the request. `ezsp${x}` functions throw `EzspStatus` as error.
|
|
45
|
+
*
|
|
46
|
+
* If request `func` resolves but has an error, look at what error, and determine if should retry or remove the request from queue.
|
|
47
|
+
*
|
|
48
|
+
* If request `func` resolves without error, remove request from queue.
|
|
49
|
+
*
|
|
50
|
+
* WARNING: Because of this logic for "internal retries", any error thrown by `func` will not immediatedly bubble back to Adapter/Controller
|
|
51
|
+
*/
|
|
52
|
+
dispatch(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Defer dispatching for the specified duration (in msec).
|
|
55
|
+
* @param msec
|
|
56
|
+
*/
|
|
57
|
+
defer(msec: number): void;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=requestQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestQueue.d.ts","sourceRoot":"","sources":["../../../../src/adapter/ember/adapter/requestQueue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAa,MAAM,UAAU,CAAC;AAgBjD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,iDAAiD;IACjD,OAAO,CAAC,eAAe,CAAiB;IACxC,wDAAwD;IACxD,OAAO,CAAC,WAAW,CAAU;IAC7B,6CAA6C;IAC7C,OAAO,CAAC,KAAK,CAA2B;IACxC,0EAA0E;IAC1E,OAAO,CAAC,aAAa,CAA2B;gBAEpC,gBAAgB,EAAE,MAAM;IAOpC;;OAEG;IACI,KAAK,IAAI,IAAI;IAKpB;;OAEG;IACI,eAAe,IAAI,IAAI;IAM9B;;;OAGG;IACI,gBAAgB,IAAI,IAAI;IAM/B;;;;;;;;;;;OAWG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,UAAU,GAAE,OAAe,GAAG,MAAM;IAStH;;;;;;;;;;OAUG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoDtC;;;OAGG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAKnC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EmberRequestQueue = exports.NETWORK_DOWN_DEFER_MSEC = exports.NETWORK_BUSY_DEFER_MSEC = void 0;
|
|
7
|
+
/* istanbul ignore file */
|
|
8
|
+
const debug_1 = __importDefault(require("debug"));
|
|
9
|
+
const enums_1 = require("../enums");
|
|
10
|
+
const debug = (0, debug_1.default)('zigbee-herdsman:adapter:ember:queue');
|
|
11
|
+
;
|
|
12
|
+
exports.NETWORK_BUSY_DEFER_MSEC = 500;
|
|
13
|
+
exports.NETWORK_DOWN_DEFER_MSEC = 1500;
|
|
14
|
+
class EmberRequestQueue {
|
|
15
|
+
dispatchInterval;
|
|
16
|
+
/** Interval handler that manages `dispatch()` */
|
|
17
|
+
dispatchHandler;
|
|
18
|
+
/** If true, the queue is currently busy dispatching. */
|
|
19
|
+
dispatching;
|
|
20
|
+
/** The queue holding requests to be sent. */
|
|
21
|
+
queue;
|
|
22
|
+
/** Queue with requests that should take priority over the above queue. */
|
|
23
|
+
priorityQueue;
|
|
24
|
+
constructor(dispatchInterval) {
|
|
25
|
+
this.dispatchInterval = dispatchInterval || 5;
|
|
26
|
+
this.dispatching = false;
|
|
27
|
+
this.queue = [];
|
|
28
|
+
this.priorityQueue = [];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Empty each queue.
|
|
32
|
+
*/
|
|
33
|
+
clear() {
|
|
34
|
+
this.queue = [];
|
|
35
|
+
this.priorityQueue = [];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Prevent sending requests (usually due to NCP being reset).
|
|
39
|
+
*/
|
|
40
|
+
stopDispatching() {
|
|
41
|
+
clearInterval(this.dispatchHandler);
|
|
42
|
+
debug(`Dispatching stopped; queue=${this.queue.length} priorityQueue=${this.priorityQueue.length}`);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Allow sending requests.
|
|
46
|
+
* Must be called after init.
|
|
47
|
+
*/
|
|
48
|
+
startDispatching() {
|
|
49
|
+
this.dispatchHandler = setInterval(this.dispatch.bind(this), this.dispatchInterval);
|
|
50
|
+
debug(`Dispatching started.`);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Store a function in the queue to be resolved when appropriate.
|
|
54
|
+
* @param function The function to enqueue. Upon dispatch:
|
|
55
|
+
* - if its return value is one of MAX_MESSAGE_LIMIT_REACHED, NETWORK_BUSY, NETWORK_DOWN,
|
|
56
|
+
* queue will defer dispatching and keep the function in the queue; reject otherwise.
|
|
57
|
+
* - if it throws, it is expected to throw `EzspStatus`, and will act same as above if one of NOT_CONNECTED, NO_TX_SPACE; reject otherwise.
|
|
58
|
+
* - any other value will result in the function being removed from the queue.
|
|
59
|
+
* @param reject The `reject` of the Promise wrapping the `enqueue` call
|
|
60
|
+
* (`resolve` is done in `func` directly to have typing on results & control on exec).
|
|
61
|
+
* @param prioritize If true, function will be enqueued in the priority queue. Defaults to false.
|
|
62
|
+
* @returns new length of the queue.
|
|
63
|
+
*/
|
|
64
|
+
enqueue(func, reject, prioritize = false) {
|
|
65
|
+
debug(`Status queue=${this.queue.length} priorityQueue=${this.priorityQueue.length}.`);
|
|
66
|
+
return (prioritize ? this.priorityQueue : this.queue).push({
|
|
67
|
+
sendAttempts: 0,
|
|
68
|
+
func,
|
|
69
|
+
reject,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Dispatch the head of the queue.
|
|
74
|
+
*
|
|
75
|
+
* If request `func` throws, catch error and reject the request. `ezsp${x}` functions throw `EzspStatus` as error.
|
|
76
|
+
*
|
|
77
|
+
* If request `func` resolves but has an error, look at what error, and determine if should retry or remove the request from queue.
|
|
78
|
+
*
|
|
79
|
+
* If request `func` resolves without error, remove request from queue.
|
|
80
|
+
*
|
|
81
|
+
* WARNING: Because of this logic for "internal retries", any error thrown by `func` will not immediatedly bubble back to Adapter/Controller
|
|
82
|
+
*/
|
|
83
|
+
async dispatch() {
|
|
84
|
+
if (this.dispatching) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
let fromPriorityQueue = true;
|
|
88
|
+
let entry = this.priorityQueue[0]; // head of queue if any, priority first
|
|
89
|
+
if (!entry) {
|
|
90
|
+
fromPriorityQueue = false;
|
|
91
|
+
entry = this.queue[0];
|
|
92
|
+
}
|
|
93
|
+
if (entry) {
|
|
94
|
+
this.dispatching = true;
|
|
95
|
+
entry.sendAttempts++;
|
|
96
|
+
// NOTE: refer to `enqueue()` comment to keep logic in sync with expectations, adjust comment on change.
|
|
97
|
+
try {
|
|
98
|
+
const status = (await entry.func());
|
|
99
|
+
if ((status === enums_1.EmberStatus.MAX_MESSAGE_LIMIT_REACHED) || (status === enums_1.EmberStatus.NETWORK_BUSY)) {
|
|
100
|
+
debug(`Dispatching deferred: NCP busy.`);
|
|
101
|
+
this.defer(exports.NETWORK_BUSY_DEFER_MSEC);
|
|
102
|
+
}
|
|
103
|
+
else if (status === enums_1.EmberStatus.NETWORK_DOWN) {
|
|
104
|
+
debug(`Dispatching deferred: Network not ready`);
|
|
105
|
+
this.defer(exports.NETWORK_DOWN_DEFER_MSEC);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// success
|
|
109
|
+
(fromPriorityQueue ? this.priorityQueue : this.queue).shift();
|
|
110
|
+
if (status !== enums_1.EmberStatus.SUCCESS) {
|
|
111
|
+
entry.reject(new Error(enums_1.EmberStatus[status]));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (err) { // message is EzspStatus string from ezsp${x} commands, except for stuff rejected by OneWaitress, but that's never "retry"
|
|
116
|
+
if (err.message === enums_1.EzspStatus[enums_1.EzspStatus.NO_TX_SPACE]) {
|
|
117
|
+
debug(`Dispatching deferred: Host busy.`);
|
|
118
|
+
this.defer(exports.NETWORK_BUSY_DEFER_MSEC);
|
|
119
|
+
}
|
|
120
|
+
else if (err.message === enums_1.EzspStatus[enums_1.EzspStatus.NOT_CONNECTED]) {
|
|
121
|
+
debug(`Dispatching deferred: Network not ready`);
|
|
122
|
+
this.defer(exports.NETWORK_DOWN_DEFER_MSEC);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
(fromPriorityQueue ? this.priorityQueue : this.queue).shift();
|
|
126
|
+
entry.reject(err);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
finally {
|
|
130
|
+
this.dispatching = false;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Defer dispatching for the specified duration (in msec).
|
|
136
|
+
* @param msec
|
|
137
|
+
*/
|
|
138
|
+
defer(msec) {
|
|
139
|
+
this.stopDispatching();
|
|
140
|
+
setTimeout(this.startDispatching.bind(this), msec);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.EmberRequestQueue = EmberRequestQueue;
|
|
144
|
+
//# sourceMappingURL=requestQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestQueue.js","sourceRoot":"","sources":["../../../../src/adapter/ember/adapter/requestQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EmberStatus } from "../enums";
|
|
3
|
+
import { Ezsp } from "../ezsp/ezsp";
|
|
4
|
+
export declare class EmberTokensManager {
|
|
5
|
+
/**
|
|
6
|
+
* Host-only API to check whether the NCP uses key storage.
|
|
7
|
+
*
|
|
8
|
+
* @returns false if keys are in classic key storage, and true if they are located in PSA key storage.
|
|
9
|
+
*/
|
|
10
|
+
private static ncpUsesPSAKeyStorage;
|
|
11
|
+
/**
|
|
12
|
+
* Matcher for Zigbeed tokens.
|
|
13
|
+
* @param nvm3Key
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
private static getCreatorFromNvm3Key;
|
|
17
|
+
/**
|
|
18
|
+
* Saves tokens. Only for NVM3-based NCP.
|
|
19
|
+
*
|
|
20
|
+
* The binary file format to save the tokens are
|
|
21
|
+
*
|
|
22
|
+
* Number of Tokens (1 byte)
|
|
23
|
+
* Token0 (4 bytes) Token0Size(1 byte) Token0ArraySize(1 byte) Token0Data(Token0Size * Token0ArraySize)
|
|
24
|
+
* :
|
|
25
|
+
* :
|
|
26
|
+
* TokenM (4 bytes) TokenMSize(1 byte) TokenMArraySize(1 byte) TokenMData(TokenMSize * TokenMArraySize)
|
|
27
|
+
*
|
|
28
|
+
* @param localEui64 Used in place of blank `restoredEui64` keys
|
|
29
|
+
*
|
|
30
|
+
* @return Saved tokens buffer or null.
|
|
31
|
+
*/
|
|
32
|
+
static saveTokens(ezsp: Ezsp, localEui64: Buffer): Promise<Buffer>;
|
|
33
|
+
/**
|
|
34
|
+
* Restores tokens. Only for NVM3-based NCP.
|
|
35
|
+
* XXX: If a previous backup from an NVM3 NCP is attempted on a non-NVM3 NCP,
|
|
36
|
+
* it should just fail (LIBRARY_NOT_PRESENT all on token-related functions).
|
|
37
|
+
*
|
|
38
|
+
* @see EmberTokensManager.saveTokens() for format
|
|
39
|
+
*
|
|
40
|
+
* @return EmberStatus status code
|
|
41
|
+
*/
|
|
42
|
+
static restoreTokens(ezsp: Ezsp, inBuffer: Buffer): Promise<EmberStatus>;
|
|
43
|
+
/**
|
|
44
|
+
* Secure key storage needs to export the keys first so backup file has them.
|
|
45
|
+
*
|
|
46
|
+
* @param tokenData EmberTokenData* [IN/OUT]
|
|
47
|
+
* @param nvm3Key uint32_t
|
|
48
|
+
* @param index uint8_t
|
|
49
|
+
* @returns
|
|
50
|
+
*/
|
|
51
|
+
private static saveKeysToData;
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
* @param data_s EmberTokenData*
|
|
55
|
+
* @param nvm3Key uint32_t
|
|
56
|
+
* @param index uint8_t
|
|
57
|
+
* @returns
|
|
58
|
+
*
|
|
59
|
+
* @from sli_zigbee_af_trust_center_backup_restore_keys_from_data
|
|
60
|
+
*/
|
|
61
|
+
private static restoreKeysFromData;
|
|
62
|
+
/**
|
|
63
|
+
* Updates zigbeed tokens from a backup of NCP tokens.
|
|
64
|
+
*
|
|
65
|
+
* @return EmberStatus status code
|
|
66
|
+
*/
|
|
67
|
+
static writeNcpTokensToZigbeedTokens(ezsp: Ezsp, inBuffer: Buffer): Promise<EmberStatus>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=tokensManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokensManager.d.ts","sourceRoot":"","sources":["../../../../src/adapter/ember/adapter/tokensManager.ts"],"names":[],"mappings":";AAKA,OAAO,EAAC,WAAW,EAAkD,MAAM,UAAU,CAAC;AAGtF,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC;AA+RlC,qBAAa,kBAAkB;IAE3B;;;;OAIG;mBACkB,oBAAoB;IAUzC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAUpC;;;;;;;;;;;;;;OAcG;WACiB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0E/E;;;;;;;;OAQG;WACiB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAkDrF;;;;;;;OAOG;mBACkB,cAAc;IA2HnC;;;;;;;;OAQG;mBACkB,mBAAmB;IA2HxC;;;;OAIG;WACiB,6BAA6B,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAoCxG"}
|