@willieee802/zigbee-herdsman 0.19.2 → 0.34.3
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 +376 -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 -146
- 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 +817 -0
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/emberAdapter.js +2981 -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 +97 -0
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/oneWaitress.js +226 -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 +2184 -0
- package/dist/adapter/ember/enums.d.ts.map +1 -0
- package/dist/adapter/ember/enums.js +2391 -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 +2664 -0
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -0
- package/dist/adapter/ember/ezsp/ezsp.js +6438 -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 +451 -0
- package/dist/adapter/ember/uart/ash.d.ts.map +1 -0
- package/dist/adapter/ember/uart/ash.js +1584 -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 +9 -9
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.js +72 -53
- package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +61 -59
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +629 -603
- 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 +106 -103
- package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/driver.js +731 -639
- 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 +651 -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.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.js +77 -74
- 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 +18 -18
- 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 +10 -8
- package/dist/adapter/serialPort.d.ts.map +1 -1
- package/dist/adapter/serialPort.js +53 -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.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.js +462 -460
- 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 +891 -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 -69
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +689 -678
- 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 -101
- 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 +724 -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 -816
- 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 +5520 -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 -15
- package/dist/zcl/index.d.ts.map +1 -1
- package/dist/zcl/index.js +55 -55
- package/dist/zcl/index.js.map +1 -1
- 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 -45
- package/dist/zcl/zclFrame.d.ts.map +1 -1
- package/dist/zcl/zclFrame.js +351 -347
- package/dist/zcl/zclFrame.js.map +1 -1
- package/dist/zcl/zclHeader.d.ts +9 -0
- package/dist/zcl/zclHeader.d.ts.map +1 -0
- package/dist/zcl/zclHeader.js +3 -0
- package/dist/zcl/zclHeader.js.map +1 -0
- 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
|
@@ -1,444 +1,444 @@
|
|
|
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
|
-
/* istanbul ignore file */
|
|
7
|
-
/* eslint-disable */
|
|
8
|
-
const MIN_BUFFER_SIZE = 3;
|
|
9
|
-
const littleEndian = true;
|
|
10
|
-
const constants_1 = __importDefault(require("./constants"));
|
|
11
|
-
const driver_1 = require("./driver");
|
|
12
|
-
const debug_1 = __importDefault(require("debug"));
|
|
13
|
-
const debug = (0, debug_1.default)('zigbee-herdsman:deconz:frameParser');
|
|
14
|
-
var lastReceivedGpInd = { srcId: 0, commandId: 0, frameCounter: 0 };
|
|
15
|
-
var events = require('events');
|
|
16
|
-
var frameParserEvents = new events.EventEmitter();
|
|
17
|
-
module.exports.frameParserEvents = frameParserEvents;
|
|
18
|
-
function parseReadParameterResponse(view) {
|
|
19
|
-
const parameterId = view.getUint8(7);
|
|
20
|
-
switch (parameterId) {
|
|
21
|
-
case constants_1.default.PARAM.Network.MAC:
|
|
22
|
-
const mac = view.getBigUint64(8, littleEndian).toString(16);
|
|
23
|
-
let result = mac;
|
|
24
|
-
while (result.length < 16) {
|
|
25
|
-
result = "0" + result;
|
|
26
|
-
}
|
|
27
|
-
result = "0x" + result;
|
|
28
|
-
debug(`MAC: ${result}`);
|
|
29
|
-
return result;
|
|
30
|
-
case constants_1.default.PARAM.Network.PAN_ID:
|
|
31
|
-
const panId = view.getUint16(8, littleEndian);
|
|
32
|
-
debug('PANID: ' + panId.toString(16));
|
|
33
|
-
return panId;
|
|
34
|
-
case constants_1.default.PARAM.Network.NWK_ADDRESS:
|
|
35
|
-
const nwkAddr = view.getUint16(8, littleEndian);
|
|
36
|
-
debug('NWKADDR: ' + nwkAddr.toString(16));
|
|
37
|
-
return nwkAddr;
|
|
38
|
-
case constants_1.default.PARAM.Network.EXT_PAN_ID:
|
|
39
|
-
const extPanId = view.getBigUint64(8, littleEndian).toString(16);
|
|
40
|
-
let res = extPanId;
|
|
41
|
-
while (res.length < 16) {
|
|
42
|
-
res = "0" + res;
|
|
43
|
-
}
|
|
44
|
-
res = "0x" + res;
|
|
45
|
-
debug(`EXT_PANID: ${res}`);
|
|
46
|
-
return res;
|
|
47
|
-
case constants_1.default.PARAM.Network.APS_EXT_PAN_ID:
|
|
48
|
-
const apsExtPanId = view.getBigUint64(8, littleEndian).toString(16);
|
|
49
|
-
let resAEPID = apsExtPanId;
|
|
50
|
-
while (resAEPID.length < 16) {
|
|
51
|
-
resAEPID = "0" + resAEPID;
|
|
52
|
-
}
|
|
53
|
-
resAEPID = "0x" + resAEPID;
|
|
54
|
-
debug(`APS_EXT_PANID: ${resAEPID}`);
|
|
55
|
-
return resAEPID;
|
|
56
|
-
case constants_1.default.PARAM.Network.NETWORK_KEY:
|
|
57
|
-
const networkKey1 = view.getBigUint64(9).toString(16);
|
|
58
|
-
let res1 = networkKey1;
|
|
59
|
-
while (res1.length < 16) {
|
|
60
|
-
res1 = "0" + res1;
|
|
61
|
-
}
|
|
62
|
-
const networkKey2 = view.getBigUint64(17).toString(16);
|
|
63
|
-
let res2 = networkKey2;
|
|
64
|
-
while (res2.length < 16) {
|
|
65
|
-
res2 = "0" + res2;
|
|
66
|
-
}
|
|
67
|
-
debug('NETWORK_KEY: hidden');
|
|
68
|
-
return "0x" + res1 + res2;
|
|
69
|
-
case constants_1.default.PARAM.Network.CHANNEL:
|
|
70
|
-
const channel = view.getUint8(8);
|
|
71
|
-
debug('CHANNEL: ' + channel);
|
|
72
|
-
return channel;
|
|
73
|
-
case constants_1.default.PARAM.Network.CHANNEL_MASK:
|
|
74
|
-
const chMask = view.getUint32(8, littleEndian);
|
|
75
|
-
debug('CHANNELMASK: ' + chMask.toString(16));
|
|
76
|
-
return chMask;
|
|
77
|
-
case constants_1.default.PARAM.Network.PERMIT_JOIN:
|
|
78
|
-
const permitJoin = view.getUint8(8);
|
|
79
|
-
debug('PERMIT_JOIN: ' + permitJoin);
|
|
80
|
-
return permitJoin;
|
|
81
|
-
case constants_1.default.PARAM.Network.WATCHDOG_TTL:
|
|
82
|
-
const ttl = view.getUint32(8);
|
|
83
|
-
debug('WATCHDOG_TTL: ' + ttl);
|
|
84
|
-
return ttl;
|
|
85
|
-
default:
|
|
86
|
-
//throw new Error(`unknown parameter id ${parameterId}`);
|
|
87
|
-
debug(`unknown parameter id ${parameterId}`);
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function parseReadFirmwareResponse(view) {
|
|
92
|
-
const fw = [view.getUint8(5), view.getUint8(6), view.getUint8(7), view.getUint8(8)];
|
|
93
|
-
debug("read firmware version response - version: " + fw);
|
|
94
|
-
return fw;
|
|
95
|
-
}
|
|
96
|
-
function parseDeviceStateResponse(view) {
|
|
97
|
-
const flag = view.getUint8(5);
|
|
98
|
-
debug("device state: " + flag.toString(2));
|
|
99
|
-
frameParserEvents.emit('receivedDataNotification', flag);
|
|
100
|
-
return flag;
|
|
101
|
-
}
|
|
102
|
-
function parseChangeNetworkStateResponse(view) {
|
|
103
|
-
const status = view.getUint8(2);
|
|
104
|
-
const state = view.getUint8(5);
|
|
105
|
-
debug("change network state - status: " + status + " new state: " + state);
|
|
106
|
-
return state;
|
|
107
|
-
}
|
|
108
|
-
function parseQuerySendDataStateResponse(view) {
|
|
109
|
-
try {
|
|
110
|
-
const response = {};
|
|
111
|
-
let buf2, buf3;
|
|
112
|
-
response.commandId = view.getUint8(0);
|
|
113
|
-
response.seqNr = view.getUint8(1);
|
|
114
|
-
response.status = view.getUint8(2);
|
|
115
|
-
if (response.status !== 0) {
|
|
116
|
-
if (response.status !== 5) {
|
|
117
|
-
debug("DATA_CONFIRM RESPONSE - seqNr.: " + response.seqNr + " status: " + response.status);
|
|
118
|
-
}
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
response.frameLength = 7;
|
|
122
|
-
response.payloadLength = view.getUint16(5, littleEndian);
|
|
123
|
-
response.deviceState = view.getUint8(7);
|
|
124
|
-
response.requestId = view.getUint8(8);
|
|
125
|
-
response.destAddrMode = view.getUint8(9);
|
|
126
|
-
let destAddr = "";
|
|
127
|
-
if (response.destAddrMode === 0x03) {
|
|
128
|
-
let res = view.getBigUint64(10, littleEndian).toString(16);
|
|
129
|
-
while (res.length < 16) {
|
|
130
|
-
res = "0" + res;
|
|
131
|
-
}
|
|
132
|
-
response.destAddr64 = res;
|
|
133
|
-
buf2 = view.buffer.slice(18, view.buffer.byteLength);
|
|
134
|
-
destAddr = response.destAddr64;
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
response.destAddr16 = view.getUint16(10, littleEndian);
|
|
138
|
-
buf2 = view.buffer.slice(12, view.buffer.byteLength);
|
|
139
|
-
destAddr = response.destAddr16.toString(16);
|
|
140
|
-
}
|
|
141
|
-
if (response.destAddrMode === 0x02 || response.destAddrMode === 0x03) {
|
|
142
|
-
response.destEndpoint = view.getUint8(view.byteLength - 7);
|
|
143
|
-
}
|
|
144
|
-
response.srcEndpoint = view.getUint8(view.byteLength - 6);
|
|
145
|
-
response.confirmStatus = view.getInt8(view.byteLength - 5);
|
|
146
|
-
let newStatus = response.deviceState.toString(2);
|
|
147
|
-
for (let l = 0; l <= (8 - newStatus.length); l++) {
|
|
148
|
-
newStatus = "0" + newStatus;
|
|
149
|
-
}
|
|
150
|
-
// resolve send data request promise
|
|
151
|
-
const i = driver_1.apsBusyQueue.findIndex((r) => (r.request && r.request.requestId === response.requestId));
|
|
152
|
-
if (i < 0) {
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
clearTimeout(driver_1.enableRtsTimeout);
|
|
156
|
-
(0, driver_1.enableRTS)(); // enable ReadyToSend because confirm received
|
|
157
|
-
const req = driver_1.apsBusyQueue[i];
|
|
158
|
-
// TODO timeout (at driver.ts)
|
|
159
|
-
if (response.confirmStatus !== 0) {
|
|
160
|
-
// reject if status is not SUCCESS
|
|
161
|
-
//debug("REJECT APS_REQUEST - request id: " + response.requestId + " confirm status: " + response.confirmStatus);
|
|
162
|
-
req.reject(response.confirmStatus);
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
//debug("RESOLVE APS_REQUEST - request id: " + response.requestId + " confirm status: " + response.confirmStatus);
|
|
166
|
-
req.resolve(response.confirmStatus);
|
|
167
|
-
}
|
|
168
|
-
//remove from busyqueue
|
|
169
|
-
driver_1.apsBusyQueue.splice(i, 1);
|
|
170
|
-
debug("DATA_CONFIRM RESPONSE - destAddr: 0x" + destAddr + " request id: " + response.requestId + " confirm status: " + response.confirmStatus);
|
|
171
|
-
frameParserEvents.emit('receivedDataNotification', response.deviceState);
|
|
172
|
-
return response;
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
debug("DATA_CONFIRM RESPONSE - " + error);
|
|
176
|
-
return null;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
function parseReadReceivedDataResponse(view) {
|
|
180
|
-
// min 28 bytelength
|
|
181
|
-
try {
|
|
182
|
-
const response = {};
|
|
183
|
-
let buf2, buf3;
|
|
184
|
-
response.commandId = view.getUint8(0);
|
|
185
|
-
response.seqNr = view.getUint8(1);
|
|
186
|
-
response.status = view.getUint8(2);
|
|
187
|
-
if (response.status != 0) {
|
|
188
|
-
if (response.status !== 5) {
|
|
189
|
-
debug("DATA_INDICATION RESPONSE - seqNr.: " + response.seqNr + " status: " + response.status);
|
|
190
|
-
}
|
|
191
|
-
return null;
|
|
192
|
-
}
|
|
193
|
-
response.frameLength = view.getUint16(3, littleEndian);
|
|
194
|
-
response.payloadLength = view.getUint16(5, littleEndian);
|
|
195
|
-
response.deviceState = view.getUint8(7);
|
|
196
|
-
response.destAddrMode = view.getUint8(8);
|
|
197
|
-
let destAddr = "";
|
|
198
|
-
if (response.destAddrMode === 0x03) {
|
|
199
|
-
let res = view.getBigUint64(9, littleEndian).toString(16);
|
|
200
|
-
while (res.length < 16) {
|
|
201
|
-
res = "0" + res;
|
|
202
|
-
}
|
|
203
|
-
response.destAddr64 = res;
|
|
204
|
-
buf2 = view.buffer.slice(17, view.buffer.byteLength);
|
|
205
|
-
destAddr = response.destAddr64;
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
response.destAddr16 = view.getUint16(9, littleEndian);
|
|
209
|
-
buf2 = view.buffer.slice(11, view.buffer.byteLength);
|
|
210
|
-
destAddr = response.destAddr16.toString(16);
|
|
211
|
-
}
|
|
212
|
-
view = new DataView(buf2);
|
|
213
|
-
response.destEndpoint = view.getUint8(0);
|
|
214
|
-
response.srcAddrMode = view.getUint8(1);
|
|
215
|
-
let srcAddr = "";
|
|
216
|
-
if (response.srcAddrMode === 0x02 || response.srcAddrMode === 0x04) {
|
|
217
|
-
response.srcAddr16 = view.getUint16(2, littleEndian);
|
|
218
|
-
buf3 = view.buffer.slice(4, view.buffer.byteLength);
|
|
219
|
-
srcAddr = response.srcAddr16.toString(16);
|
|
220
|
-
}
|
|
221
|
-
if (response.srcAddrMode === 0x03 || response.srcAddrMode === 0x04) {
|
|
222
|
-
let res = view.getBigUint64(2, littleEndian).toString(16);
|
|
223
|
-
while (res.length < 16) {
|
|
224
|
-
res = "0" + res;
|
|
225
|
-
}
|
|
226
|
-
response.srcAddr64 = res;
|
|
227
|
-
buf3 = view.buffer.slice(10, view.buffer.byteLength);
|
|
228
|
-
srcAddr = response.srcAddr64;
|
|
229
|
-
}
|
|
230
|
-
view = new DataView(buf3);
|
|
231
|
-
response.srcEndpoint = view.getUint8(0);
|
|
232
|
-
response.profileId = view.getUint16(1, littleEndian);
|
|
233
|
-
response.clusterId = view.getUint16(3, littleEndian);
|
|
234
|
-
response.asduLength = view.getUint16(5, littleEndian);
|
|
235
|
-
let payload = [];
|
|
236
|
-
let i = 0;
|
|
237
|
-
for (let u = 7; u < (response.asduLength + 7); u++) {
|
|
238
|
-
payload[i] = view.getUint8(u);
|
|
239
|
-
i++;
|
|
240
|
-
}
|
|
241
|
-
response.asduPayload = payload;
|
|
242
|
-
response.lqi = view.getUint8(view.byteLength - 8);
|
|
243
|
-
response.rssi = view.getInt8(view.byteLength - 3);
|
|
244
|
-
let newStatus = response.deviceState.toString(2);
|
|
245
|
-
for (let l = 0; l <= (8 - newStatus.length); l++) {
|
|
246
|
-
newStatus = "0" + newStatus;
|
|
247
|
-
}
|
|
248
|
-
debug("DATA_INDICATION RESPONSE - seqNr. " + response.seqNr + " srcAddr: 0x" + srcAddr + " destAddr: 0x" + destAddr + " profile id: 0x" + response.profileId.toString(16) + " cluster id: 0x" + response.clusterId.toString(16) + " lqi: " + response.lqi);
|
|
249
|
-
debug("response payload: " + payload);
|
|
250
|
-
frameParserEvents.emit('receivedDataPayload', response);
|
|
251
|
-
frameParserEvents.emit('receivedDataNotification', response.deviceState);
|
|
252
|
-
return response;
|
|
253
|
-
}
|
|
254
|
-
catch (error) {
|
|
255
|
-
debug("DATA_INDICATION RESPONSE - " + error);
|
|
256
|
-
return null;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
function parseEnqueueSendDataResponse(view) {
|
|
260
|
-
try {
|
|
261
|
-
const status = view.getUint8(2);
|
|
262
|
-
const requestId = view.getUint8(8);
|
|
263
|
-
const deviceState = view.getUint8(7);
|
|
264
|
-
debug("DATA_REQUEST RESPONSE - request id: " + requestId + " status: " + status);
|
|
265
|
-
frameParserEvents.emit('receivedDataNotification', deviceState);
|
|
266
|
-
return deviceState;
|
|
267
|
-
}
|
|
268
|
-
catch (error) {
|
|
269
|
-
debug("parseEnqueueSendDataResponse - " + error);
|
|
270
|
-
return null;
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
function parseWriteParameterResponse(view) {
|
|
274
|
-
try {
|
|
275
|
-
const parameterId = view.getUint8(7);
|
|
276
|
-
debug(`write parameter response - parameter id: ${parameterId} - status: ${view.getUint8(2)}`);
|
|
277
|
-
return parameterId;
|
|
278
|
-
}
|
|
279
|
-
catch (error) {
|
|
280
|
-
debug("parseWriteParameterResponse - " + error);
|
|
281
|
-
return null;
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
function parseReceivedDataNotification(view) {
|
|
285
|
-
try {
|
|
286
|
-
const deviceState = view.getUint8(5);
|
|
287
|
-
debug("DEVICE_STATE changed: " + deviceState.toString(2));
|
|
288
|
-
frameParserEvents.emit('receivedDataNotification', deviceState);
|
|
289
|
-
return deviceState;
|
|
290
|
-
}
|
|
291
|
-
catch (error) {
|
|
292
|
-
debug("parseReceivedDataNotification - " + error);
|
|
293
|
-
return null;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
function parseGreenPowerDataIndication(view) {
|
|
297
|
-
try {
|
|
298
|
-
const ind = {};
|
|
299
|
-
ind.seqNr = view.getUint8(1);
|
|
300
|
-
if (view.byteLength < 30) {
|
|
301
|
-
debug("GP data notification");
|
|
302
|
-
ind.id = 0x00; // 0 = notification, 4 = commissioning
|
|
303
|
-
ind.rspId = 0x01; // 1 = pairing, 2 = commissioning
|
|
304
|
-
ind.options = 0;
|
|
305
|
-
view.getUint16(7, littleEndian); // frame ctrl field(7) ext.fcf(8)
|
|
306
|
-
ind.srcId = view.getUint32(9, littleEndian);
|
|
307
|
-
ind.frameCounter = view.getUint32(13, littleEndian);
|
|
308
|
-
ind.commandId = view.getUint8(17);
|
|
309
|
-
ind.commandFrameSize = view.byteLength - 18 - 6; // cut 18 from begin and 4 (sec mic) and 2 from end (cfc)
|
|
310
|
-
let payload = [];
|
|
311
|
-
let i = 0;
|
|
312
|
-
for (let u = 18; u < (ind.commandFrameSize + 18); u++) {
|
|
313
|
-
payload[i] = view.getUint8(u);
|
|
314
|
-
i++;
|
|
315
|
-
}
|
|
316
|
-
ind.commandFrame = payload;
|
|
317
|
-
}
|
|
318
|
-
else {
|
|
319
|
-
debug("GP commissioning notification");
|
|
320
|
-
ind.id = 0x04; // 0 = notification, 4 = commissioning
|
|
321
|
-
ind.rspId = 0x01; // 1 = pairing, 2 = commissioning
|
|
322
|
-
ind.options = view.getUint16(14, littleEndian); // opt(14) ext.opt(15)
|
|
323
|
-
ind.srcId = view.getUint32(8, littleEndian);
|
|
324
|
-
ind.frameCounter = view.getUint32(36, littleEndian);
|
|
325
|
-
ind.commandId = view.getUint8(12);
|
|
326
|
-
ind.commandFrameSize = view.byteLength - 13 - 2; // cut 13 from begin and 2 from end (cfc)
|
|
327
|
-
let payload = [];
|
|
328
|
-
let i = 0;
|
|
329
|
-
for (let u = 13; u < (ind.commandFrameSize + 13); u++) {
|
|
330
|
-
payload[i] = view.getUint8(u);
|
|
331
|
-
i++;
|
|
332
|
-
}
|
|
333
|
-
ind.commandFrame = payload;
|
|
334
|
-
}
|
|
335
|
-
if (!(lastReceivedGpInd.srcId === ind.srcId &&
|
|
336
|
-
lastReceivedGpInd.commandId === ind.commandId &&
|
|
337
|
-
lastReceivedGpInd.frameCounter === ind.frameCounter)) {
|
|
338
|
-
lastReceivedGpInd.srcId = ind.srcId;
|
|
339
|
-
lastReceivedGpInd.commandId = ind.commandId;
|
|
340
|
-
lastReceivedGpInd.frameCounter = ind.frameCounter;
|
|
341
|
-
//debug(`GP_DATA_INDICATION - src id: ${ind.srcId} cmd id: ${ind.commandId} frameCounter: ${ind.frameCounter}`);
|
|
342
|
-
debug(`GP_DATA_INDICATION - src id: 0x${ind.srcId.toString(16)} cmd id: 0x${ind.commandId.toString(16)} frameCounter: 0x${ind.frameCounter.toString(16)}`);
|
|
343
|
-
frameParserEvents.emit('receivedGreenPowerIndication', ind);
|
|
344
|
-
}
|
|
345
|
-
return ind;
|
|
346
|
-
}
|
|
347
|
-
catch (error) {
|
|
348
|
-
debug("GREEN_POWER INDICATION - " + error);
|
|
349
|
-
return null;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
function parseMacPollCommand(view) {
|
|
353
|
-
//debug("Received command MAC_POLL");
|
|
354
|
-
return 28;
|
|
355
|
-
}
|
|
356
|
-
function parseBeaconRequest(view) {
|
|
357
|
-
debug("Received Beacon Request");
|
|
358
|
-
return 31;
|
|
359
|
-
}
|
|
360
|
-
function parseUnknownCommand(view) {
|
|
361
|
-
const id = view.getUint8(0);
|
|
362
|
-
debug(`received unknown command - id ${id}`);
|
|
363
|
-
return id;
|
|
364
|
-
}
|
|
365
|
-
function getParserForCommandId(id) {
|
|
366
|
-
switch (id) {
|
|
367
|
-
case constants_1.default.PARAM.FrameType.ReadParameter:
|
|
368
|
-
return parseReadParameterResponse;
|
|
369
|
-
case constants_1.default.PARAM.FrameType.WriteParameter:
|
|
370
|
-
return parseWriteParameterResponse;
|
|
371
|
-
case constants_1.default.PARAM.FrameType.ReadFirmwareVersion:
|
|
372
|
-
return parseReadFirmwareResponse;
|
|
373
|
-
case constants_1.default.PARAM.FrameType.ReadDeviceState:
|
|
374
|
-
return parseDeviceStateResponse;
|
|
375
|
-
case constants_1.default.PARAM.APS.DATA_INDICATION:
|
|
376
|
-
return parseReadReceivedDataResponse;
|
|
377
|
-
case constants_1.default.PARAM.APS.DATA_REQUEST:
|
|
378
|
-
return parseEnqueueSendDataResponse;
|
|
379
|
-
case constants_1.default.PARAM.APS.DATA_CONFIRM:
|
|
380
|
-
return parseQuerySendDataStateResponse;
|
|
381
|
-
case constants_1.default.PARAM.FrameType.DeviceStateChanged:
|
|
382
|
-
return parseReceivedDataNotification;
|
|
383
|
-
case constants_1.default.PARAM.NetworkState.CHANGE_NETWORK_STATE:
|
|
384
|
-
return parseChangeNetworkStateResponse;
|
|
385
|
-
case constants_1.default.PARAM.FrameType.GreenPowerDataInd:
|
|
386
|
-
return parseGreenPowerDataIndication;
|
|
387
|
-
case 28:
|
|
388
|
-
return parseMacPollCommand;
|
|
389
|
-
case 31:
|
|
390
|
-
return parseBeaconRequest;
|
|
391
|
-
default:
|
|
392
|
-
return parseUnknownCommand;
|
|
393
|
-
//throw new Error(`unknown command id ${id}`);
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
async function processFrame(frame) {
|
|
397
|
-
const [seqNumber, status, command, commandId] = await parseFrame(frame);
|
|
398
|
-
//debug(`process frame with seq: ${seqNumber} status: ${status}`);
|
|
399
|
-
let queue = driver_1.busyQueue;
|
|
400
|
-
if (commandId === constants_1.default.PARAM.APS.DATA_INDICATION ||
|
|
401
|
-
commandId === constants_1.default.PARAM.APS.DATA_REQUEST ||
|
|
402
|
-
commandId === constants_1.default.PARAM.APS.DATA_CONFIRM) {
|
|
403
|
-
queue = driver_1.apsBusyQueue;
|
|
404
|
-
}
|
|
405
|
-
const i = queue.findIndex((r) => r.seqNumber === seqNumber);
|
|
406
|
-
if (i < 0) {
|
|
407
|
-
return;
|
|
408
|
-
}
|
|
409
|
-
const req = queue[i];
|
|
410
|
-
if (commandId === constants_1.default.PARAM.APS.DATA_REQUEST) {
|
|
411
|
-
// if confirm is true resolve request only when data confirm arrives
|
|
412
|
-
// TODO only return if a confirm was requested. if no confirm needed: go ahead
|
|
413
|
-
//if (req.confirm === true) {
|
|
414
|
-
return;
|
|
415
|
-
//}
|
|
416
|
-
}
|
|
417
|
-
//remove from busyqueue
|
|
418
|
-
queue.splice(i, 1);
|
|
419
|
-
if (status !== 0) {
|
|
420
|
-
// reject if status is not SUCCESS
|
|
421
|
-
//debug("REJECT REQUEST");
|
|
422
|
-
req.reject({ status });
|
|
423
|
-
}
|
|
424
|
-
else {
|
|
425
|
-
//debug("RESOLVE REQUEST");
|
|
426
|
-
req.resolve(command);
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
function parseFrame(frame) {
|
|
430
|
-
if (frame.length < MIN_BUFFER_SIZE) {
|
|
431
|
-
debug("received frame size to small - discard frame");
|
|
432
|
-
return [null, null, null, null];
|
|
433
|
-
}
|
|
434
|
-
const view = new DataView(frame.buffer);
|
|
435
|
-
const commandId = view.getUint8(0);
|
|
436
|
-
const seqNumber = view.getUint8(1);
|
|
437
|
-
const status = view.getUint8(2);
|
|
438
|
-
//const frameLength = view.getUint16(3, littleEndian);
|
|
439
|
-
//const payloadLength = view.getUint16(5, littleEndian);
|
|
440
|
-
const parser = getParserForCommandId(commandId);
|
|
441
|
-
return [seqNumber, status, parser(view), commandId];
|
|
442
|
-
}
|
|
443
|
-
exports.default = processFrame;
|
|
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
|
+
/* istanbul ignore file */
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
const MIN_BUFFER_SIZE = 3;
|
|
9
|
+
const littleEndian = true;
|
|
10
|
+
const constants_1 = __importDefault(require("./constants"));
|
|
11
|
+
const driver_1 = require("./driver");
|
|
12
|
+
const debug_1 = __importDefault(require("debug"));
|
|
13
|
+
const debug = (0, debug_1.default)('zigbee-herdsman:deconz:frameParser');
|
|
14
|
+
var lastReceivedGpInd = { srcId: 0, commandId: 0, frameCounter: 0 };
|
|
15
|
+
var events = require('events');
|
|
16
|
+
var frameParserEvents = new events.EventEmitter();
|
|
17
|
+
module.exports.frameParserEvents = frameParserEvents;
|
|
18
|
+
function parseReadParameterResponse(view) {
|
|
19
|
+
const parameterId = view.getUint8(7);
|
|
20
|
+
switch (parameterId) {
|
|
21
|
+
case constants_1.default.PARAM.Network.MAC:
|
|
22
|
+
const mac = view.getBigUint64(8, littleEndian).toString(16);
|
|
23
|
+
let result = mac;
|
|
24
|
+
while (result.length < 16) {
|
|
25
|
+
result = "0" + result;
|
|
26
|
+
}
|
|
27
|
+
result = "0x" + result;
|
|
28
|
+
debug(`MAC: ${result}`);
|
|
29
|
+
return result;
|
|
30
|
+
case constants_1.default.PARAM.Network.PAN_ID:
|
|
31
|
+
const panId = view.getUint16(8, littleEndian);
|
|
32
|
+
debug('PANID: ' + panId.toString(16));
|
|
33
|
+
return panId;
|
|
34
|
+
case constants_1.default.PARAM.Network.NWK_ADDRESS:
|
|
35
|
+
const nwkAddr = view.getUint16(8, littleEndian);
|
|
36
|
+
debug('NWKADDR: ' + nwkAddr.toString(16));
|
|
37
|
+
return nwkAddr;
|
|
38
|
+
case constants_1.default.PARAM.Network.EXT_PAN_ID:
|
|
39
|
+
const extPanId = view.getBigUint64(8, littleEndian).toString(16);
|
|
40
|
+
let res = extPanId;
|
|
41
|
+
while (res.length < 16) {
|
|
42
|
+
res = "0" + res;
|
|
43
|
+
}
|
|
44
|
+
res = "0x" + res;
|
|
45
|
+
debug(`EXT_PANID: ${res}`);
|
|
46
|
+
return res;
|
|
47
|
+
case constants_1.default.PARAM.Network.APS_EXT_PAN_ID:
|
|
48
|
+
const apsExtPanId = view.getBigUint64(8, littleEndian).toString(16);
|
|
49
|
+
let resAEPID = apsExtPanId;
|
|
50
|
+
while (resAEPID.length < 16) {
|
|
51
|
+
resAEPID = "0" + resAEPID;
|
|
52
|
+
}
|
|
53
|
+
resAEPID = "0x" + resAEPID;
|
|
54
|
+
debug(`APS_EXT_PANID: ${resAEPID}`);
|
|
55
|
+
return resAEPID;
|
|
56
|
+
case constants_1.default.PARAM.Network.NETWORK_KEY:
|
|
57
|
+
const networkKey1 = view.getBigUint64(9).toString(16);
|
|
58
|
+
let res1 = networkKey1;
|
|
59
|
+
while (res1.length < 16) {
|
|
60
|
+
res1 = "0" + res1;
|
|
61
|
+
}
|
|
62
|
+
const networkKey2 = view.getBigUint64(17).toString(16);
|
|
63
|
+
let res2 = networkKey2;
|
|
64
|
+
while (res2.length < 16) {
|
|
65
|
+
res2 = "0" + res2;
|
|
66
|
+
}
|
|
67
|
+
debug('NETWORK_KEY: hidden');
|
|
68
|
+
return "0x" + res1 + res2;
|
|
69
|
+
case constants_1.default.PARAM.Network.CHANNEL:
|
|
70
|
+
const channel = view.getUint8(8);
|
|
71
|
+
debug('CHANNEL: ' + channel);
|
|
72
|
+
return channel;
|
|
73
|
+
case constants_1.default.PARAM.Network.CHANNEL_MASK:
|
|
74
|
+
const chMask = view.getUint32(8, littleEndian);
|
|
75
|
+
debug('CHANNELMASK: ' + chMask.toString(16));
|
|
76
|
+
return chMask;
|
|
77
|
+
case constants_1.default.PARAM.Network.PERMIT_JOIN:
|
|
78
|
+
const permitJoin = view.getUint8(8);
|
|
79
|
+
debug('PERMIT_JOIN: ' + permitJoin);
|
|
80
|
+
return permitJoin;
|
|
81
|
+
case constants_1.default.PARAM.Network.WATCHDOG_TTL:
|
|
82
|
+
const ttl = view.getUint32(8);
|
|
83
|
+
debug('WATCHDOG_TTL: ' + ttl);
|
|
84
|
+
return ttl;
|
|
85
|
+
default:
|
|
86
|
+
//throw new Error(`unknown parameter id ${parameterId}`);
|
|
87
|
+
debug(`unknown parameter id ${parameterId}`);
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function parseReadFirmwareResponse(view) {
|
|
92
|
+
const fw = [view.getUint8(5), view.getUint8(6), view.getUint8(7), view.getUint8(8)];
|
|
93
|
+
debug("read firmware version response - version: " + fw);
|
|
94
|
+
return fw;
|
|
95
|
+
}
|
|
96
|
+
function parseDeviceStateResponse(view) {
|
|
97
|
+
const flag = view.getUint8(5);
|
|
98
|
+
debug("device state: " + flag.toString(2));
|
|
99
|
+
frameParserEvents.emit('receivedDataNotification', flag);
|
|
100
|
+
return flag;
|
|
101
|
+
}
|
|
102
|
+
function parseChangeNetworkStateResponse(view) {
|
|
103
|
+
const status = view.getUint8(2);
|
|
104
|
+
const state = view.getUint8(5);
|
|
105
|
+
debug("change network state - status: " + status + " new state: " + state);
|
|
106
|
+
return state;
|
|
107
|
+
}
|
|
108
|
+
function parseQuerySendDataStateResponse(view) {
|
|
109
|
+
try {
|
|
110
|
+
const response = {};
|
|
111
|
+
let buf2, buf3;
|
|
112
|
+
response.commandId = view.getUint8(0);
|
|
113
|
+
response.seqNr = view.getUint8(1);
|
|
114
|
+
response.status = view.getUint8(2);
|
|
115
|
+
if (response.status !== 0) {
|
|
116
|
+
if (response.status !== 5) {
|
|
117
|
+
debug("DATA_CONFIRM RESPONSE - seqNr.: " + response.seqNr + " status: " + response.status);
|
|
118
|
+
}
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
response.frameLength = 7;
|
|
122
|
+
response.payloadLength = view.getUint16(5, littleEndian);
|
|
123
|
+
response.deviceState = view.getUint8(7);
|
|
124
|
+
response.requestId = view.getUint8(8);
|
|
125
|
+
response.destAddrMode = view.getUint8(9);
|
|
126
|
+
let destAddr = "";
|
|
127
|
+
if (response.destAddrMode === 0x03) {
|
|
128
|
+
let res = view.getBigUint64(10, littleEndian).toString(16);
|
|
129
|
+
while (res.length < 16) {
|
|
130
|
+
res = "0" + res;
|
|
131
|
+
}
|
|
132
|
+
response.destAddr64 = res;
|
|
133
|
+
buf2 = view.buffer.slice(18, view.buffer.byteLength);
|
|
134
|
+
destAddr = response.destAddr64;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
response.destAddr16 = view.getUint16(10, littleEndian);
|
|
138
|
+
buf2 = view.buffer.slice(12, view.buffer.byteLength);
|
|
139
|
+
destAddr = response.destAddr16.toString(16);
|
|
140
|
+
}
|
|
141
|
+
if (response.destAddrMode === 0x02 || response.destAddrMode === 0x03) {
|
|
142
|
+
response.destEndpoint = view.getUint8(view.byteLength - 7);
|
|
143
|
+
}
|
|
144
|
+
response.srcEndpoint = view.getUint8(view.byteLength - 6);
|
|
145
|
+
response.confirmStatus = view.getInt8(view.byteLength - 5);
|
|
146
|
+
let newStatus = response.deviceState.toString(2);
|
|
147
|
+
for (let l = 0; l <= (8 - newStatus.length); l++) {
|
|
148
|
+
newStatus = "0" + newStatus;
|
|
149
|
+
}
|
|
150
|
+
// resolve send data request promise
|
|
151
|
+
const i = driver_1.apsBusyQueue.findIndex((r) => (r.request && r.request.requestId === response.requestId));
|
|
152
|
+
if (i < 0) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
clearTimeout(driver_1.enableRtsTimeout);
|
|
156
|
+
(0, driver_1.enableRTS)(); // enable ReadyToSend because confirm received
|
|
157
|
+
const req = driver_1.apsBusyQueue[i];
|
|
158
|
+
// TODO timeout (at driver.ts)
|
|
159
|
+
if (response.confirmStatus !== 0) {
|
|
160
|
+
// reject if status is not SUCCESS
|
|
161
|
+
//debug("REJECT APS_REQUEST - request id: " + response.requestId + " confirm status: " + response.confirmStatus);
|
|
162
|
+
req.reject(response.confirmStatus);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
//debug("RESOLVE APS_REQUEST - request id: " + response.requestId + " confirm status: " + response.confirmStatus);
|
|
166
|
+
req.resolve(response.confirmStatus);
|
|
167
|
+
}
|
|
168
|
+
//remove from busyqueue
|
|
169
|
+
driver_1.apsBusyQueue.splice(i, 1);
|
|
170
|
+
debug("DATA_CONFIRM RESPONSE - destAddr: 0x" + destAddr + " request id: " + response.requestId + " confirm status: " + response.confirmStatus);
|
|
171
|
+
frameParserEvents.emit('receivedDataNotification', response.deviceState);
|
|
172
|
+
return response;
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
debug("DATA_CONFIRM RESPONSE - " + error);
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
function parseReadReceivedDataResponse(view) {
|
|
180
|
+
// min 28 bytelength
|
|
181
|
+
try {
|
|
182
|
+
const response = {};
|
|
183
|
+
let buf2, buf3;
|
|
184
|
+
response.commandId = view.getUint8(0);
|
|
185
|
+
response.seqNr = view.getUint8(1);
|
|
186
|
+
response.status = view.getUint8(2);
|
|
187
|
+
if (response.status != 0) {
|
|
188
|
+
if (response.status !== 5) {
|
|
189
|
+
debug("DATA_INDICATION RESPONSE - seqNr.: " + response.seqNr + " status: " + response.status);
|
|
190
|
+
}
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
response.frameLength = view.getUint16(3, littleEndian);
|
|
194
|
+
response.payloadLength = view.getUint16(5, littleEndian);
|
|
195
|
+
response.deviceState = view.getUint8(7);
|
|
196
|
+
response.destAddrMode = view.getUint8(8);
|
|
197
|
+
let destAddr = "";
|
|
198
|
+
if (response.destAddrMode === 0x03) {
|
|
199
|
+
let res = view.getBigUint64(9, littleEndian).toString(16);
|
|
200
|
+
while (res.length < 16) {
|
|
201
|
+
res = "0" + res;
|
|
202
|
+
}
|
|
203
|
+
response.destAddr64 = res;
|
|
204
|
+
buf2 = view.buffer.slice(17, view.buffer.byteLength);
|
|
205
|
+
destAddr = response.destAddr64;
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
response.destAddr16 = view.getUint16(9, littleEndian);
|
|
209
|
+
buf2 = view.buffer.slice(11, view.buffer.byteLength);
|
|
210
|
+
destAddr = response.destAddr16.toString(16);
|
|
211
|
+
}
|
|
212
|
+
view = new DataView(buf2);
|
|
213
|
+
response.destEndpoint = view.getUint8(0);
|
|
214
|
+
response.srcAddrMode = view.getUint8(1);
|
|
215
|
+
let srcAddr = "";
|
|
216
|
+
if (response.srcAddrMode === 0x02 || response.srcAddrMode === 0x04) {
|
|
217
|
+
response.srcAddr16 = view.getUint16(2, littleEndian);
|
|
218
|
+
buf3 = view.buffer.slice(4, view.buffer.byteLength);
|
|
219
|
+
srcAddr = response.srcAddr16.toString(16);
|
|
220
|
+
}
|
|
221
|
+
if (response.srcAddrMode === 0x03 || response.srcAddrMode === 0x04) {
|
|
222
|
+
let res = view.getBigUint64(2, littleEndian).toString(16);
|
|
223
|
+
while (res.length < 16) {
|
|
224
|
+
res = "0" + res;
|
|
225
|
+
}
|
|
226
|
+
response.srcAddr64 = res;
|
|
227
|
+
buf3 = view.buffer.slice(10, view.buffer.byteLength);
|
|
228
|
+
srcAddr = response.srcAddr64;
|
|
229
|
+
}
|
|
230
|
+
view = new DataView(buf3);
|
|
231
|
+
response.srcEndpoint = view.getUint8(0);
|
|
232
|
+
response.profileId = view.getUint16(1, littleEndian);
|
|
233
|
+
response.clusterId = view.getUint16(3, littleEndian);
|
|
234
|
+
response.asduLength = view.getUint16(5, littleEndian);
|
|
235
|
+
let payload = [];
|
|
236
|
+
let i = 0;
|
|
237
|
+
for (let u = 7; u < (response.asduLength + 7); u++) {
|
|
238
|
+
payload[i] = view.getUint8(u);
|
|
239
|
+
i++;
|
|
240
|
+
}
|
|
241
|
+
response.asduPayload = payload;
|
|
242
|
+
response.lqi = view.getUint8(view.byteLength - 8);
|
|
243
|
+
response.rssi = view.getInt8(view.byteLength - 3);
|
|
244
|
+
let newStatus = response.deviceState.toString(2);
|
|
245
|
+
for (let l = 0; l <= (8 - newStatus.length); l++) {
|
|
246
|
+
newStatus = "0" + newStatus;
|
|
247
|
+
}
|
|
248
|
+
debug("DATA_INDICATION RESPONSE - seqNr. " + response.seqNr + " srcAddr: 0x" + srcAddr + " destAddr: 0x" + destAddr + " profile id: 0x" + response.profileId.toString(16) + " cluster id: 0x" + response.clusterId.toString(16) + " lqi: " + response.lqi);
|
|
249
|
+
debug("response payload: " + payload);
|
|
250
|
+
frameParserEvents.emit('receivedDataPayload', response);
|
|
251
|
+
frameParserEvents.emit('receivedDataNotification', response.deviceState);
|
|
252
|
+
return response;
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
debug("DATA_INDICATION RESPONSE - " + error);
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function parseEnqueueSendDataResponse(view) {
|
|
260
|
+
try {
|
|
261
|
+
const status = view.getUint8(2);
|
|
262
|
+
const requestId = view.getUint8(8);
|
|
263
|
+
const deviceState = view.getUint8(7);
|
|
264
|
+
debug("DATA_REQUEST RESPONSE - request id: " + requestId + " status: " + status);
|
|
265
|
+
frameParserEvents.emit('receivedDataNotification', deviceState);
|
|
266
|
+
return deviceState;
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
debug("parseEnqueueSendDataResponse - " + error);
|
|
270
|
+
return null;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
function parseWriteParameterResponse(view) {
|
|
274
|
+
try {
|
|
275
|
+
const parameterId = view.getUint8(7);
|
|
276
|
+
debug(`write parameter response - parameter id: ${parameterId} - status: ${view.getUint8(2)}`);
|
|
277
|
+
return parameterId;
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
debug("parseWriteParameterResponse - " + error);
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
function parseReceivedDataNotification(view) {
|
|
285
|
+
try {
|
|
286
|
+
const deviceState = view.getUint8(5);
|
|
287
|
+
debug("DEVICE_STATE changed: " + deviceState.toString(2));
|
|
288
|
+
frameParserEvents.emit('receivedDataNotification', deviceState);
|
|
289
|
+
return deviceState;
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
debug("parseReceivedDataNotification - " + error);
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
function parseGreenPowerDataIndication(view) {
|
|
297
|
+
try {
|
|
298
|
+
const ind = {};
|
|
299
|
+
ind.seqNr = view.getUint8(1);
|
|
300
|
+
if (view.byteLength < 30) {
|
|
301
|
+
debug("GP data notification");
|
|
302
|
+
ind.id = 0x00; // 0 = notification, 4 = commissioning
|
|
303
|
+
ind.rspId = 0x01; // 1 = pairing, 2 = commissioning
|
|
304
|
+
ind.options = 0;
|
|
305
|
+
view.getUint16(7, littleEndian); // frame ctrl field(7) ext.fcf(8)
|
|
306
|
+
ind.srcId = view.getUint32(9, littleEndian);
|
|
307
|
+
ind.frameCounter = view.getUint32(13, littleEndian);
|
|
308
|
+
ind.commandId = view.getUint8(17);
|
|
309
|
+
ind.commandFrameSize = view.byteLength - 18 - 6; // cut 18 from begin and 4 (sec mic) and 2 from end (cfc)
|
|
310
|
+
let payload = [];
|
|
311
|
+
let i = 0;
|
|
312
|
+
for (let u = 18; u < (ind.commandFrameSize + 18); u++) {
|
|
313
|
+
payload[i] = view.getUint8(u);
|
|
314
|
+
i++;
|
|
315
|
+
}
|
|
316
|
+
ind.commandFrame = payload;
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
debug("GP commissioning notification");
|
|
320
|
+
ind.id = 0x04; // 0 = notification, 4 = commissioning
|
|
321
|
+
ind.rspId = 0x01; // 1 = pairing, 2 = commissioning
|
|
322
|
+
ind.options = view.getUint16(14, littleEndian); // opt(14) ext.opt(15)
|
|
323
|
+
ind.srcId = view.getUint32(8, littleEndian);
|
|
324
|
+
ind.frameCounter = view.getUint32(36, littleEndian);
|
|
325
|
+
ind.commandId = view.getUint8(12);
|
|
326
|
+
ind.commandFrameSize = view.byteLength - 13 - 2; // cut 13 from begin and 2 from end (cfc)
|
|
327
|
+
let payload = [];
|
|
328
|
+
let i = 0;
|
|
329
|
+
for (let u = 13; u < (ind.commandFrameSize + 13); u++) {
|
|
330
|
+
payload[i] = view.getUint8(u);
|
|
331
|
+
i++;
|
|
332
|
+
}
|
|
333
|
+
ind.commandFrame = payload;
|
|
334
|
+
}
|
|
335
|
+
if (!(lastReceivedGpInd.srcId === ind.srcId &&
|
|
336
|
+
lastReceivedGpInd.commandId === ind.commandId &&
|
|
337
|
+
lastReceivedGpInd.frameCounter === ind.frameCounter)) {
|
|
338
|
+
lastReceivedGpInd.srcId = ind.srcId;
|
|
339
|
+
lastReceivedGpInd.commandId = ind.commandId;
|
|
340
|
+
lastReceivedGpInd.frameCounter = ind.frameCounter;
|
|
341
|
+
//debug(`GP_DATA_INDICATION - src id: ${ind.srcId} cmd id: ${ind.commandId} frameCounter: ${ind.frameCounter}`);
|
|
342
|
+
debug(`GP_DATA_INDICATION - src id: 0x${ind.srcId.toString(16)} cmd id: 0x${ind.commandId.toString(16)} frameCounter: 0x${ind.frameCounter.toString(16)}`);
|
|
343
|
+
frameParserEvents.emit('receivedGreenPowerIndication', ind);
|
|
344
|
+
}
|
|
345
|
+
return ind;
|
|
346
|
+
}
|
|
347
|
+
catch (error) {
|
|
348
|
+
debug("GREEN_POWER INDICATION - " + error);
|
|
349
|
+
return null;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
function parseMacPollCommand(view) {
|
|
353
|
+
//debug("Received command MAC_POLL");
|
|
354
|
+
return 28;
|
|
355
|
+
}
|
|
356
|
+
function parseBeaconRequest(view) {
|
|
357
|
+
debug("Received Beacon Request");
|
|
358
|
+
return 31;
|
|
359
|
+
}
|
|
360
|
+
function parseUnknownCommand(view) {
|
|
361
|
+
const id = view.getUint8(0);
|
|
362
|
+
debug(`received unknown command - id ${id}`);
|
|
363
|
+
return id;
|
|
364
|
+
}
|
|
365
|
+
function getParserForCommandId(id) {
|
|
366
|
+
switch (id) {
|
|
367
|
+
case constants_1.default.PARAM.FrameType.ReadParameter:
|
|
368
|
+
return parseReadParameterResponse;
|
|
369
|
+
case constants_1.default.PARAM.FrameType.WriteParameter:
|
|
370
|
+
return parseWriteParameterResponse;
|
|
371
|
+
case constants_1.default.PARAM.FrameType.ReadFirmwareVersion:
|
|
372
|
+
return parseReadFirmwareResponse;
|
|
373
|
+
case constants_1.default.PARAM.FrameType.ReadDeviceState:
|
|
374
|
+
return parseDeviceStateResponse;
|
|
375
|
+
case constants_1.default.PARAM.APS.DATA_INDICATION:
|
|
376
|
+
return parseReadReceivedDataResponse;
|
|
377
|
+
case constants_1.default.PARAM.APS.DATA_REQUEST:
|
|
378
|
+
return parseEnqueueSendDataResponse;
|
|
379
|
+
case constants_1.default.PARAM.APS.DATA_CONFIRM:
|
|
380
|
+
return parseQuerySendDataStateResponse;
|
|
381
|
+
case constants_1.default.PARAM.FrameType.DeviceStateChanged:
|
|
382
|
+
return parseReceivedDataNotification;
|
|
383
|
+
case constants_1.default.PARAM.NetworkState.CHANGE_NETWORK_STATE:
|
|
384
|
+
return parseChangeNetworkStateResponse;
|
|
385
|
+
case constants_1.default.PARAM.FrameType.GreenPowerDataInd:
|
|
386
|
+
return parseGreenPowerDataIndication;
|
|
387
|
+
case 28:
|
|
388
|
+
return parseMacPollCommand;
|
|
389
|
+
case 31:
|
|
390
|
+
return parseBeaconRequest;
|
|
391
|
+
default:
|
|
392
|
+
return parseUnknownCommand;
|
|
393
|
+
//throw new Error(`unknown command id ${id}`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
async function processFrame(frame) {
|
|
397
|
+
const [seqNumber, status, command, commandId] = await parseFrame(frame);
|
|
398
|
+
//debug(`process frame with seq: ${seqNumber} status: ${status}`);
|
|
399
|
+
let queue = driver_1.busyQueue;
|
|
400
|
+
if (commandId === constants_1.default.PARAM.APS.DATA_INDICATION ||
|
|
401
|
+
commandId === constants_1.default.PARAM.APS.DATA_REQUEST ||
|
|
402
|
+
commandId === constants_1.default.PARAM.APS.DATA_CONFIRM) {
|
|
403
|
+
queue = driver_1.apsBusyQueue;
|
|
404
|
+
}
|
|
405
|
+
const i = queue.findIndex((r) => r.seqNumber === seqNumber);
|
|
406
|
+
if (i < 0) {
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
const req = queue[i];
|
|
410
|
+
if (commandId === constants_1.default.PARAM.APS.DATA_REQUEST) {
|
|
411
|
+
// if confirm is true resolve request only when data confirm arrives
|
|
412
|
+
// TODO only return if a confirm was requested. if no confirm needed: go ahead
|
|
413
|
+
//if (req.confirm === true) {
|
|
414
|
+
return;
|
|
415
|
+
//}
|
|
416
|
+
}
|
|
417
|
+
//remove from busyqueue
|
|
418
|
+
queue.splice(i, 1);
|
|
419
|
+
if (status !== 0) {
|
|
420
|
+
// reject if status is not SUCCESS
|
|
421
|
+
//debug("REJECT REQUEST");
|
|
422
|
+
req.reject({ status });
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
//debug("RESOLVE REQUEST");
|
|
426
|
+
req.resolve(command);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
function parseFrame(frame) {
|
|
430
|
+
if (frame.length < MIN_BUFFER_SIZE) {
|
|
431
|
+
debug("received frame size to small - discard frame");
|
|
432
|
+
return [null, null, null, null];
|
|
433
|
+
}
|
|
434
|
+
const view = new DataView(frame.buffer);
|
|
435
|
+
const commandId = view.getUint8(0);
|
|
436
|
+
const seqNumber = view.getUint8(1);
|
|
437
|
+
const status = view.getUint8(2);
|
|
438
|
+
//const frameLength = view.getUint16(3, littleEndian);
|
|
439
|
+
//const payloadLength = view.getUint16(5, littleEndian);
|
|
440
|
+
const parser = getParserForCommandId(commandId);
|
|
441
|
+
return [seqNumber, status, parser(view), commandId];
|
|
442
|
+
}
|
|
443
|
+
exports.default = processFrame;
|
|
444
444
|
//# sourceMappingURL=frameParser.js.map
|