@willieee802/zigbee-herdsman 0.34.3 → 0.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +403 -0
- package/dist/adapter/adapter.d.ts +14 -13
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +15 -17
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +14 -12
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.js +118 -128
- package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
- package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/driver.js +44 -44
- package/dist/adapter/deconz/driver/driver.js.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.js +43 -43
- package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
- package/dist/adapter/deconz/driver/parser.js +6 -6
- package/dist/adapter/deconz/driver/parser.js.map +1 -1
- package/dist/adapter/deconz/driver/writer.js +3 -3
- package/dist/adapter/deconz/driver/writer.js.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.d.ts +60 -71
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.js +453 -492
- package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
- package/dist/adapter/ember/adapter/endpoints.d.ts +5 -3
- package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/endpoints.js +33 -31
- package/dist/adapter/ember/adapter/endpoints.js.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.d.ts +16 -5
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.js +19 -4
- package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
- package/dist/adapter/ember/adapter/requestQueue.d.ts +2 -4
- package/dist/adapter/ember/adapter/requestQueue.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/requestQueue.js +17 -22
- package/dist/adapter/ember/adapter/requestQueue.js.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.js +23 -20
- package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
- package/dist/adapter/ember/consts.d.ts +0 -7
- package/dist/adapter/ember/consts.d.ts.map +1 -1
- package/dist/adapter/ember/consts.js +2 -9
- package/dist/adapter/ember/consts.js.map +1 -1
- package/dist/adapter/ember/enums.d.ts +133 -145
- package/dist/adapter/ember/enums.d.ts.map +1 -1
- package/dist/adapter/ember/enums.js +132 -148
- package/dist/adapter/ember/enums.js.map +1 -1
- package/dist/adapter/ember/ezsp/buffalo.js +4 -4
- package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.d.ts +1 -3
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.js +224 -208
- package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
- package/dist/adapter/ember/types.d.ts +9 -9
- package/dist/adapter/ember/types.d.ts.map +1 -1
- package/dist/adapter/ember/uart/ash.d.ts +27 -14
- package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
- package/dist/adapter/ember/uart/ash.js +158 -109
- package/dist/adapter/ember/uart/ash.js.map +1 -1
- package/dist/adapter/ember/uart/consts.d.ts +1 -1
- package/dist/adapter/ember/uart/consts.js +1 -1
- package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
- package/dist/adapter/ember/uart/parser.js +5 -9
- package/dist/adapter/ember/uart/parser.js.map +1 -1
- package/dist/adapter/ember/uart/queues.d.ts.map +1 -1
- package/dist/adapter/ember/uart/queues.js +3 -1
- package/dist/adapter/ember/uart/queues.js.map +1 -1
- package/dist/adapter/ember/uart/writer.d.ts.map +1 -1
- package/dist/adapter/ember/uart/writer.js +4 -6
- package/dist/adapter/ember/uart/writer.js.map +1 -1
- package/dist/adapter/ember/zdo.d.ts +6 -2
- package/dist/adapter/ember/zdo.d.ts.map +1 -1
- package/dist/adapter/ember/zdo.js +2 -2
- package/dist/adapter/ember/zdo.js.map +1 -1
- package/dist/adapter/events.d.ts +17 -23
- package/dist/adapter/events.d.ts.map +1 -1
- package/dist/adapter/events.js +1 -2
- package/dist/adapter/events.js.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts +4 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.js +35 -7
- package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +12 -9
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +79 -75
- package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
- package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/commands.js +3 -5
- package/dist/adapter/ezsp/driver/commands.js.map +1 -1
- package/dist/adapter/ezsp/driver/driver.d.ts +4 -2
- package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/driver.js +183 -119
- package/dist/adapter/ezsp/driver/driver.js.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.js +62 -50
- package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.js +8 -12
- package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
- package/dist/adapter/ezsp/driver/parser.js +5 -5
- package/dist/adapter/ezsp/driver/parser.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/basic.js +1 -1
- package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.js +2 -2
- package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.d.ts +1 -1
- package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.js +2 -2
- package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
- package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/uart.js +46 -46
- package/dist/adapter/ezsp/driver/uart.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.d.ts +2 -1
- package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.js +2 -2
- package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/writer.js +3 -6
- package/dist/adapter/ezsp/driver/writer.js.map +1 -1
- package/dist/adapter/serialPort.d.ts +3 -0
- package/dist/adapter/serialPort.d.ts.map +1 -1
- package/dist/adapter/serialPort.js +16 -23
- package/dist/adapter/serialPort.js.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +0 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.js +25 -29
- package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
- package/dist/adapter/z-stack/adapter/endpoints.js +4 -4
- package/dist/adapter/z-stack/adapter/endpoints.js.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.d.ts +1 -4
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.js +52 -61
- package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +12 -10
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +102 -84
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
- package/dist/adapter/z-stack/unpi/parser.js +6 -6
- package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
- package/dist/adapter/z-stack/unpi/writer.js +4 -7
- package/dist/adapter/z-stack/unpi/writer.js.map +1 -1
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +4 -2
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/buffaloZnp.js +154 -25
- package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -1
- package/dist/adapter/z-stack/znp/definition.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/definition.js +2 -1
- package/dist/adapter/z-stack/znp/definition.js.map +1 -1
- package/dist/adapter/z-stack/znp/tstype.d.ts +4 -3
- package/dist/adapter/z-stack/znp/tstype.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/znp.js +18 -25
- package/dist/adapter/z-stack/znp/znp.js.map +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.js +2 -2
- package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +13 -12
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +81 -90
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +7 -8
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.js +150 -100
- package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
- package/dist/adapter/zigate/driver/commandType.d.ts +2 -1
- package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/commandType.js +56 -52
- package/dist/adapter/zigate/driver/commandType.js.map +1 -1
- package/dist/adapter/zigate/driver/frame.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/frame.js +8 -8
- package/dist/adapter/zigate/driver/frame.js.map +1 -1
- package/dist/adapter/zigate/driver/messageType.d.ts +2 -1
- package/dist/adapter/zigate/driver/messageType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/messageType.js +113 -108
- package/dist/adapter/zigate/driver/messageType.js.map +1 -1
- package/dist/adapter/zigate/driver/parameterType.d.ts +8 -1
- package/dist/adapter/zigate/driver/parameterType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/parameterType.js +9 -0
- package/dist/adapter/zigate/driver/parameterType.js.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.js +9 -9
- package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
- package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/zigate.js +23 -31
- package/dist/adapter/zigate/driver/zigate.js.map +1 -1
- package/dist/buffalo/buffalo.d.ts +23 -19
- package/dist/buffalo/buffalo.d.ts.map +1 -1
- package/dist/buffalo/buffalo.js +74 -169
- package/dist/buffalo/buffalo.js.map +1 -1
- package/dist/buffalo/index.d.ts +1 -2
- package/dist/buffalo/index.d.ts.map +1 -1
- package/dist/buffalo/index.js +1 -26
- package/dist/buffalo/index.js.map +1 -1
- package/dist/controller/controller.d.ts +8 -5
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/controller/controller.js +181 -126
- package/dist/controller/controller.js.map +1 -1
- package/dist/controller/database.d.ts +1 -0
- package/dist/controller/database.d.ts.map +1 -1
- package/dist/controller/database.js +7 -10
- package/dist/controller/database.js.map +1 -1
- package/dist/controller/events.d.ts +2 -2
- package/dist/controller/events.d.ts.map +1 -1
- package/dist/controller/events.js +4 -0
- package/dist/controller/events.js.map +1 -1
- package/dist/controller/greenPower.d.ts +2 -1
- package/dist/controller/greenPower.d.ts.map +1 -1
- package/dist/controller/greenPower.js +51 -57
- package/dist/controller/greenPower.js.map +1 -1
- package/dist/controller/helpers/request.d.ts +3 -3
- package/dist/controller/helpers/request.d.ts.map +1 -1
- package/dist/controller/helpers/request.js +2 -2
- package/dist/controller/helpers/request.js.map +1 -1
- package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
- package/dist/controller/helpers/requestQueue.js +26 -36
- package/dist/controller/helpers/requestQueue.js.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.d.ts +4 -3
- package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.js +33 -14
- package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
- package/dist/controller/model/device.d.ts +12 -5
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +108 -87
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts +22 -17
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +139 -228
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/controller/model/group.d.ts +1 -1
- package/dist/controller/model/group.d.ts.map +1 -1
- package/dist/controller/model/group.js +18 -18
- package/dist/controller/model/group.js.map +1 -1
- package/dist/controller/touchlink.js +25 -28
- package/dist/controller/touchlink.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/utils/logger.d.ts +9 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +14 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/zspec/consts.d.ts +60 -0
- package/dist/zspec/consts.d.ts.map +1 -0
- package/dist/zspec/consts.js +64 -0
- package/dist/zspec/consts.js.map +1 -0
- package/dist/zspec/enums.d.ts +19 -0
- package/dist/zspec/enums.d.ts.map +1 -0
- package/dist/zspec/enums.js +28 -0
- package/dist/zspec/enums.js.map +1 -0
- package/dist/zspec/index.d.ts +4 -0
- package/dist/zspec/index.d.ts.map +1 -0
- package/dist/zspec/index.js +43 -0
- package/dist/zspec/index.js.map +1 -0
- package/dist/zspec/tstypes.d.ts +19 -0
- package/dist/zspec/tstypes.d.ts.map +1 -0
- package/dist/{buffalo/tstype.js → zspec/tstypes.js} +1 -1
- package/dist/zspec/tstypes.js.map +1 -0
- package/dist/zspec/utils.d.ts +14 -0
- package/dist/zspec/utils.d.ts.map +1 -0
- package/dist/zspec/utils.js +29 -0
- package/dist/zspec/utils.js.map +1 -0
- package/dist/zspec/zcl/buffaloZcl.d.ts +55 -0
- package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -0
- package/dist/zspec/zcl/buffaloZcl.js +929 -0
- package/dist/zspec/zcl/buffaloZcl.js.map +1 -0
- package/dist/zspec/zcl/definition/cluster.d.ts +3 -0
- package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/cluster.js +5500 -0
- package/dist/zspec/zcl/definition/cluster.js.map +1 -0
- package/dist/zspec/zcl/definition/consts.d.ts +9 -0
- package/dist/zspec/zcl/definition/consts.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/consts.js +27 -0
- package/dist/zspec/zcl/definition/consts.js.map +1 -0
- package/dist/zspec/zcl/definition/enums.d.ts +177 -0
- package/dist/zspec/zcl/definition/enums.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/enums.js +187 -0
- package/dist/zspec/zcl/definition/enums.js.map +1 -0
- package/dist/zspec/zcl/definition/foundation.d.ts +11 -0
- package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/foundation.js +241 -0
- package/dist/zspec/zcl/definition/foundation.js.map +1 -0
- package/dist/zspec/zcl/definition/manufacturerCode.d.ts +727 -0
- package/dist/zspec/zcl/definition/manufacturerCode.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/manufacturerCode.js +733 -0
- package/dist/zspec/zcl/definition/manufacturerCode.js.map +1 -0
- package/dist/zspec/zcl/definition/status.d.ts +69 -0
- package/dist/zspec/zcl/definition/status.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/status.js +74 -0
- package/dist/zspec/zcl/definition/status.js.map +1 -0
- package/dist/zspec/zcl/definition/tstype.d.ts +114 -0
- package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -0
- package/dist/{zcl/zclHeader.js → zspec/zcl/definition/tstype.js} +2 -1
- package/dist/zspec/zcl/definition/tstype.js.map +1 -0
- package/dist/zspec/zcl/index.d.ts +11 -0
- package/dist/zspec/zcl/index.d.ts.map +1 -0
- package/dist/zspec/zcl/index.js +47 -0
- package/dist/zspec/zcl/index.js.map +1 -0
- package/dist/zspec/zcl/utils.d.ts +7 -0
- package/dist/zspec/zcl/utils.d.ts.map +1 -0
- package/dist/zspec/zcl/utils.js +234 -0
- package/dist/zspec/zcl/utils.js.map +1 -0
- package/dist/zspec/zcl/zclFrame.d.ts +36 -0
- package/dist/zspec/zcl/zclFrame.d.ts.map +1 -0
- package/dist/zspec/zcl/zclFrame.js +304 -0
- package/dist/zspec/zcl/zclFrame.js.map +1 -0
- package/dist/zspec/zcl/zclHeader.d.ts +17 -0
- package/dist/zspec/zcl/zclHeader.d.ts.map +1 -0
- package/dist/zspec/zcl/zclHeader.js +88 -0
- package/dist/zspec/zcl/zclHeader.js.map +1 -0
- package/dist/zspec/zcl/zclStatusError.d.ts +6 -0
- package/dist/zspec/zcl/zclStatusError.d.ts.map +1 -0
- package/dist/zspec/zcl/zclStatusError.js +13 -0
- package/dist/zspec/zcl/zclStatusError.js.map +1 -0
- package/dist/zspec/zdo/buffaloZdo.d.ts +438 -0
- package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -0
- package/dist/zspec/zdo/buffaloZdo.js +1892 -0
- package/dist/zspec/zdo/buffaloZdo.js.map +1 -0
- package/dist/zspec/zdo/definition/clusters.d.ts +624 -0
- package/dist/zspec/zdo/definition/clusters.d.ts.map +1 -0
- package/dist/zspec/zdo/definition/clusters.js +687 -0
- package/dist/zspec/zdo/definition/clusters.js.map +1 -0
- package/dist/zspec/zdo/definition/consts.d.ts +13 -0
- package/dist/zspec/zdo/definition/consts.d.ts.map +1 -0
- package/dist/zspec/zdo/definition/consts.js +16 -0
- package/dist/zspec/zdo/definition/consts.js.map +1 -0
- package/dist/zspec/zdo/definition/enums.d.ts +75 -0
- package/dist/zspec/zdo/definition/enums.d.ts.map +1 -0
- package/dist/zspec/zdo/definition/enums.js +97 -0
- package/dist/zspec/zdo/definition/enums.js.map +1 -0
- package/dist/zspec/zdo/definition/status.d.ts +99 -0
- package/dist/zspec/zdo/definition/status.d.ts.map +1 -0
- package/dist/zspec/zdo/definition/status.js +109 -0
- package/dist/zspec/zdo/definition/status.js.map +1 -0
- package/dist/zspec/zdo/definition/tstypes.d.ts +787 -0
- package/dist/zspec/zdo/definition/tstypes.d.ts.map +1 -0
- package/dist/{zcl/definition/tstype.js → zspec/zdo/definition/tstypes.js} +1 -1
- package/dist/zspec/zdo/definition/tstypes.js.map +1 -0
- package/dist/zspec/zdo/index.d.ts +7 -0
- package/dist/zspec/zdo/index.d.ts.map +1 -0
- package/dist/zspec/zdo/index.js +39 -0
- package/dist/zspec/zdo/index.js.map +1 -0
- package/dist/zspec/zdo/utils.d.ts +25 -0
- package/dist/zspec/zdo/utils.d.ts.map +1 -0
- package/dist/zspec/zdo/utils.js +75 -0
- package/dist/zspec/zdo/utils.js.map +1 -0
- package/dist/zspec/zdo/zdoStatusError.d.ts +6 -0
- package/dist/zspec/zdo/zdoStatusError.d.ts.map +1 -0
- package/dist/zspec/zdo/zdoStatusError.js +13 -0
- package/dist/zspec/zdo/zdoStatusError.js.map +1 -0
- package/examples/join-and-log.js +7 -12
- package/package.json +5 -5
- package/dist/adapter/zigate/debug.d.ts +0 -8
- package/dist/adapter/zigate/debug.d.ts.map +0 -1
- package/dist/adapter/zigate/debug.js +0 -20
- package/dist/adapter/zigate/debug.js.map +0 -1
- package/dist/buffalo/tstype.d.ts +0 -9
- package/dist/buffalo/tstype.d.ts.map +0 -1
- package/dist/buffalo/tstype.js.map +0 -1
- package/dist/controller/logger-stub.d.ts +0 -7
- package/dist/controller/logger-stub.d.ts.map +0 -1
- package/dist/controller/logger-stub.js +0 -3
- package/dist/controller/logger-stub.js.map +0 -1
- package/dist/zcl/buffaloZcl.d.ts +0 -42
- package/dist/zcl/buffaloZcl.d.ts.map +0 -1
- package/dist/zcl/buffaloZcl.js +0 -595
- package/dist/zcl/buffaloZcl.js.map +0 -1
- package/dist/zcl/definition/buffaloZclDataType.d.ts +0 -18
- package/dist/zcl/definition/buffaloZclDataType.d.ts.map +0 -1
- package/dist/zcl/definition/buffaloZclDataType.js +0 -21
- package/dist/zcl/definition/buffaloZclDataType.js.map +0 -1
- package/dist/zcl/definition/cluster.d.ts +0 -30
- package/dist/zcl/definition/cluster.d.ts.map +0 -1
- package/dist/zcl/definition/cluster.js +0 -5521
- package/dist/zcl/definition/cluster.js.map +0 -1
- package/dist/zcl/definition/dataType.d.ts +0 -60
- package/dist/zcl/definition/dataType.d.ts.map +0 -1
- package/dist/zcl/definition/dataType.js +0 -65
- package/dist/zcl/definition/dataType.js.map +0 -1
- package/dist/zcl/definition/direction.d.ts +0 -6
- package/dist/zcl/definition/direction.d.ts.map +0 -1
- package/dist/zcl/definition/direction.js +0 -9
- package/dist/zcl/definition/direction.js.map +0 -1
- package/dist/zcl/definition/endpointDeviceType.d.ts +0 -5
- package/dist/zcl/definition/endpointDeviceType.d.ts.map +0 -1
- package/dist/zcl/definition/endpointDeviceType.js +0 -16
- package/dist/zcl/definition/endpointDeviceType.js.map +0 -1
- package/dist/zcl/definition/foundation.d.ts +0 -12
- package/dist/zcl/definition/foundation.d.ts.map +0 -1
- package/dist/zcl/definition/foundation.js +0 -168
- package/dist/zcl/definition/foundation.js.map +0 -1
- package/dist/zcl/definition/frameControl.d.ts +0 -11
- package/dist/zcl/definition/frameControl.d.ts.map +0 -1
- package/dist/zcl/definition/frameControl.js +0 -3
- package/dist/zcl/definition/frameControl.js.map +0 -1
- package/dist/zcl/definition/frameType.d.ts +0 -6
- package/dist/zcl/definition/frameType.d.ts.map +0 -1
- package/dist/zcl/definition/frameType.js +0 -9
- package/dist/zcl/definition/frameType.js.map +0 -1
- package/dist/zcl/definition/index.d.ts +0 -14
- package/dist/zcl/definition/index.d.ts.map +0 -1
- package/dist/zcl/definition/index.js +0 -52
- package/dist/zcl/definition/index.js.map +0 -1
- package/dist/zcl/definition/manufacturerCode.d.ts +0 -1078
- package/dist/zcl/definition/manufacturerCode.d.ts.map +0 -1
- package/dist/zcl/definition/manufacturerCode.js +0 -1083
- package/dist/zcl/definition/manufacturerCode.js.map +0 -1
- package/dist/zcl/definition/powerSource.d.ts +0 -5
- package/dist/zcl/definition/powerSource.d.ts.map +0 -1
- package/dist/zcl/definition/powerSource.js +0 -13
- package/dist/zcl/definition/powerSource.js.map +0 -1
- package/dist/zcl/definition/status.d.ts +0 -39
- package/dist/zcl/definition/status.d.ts.map +0 -1
- package/dist/zcl/definition/status.js +0 -42
- package/dist/zcl/definition/status.js.map +0 -1
- package/dist/zcl/definition/tstype.d.ts +0 -17
- package/dist/zcl/definition/tstype.d.ts.map +0 -1
- package/dist/zcl/definition/tstype.js.map +0 -1
- package/dist/zcl/index.d.ts +0 -17
- package/dist/zcl/index.d.ts.map +0 -1
- package/dist/zcl/index.js +0 -56
- package/dist/zcl/index.js.map +0 -1
- package/dist/zcl/tstype.d.ts +0 -57
- package/dist/zcl/tstype.d.ts.map +0 -1
- package/dist/zcl/tstype.js +0 -10
- package/dist/zcl/tstype.js.map +0 -1
- package/dist/zcl/utils.d.ts +0 -7
- package/dist/zcl/utils.d.ts.map +0 -1
- package/dist/zcl/utils.js +0 -165
- package/dist/zcl/utils.js.map +0 -1
- package/dist/zcl/zclFrame.d.ts +0 -41
- package/dist/zcl/zclFrame.d.ts.map +0 -1
- package/dist/zcl/zclFrame.js +0 -352
- package/dist/zcl/zclFrame.js.map +0 -1
- package/dist/zcl/zclHeader.d.ts +0 -9
- package/dist/zcl/zclHeader.d.ts.map +0 -1
- package/dist/zcl/zclHeader.js.map +0 -1
- package/dist/zcl/zclStatusError.d.ts +0 -6
- package/dist/zcl/zclStatusError.d.ts.map +0 -1
- package/dist/zcl/zclStatusError.js +0 -15
- package/dist/zcl/zclStatusError.js.map +0 -1
|
@@ -0,0 +1,929 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.BuffaloZcl = void 0;
|
|
27
|
+
const enums_1 = require("./definition/enums");
|
|
28
|
+
const buffalo_1 = require("../../buffalo");
|
|
29
|
+
const Utils = __importStar(require("./utils"));
|
|
30
|
+
const utils_1 = require("../../utils");
|
|
31
|
+
const logger_1 = require("../../utils/logger");
|
|
32
|
+
const NS = 'zh:zcl:buffalo';
|
|
33
|
+
const SEC_KEY_LENGTH = 16;
|
|
34
|
+
const EXTENSION_FIELD_SETS_DATA_TYPE = {
|
|
35
|
+
6: [enums_1.DataType.UINT8],
|
|
36
|
+
8: [enums_1.DataType.UINT8],
|
|
37
|
+
258: [enums_1.DataType.UINT8, enums_1.DataType.UINT8],
|
|
38
|
+
768: [enums_1.DataType.UINT16, enums_1.DataType.UINT16, enums_1.DataType.UINT16, enums_1.DataType.UINT8, enums_1.DataType.UINT8, enums_1.DataType.UINT8, enums_1.DataType.UINT16, enums_1.DataType.UINT16],
|
|
39
|
+
};
|
|
40
|
+
class BuffaloZcl extends buffalo_1.Buffalo {
|
|
41
|
+
// TODO: remove read/write int "SB" versions in favor of plain numbers, implemented in buffalo.ts
|
|
42
|
+
writeUInt40SB(value) {
|
|
43
|
+
this.writeUInt32(value[1]);
|
|
44
|
+
this.writeUInt8(value[0]);
|
|
45
|
+
}
|
|
46
|
+
readUInt40SB() {
|
|
47
|
+
const lsb = this.readUInt32();
|
|
48
|
+
const msb = this.readUInt8();
|
|
49
|
+
return [msb, lsb];
|
|
50
|
+
}
|
|
51
|
+
writeUInt48SB(value) {
|
|
52
|
+
this.writeUInt32(value[1]);
|
|
53
|
+
this.writeUInt16(value[0]);
|
|
54
|
+
}
|
|
55
|
+
readUInt48SB() {
|
|
56
|
+
const lsb = this.readUInt32();
|
|
57
|
+
const msb = this.readUInt16();
|
|
58
|
+
return [msb, lsb];
|
|
59
|
+
}
|
|
60
|
+
writeUInt56SB(value) {
|
|
61
|
+
// XXX: [uint32, uint32] param not following read return pattern [uint32, uint16, uint8]
|
|
62
|
+
const temp = Buffer.alloc(8);
|
|
63
|
+
temp.writeUInt32LE(value[1], 0);
|
|
64
|
+
temp.writeUInt32LE(value[0], 4);
|
|
65
|
+
this.writeBuffer(temp.subarray(0, 7), 7);
|
|
66
|
+
}
|
|
67
|
+
readUInt56SB() {
|
|
68
|
+
const lsb = this.readUInt32();
|
|
69
|
+
const xsb = this.readUInt16();
|
|
70
|
+
const msb = this.readUInt8();
|
|
71
|
+
return [msb, xsb, lsb];
|
|
72
|
+
}
|
|
73
|
+
readUInt64SB() {
|
|
74
|
+
// XXX: not following pattern, should return as [msb, lsb]
|
|
75
|
+
return this.readIeeeAddr();
|
|
76
|
+
}
|
|
77
|
+
writeUInt64SB(value) {
|
|
78
|
+
// XXX: not following pattern, should pass as number[uint32, uint32]
|
|
79
|
+
const msb = parseInt(value.slice(2, 10), 16);
|
|
80
|
+
const lsb = parseInt(value.slice(10), 16);
|
|
81
|
+
this.writeUInt32(lsb);
|
|
82
|
+
this.writeUInt32(msb);
|
|
83
|
+
}
|
|
84
|
+
writeInt40SB(value) {
|
|
85
|
+
this.writeInt32(value[1]);
|
|
86
|
+
this.writeInt8(value[0]);
|
|
87
|
+
}
|
|
88
|
+
readInt40SB() {
|
|
89
|
+
const lsb = this.readInt32();
|
|
90
|
+
const msb = this.readInt8();
|
|
91
|
+
return [msb, lsb];
|
|
92
|
+
}
|
|
93
|
+
writeInt56SB(value) {
|
|
94
|
+
const temp = Buffer.alloc(8);
|
|
95
|
+
temp.writeInt32LE(value[1], 0);
|
|
96
|
+
temp.writeInt32LE(value[0], 4);
|
|
97
|
+
this.writeBuffer(temp.subarray(0, 7), 7);
|
|
98
|
+
}
|
|
99
|
+
readInt56SB() {
|
|
100
|
+
const lsb = this.readInt32();
|
|
101
|
+
const xsb = this.readInt16();
|
|
102
|
+
const msb = this.readInt8();
|
|
103
|
+
return [msb, xsb, lsb];
|
|
104
|
+
}
|
|
105
|
+
writeInt64SB(value) {
|
|
106
|
+
this.writeInt32(value[1]);
|
|
107
|
+
this.writeInt32(value[0]);
|
|
108
|
+
}
|
|
109
|
+
readInt64SB() {
|
|
110
|
+
const lsb = this.readInt32();
|
|
111
|
+
const msb = this.readInt32();
|
|
112
|
+
return [msb, lsb];
|
|
113
|
+
}
|
|
114
|
+
writeOctetStr(value) {
|
|
115
|
+
// TODO: this does not allow "non-value" 0xFF
|
|
116
|
+
this.writeUInt8(value.length);
|
|
117
|
+
this.writeBuffer(value, value.length);
|
|
118
|
+
}
|
|
119
|
+
readOctetStr() {
|
|
120
|
+
const length = this.readUInt8();
|
|
121
|
+
return (length < 0xFF) ? this.readBuffer(length) : Buffer.from([]); // non-value
|
|
122
|
+
}
|
|
123
|
+
writeCharStr(value) {
|
|
124
|
+
// TODO: this does not allow "non-value" 0xFF
|
|
125
|
+
if (typeof value === 'string') {
|
|
126
|
+
this.writeUInt8(value.length);
|
|
127
|
+
this.writeUtf8String(value);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// XXX: value.length not written?
|
|
131
|
+
this.writeBuffer(value, value.length);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
readCharStr() {
|
|
135
|
+
const length = this.readUInt8();
|
|
136
|
+
return (length < 0xFF) ? this.readUtf8String(length) : '';
|
|
137
|
+
}
|
|
138
|
+
writeLongOctetStr(value) {
|
|
139
|
+
// TODO: this does not allow "non-value" 0xFF
|
|
140
|
+
this.writeUInt16(value.length);
|
|
141
|
+
this.writeBuffer(value, value.length);
|
|
142
|
+
}
|
|
143
|
+
readLongOctetStr() {
|
|
144
|
+
const length = this.readUInt16();
|
|
145
|
+
return (length < 0xFFFF) ? this.readBuffer(length) : Buffer.from([]); // non-value
|
|
146
|
+
}
|
|
147
|
+
writeLongCharStr(value) {
|
|
148
|
+
// TODO: this does not allow "non-value" 0xFF
|
|
149
|
+
this.writeUInt16(value.length);
|
|
150
|
+
this.writeUtf8String(value);
|
|
151
|
+
}
|
|
152
|
+
readLongCharStr() {
|
|
153
|
+
const length = this.readUInt16();
|
|
154
|
+
return (length < 0xFFFF) ? this.readUtf8String(length) : ''; // non-value
|
|
155
|
+
}
|
|
156
|
+
writeArray(value) {
|
|
157
|
+
const elTypeNumeric = typeof value.elementType === 'number' ? value.elementType : enums_1.DataType[value.elementType];
|
|
158
|
+
this.writeUInt8(elTypeNumeric);
|
|
159
|
+
// TODO: this does not allow writing "non-value" 0xFFFF
|
|
160
|
+
this.writeUInt16(value.elements.length);
|
|
161
|
+
for (const element of value.elements) {
|
|
162
|
+
this.write(elTypeNumeric, element, {});
|
|
163
|
+
}
|
|
164
|
+
;
|
|
165
|
+
}
|
|
166
|
+
readArray() {
|
|
167
|
+
const values = [];
|
|
168
|
+
const elementType = this.readUInt8();
|
|
169
|
+
const numberOfElements = this.readUInt16();
|
|
170
|
+
if (numberOfElements < 0xFFFF) {
|
|
171
|
+
for (let i = 0; i < numberOfElements; i++) {
|
|
172
|
+
const value = this.read(elementType, {});
|
|
173
|
+
values.push(value);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return values;
|
|
177
|
+
}
|
|
178
|
+
writeStruct(value) {
|
|
179
|
+
// XXX: from ZCL spec: "The zeroth element may not be written to."
|
|
180
|
+
// how does this translates to writing here?
|
|
181
|
+
// TODO: this does not allow writing "non-value" 0xFFFF
|
|
182
|
+
this.writeUInt16(value.length);
|
|
183
|
+
for (const v of value) {
|
|
184
|
+
this.writeUInt8(v.elmType);
|
|
185
|
+
this.write(v.elmType, v.elmVal, {});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
readStruct() {
|
|
189
|
+
const values = [];
|
|
190
|
+
const numberOfElements = this.readUInt16();
|
|
191
|
+
if (numberOfElements < 0xFFFF) {
|
|
192
|
+
for (let i = 0; i < numberOfElements; i++) {
|
|
193
|
+
const elementType = this.readUInt8();
|
|
194
|
+
const value = this.read(elementType, {});
|
|
195
|
+
values.push({ elmType: elementType, elmVal: value });
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return values;
|
|
199
|
+
}
|
|
200
|
+
writeToD(value) {
|
|
201
|
+
this.writeUInt8(value.hours ?? 0xFF);
|
|
202
|
+
this.writeUInt8(value.minutes ?? 0xFF);
|
|
203
|
+
this.writeUInt8(value.seconds ?? 0xFF);
|
|
204
|
+
this.writeUInt8(value.hundredths ?? 0xFF);
|
|
205
|
+
}
|
|
206
|
+
readToD() {
|
|
207
|
+
const hours = this.readUInt8();
|
|
208
|
+
const minutes = this.readUInt8();
|
|
209
|
+
const seconds = this.readUInt8();
|
|
210
|
+
const hundredths = this.readUInt8();
|
|
211
|
+
return {
|
|
212
|
+
hours: hours < 0xFF ? hours : null,
|
|
213
|
+
minutes: minutes < 0xFF ? minutes : null,
|
|
214
|
+
seconds: seconds < 0xFF ? seconds : null,
|
|
215
|
+
hundredths: hundredths < 0xFF ? hundredths : null,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
writeDate(value) {
|
|
219
|
+
this.writeUInt8(value.year != null ? (value.year - 1900) : 0xFF);
|
|
220
|
+
this.writeUInt8(value.month ?? 0xFF);
|
|
221
|
+
this.writeUInt8(value.dayOfMonth ?? 0xFF);
|
|
222
|
+
this.writeUInt8(value.dayOfWeek ?? 0xFF);
|
|
223
|
+
}
|
|
224
|
+
readDate() {
|
|
225
|
+
const year = this.readUInt8();
|
|
226
|
+
const month = this.readUInt8();
|
|
227
|
+
const dayOfMonth = this.readUInt8();
|
|
228
|
+
const dayOfWeek = this.readUInt8();
|
|
229
|
+
return {
|
|
230
|
+
year: year < 0xFF ? year + 1900 : null,
|
|
231
|
+
month: month < 0xFF ? month : null,
|
|
232
|
+
dayOfMonth: dayOfMonth < 0xFF ? dayOfMonth : null,
|
|
233
|
+
dayOfWeek: dayOfWeek < 0xFF ? dayOfWeek : null,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
//--- BuffaloZclDataType
|
|
237
|
+
writeListZoneInfo(values) {
|
|
238
|
+
for (const value of values) {
|
|
239
|
+
this.writeUInt8(value.zoneID);
|
|
240
|
+
this.writeUInt16(value.zoneStatus);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
readListZoneInfo(length) {
|
|
244
|
+
const value = [];
|
|
245
|
+
for (let i = 0; i < length; i++) {
|
|
246
|
+
value.push({
|
|
247
|
+
zoneID: this.readUInt8(),
|
|
248
|
+
zoneStatus: this.readUInt16(),
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
return value;
|
|
252
|
+
}
|
|
253
|
+
writeExtensionFieldSets(values) {
|
|
254
|
+
for (const value of values) {
|
|
255
|
+
this.writeUInt16(value.clstId);
|
|
256
|
+
this.writeUInt8(value.len);
|
|
257
|
+
let index = 0;
|
|
258
|
+
for (const entry of value.extField) {
|
|
259
|
+
this.write(EXTENSION_FIELD_SETS_DATA_TYPE[value.clstId][index], entry, {});
|
|
260
|
+
index++;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
readExtensionFieldSets() {
|
|
265
|
+
const value = [];
|
|
266
|
+
// XXX: doesn't work if buffer has more unrelated fields after this one
|
|
267
|
+
while (this.isMore()) {
|
|
268
|
+
const clstId = this.readUInt16();
|
|
269
|
+
const len = this.readUInt8();
|
|
270
|
+
const end = this.getPosition() + len;
|
|
271
|
+
let index = 0;
|
|
272
|
+
const extField = [];
|
|
273
|
+
while (this.getPosition() < end) {
|
|
274
|
+
extField.push(this.read(EXTENSION_FIELD_SETS_DATA_TYPE[clstId][index], {}));
|
|
275
|
+
index++;
|
|
276
|
+
}
|
|
277
|
+
value.push({ extField, clstId, len });
|
|
278
|
+
}
|
|
279
|
+
return value;
|
|
280
|
+
}
|
|
281
|
+
writeListThermoTransitions(value) {
|
|
282
|
+
for (const entry of value) {
|
|
283
|
+
this.writeUInt16(entry.transitionTime);
|
|
284
|
+
if (entry.heatSetpoint != null) {
|
|
285
|
+
this.writeUInt16(entry.heatSetpoint);
|
|
286
|
+
}
|
|
287
|
+
if (entry.coolSetpoint != null) {
|
|
288
|
+
this.writeUInt16(entry.coolSetpoint);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
readListThermoTransitions(options) {
|
|
293
|
+
if (options.payload == null || options.payload.mode == null || options.payload.numoftrans == null) {
|
|
294
|
+
throw new Error('Cannot read LIST_THERMO_TRANSITIONS without required payload options specified');
|
|
295
|
+
}
|
|
296
|
+
const heat = options.payload.mode & 1;
|
|
297
|
+
const cool = options.payload.mode & 2;
|
|
298
|
+
const result = [];
|
|
299
|
+
for (let i = 0; i < options.payload.numoftrans; i++) {
|
|
300
|
+
const entry = {
|
|
301
|
+
transitionTime: this.readUInt16()
|
|
302
|
+
};
|
|
303
|
+
if (heat) {
|
|
304
|
+
entry.heatSetpoint = this.readUInt16();
|
|
305
|
+
}
|
|
306
|
+
if (cool) {
|
|
307
|
+
entry.coolSetpoint = this.readUInt16();
|
|
308
|
+
}
|
|
309
|
+
result.push(entry);
|
|
310
|
+
}
|
|
311
|
+
return result;
|
|
312
|
+
}
|
|
313
|
+
writeGdpFrame(value) {
|
|
314
|
+
if (value.commandID == 0xF0) { // Commissioning Reply
|
|
315
|
+
const v = value;
|
|
316
|
+
const panIDPresent = v.options & (1 << 0);
|
|
317
|
+
const gpdSecurityKeyPresent = v.options & (1 << 1);
|
|
318
|
+
const gpdKeyEncryption = v.options & (1 << 2);
|
|
319
|
+
const securityLevel = v.options & (3 << 3) >> 3;
|
|
320
|
+
const hasGPDKeyMIC = gpdKeyEncryption && gpdSecurityKeyPresent;
|
|
321
|
+
const hasFrameCounter = gpdSecurityKeyPresent &&
|
|
322
|
+
gpdKeyEncryption &&
|
|
323
|
+
(securityLevel === 0b10 || securityLevel === 0b11);
|
|
324
|
+
this.writeUInt8(1 +
|
|
325
|
+
(panIDPresent ? 2 : 0) +
|
|
326
|
+
(gpdSecurityKeyPresent ? 16 : 0) +
|
|
327
|
+
(hasGPDKeyMIC ? 4 : 0) +
|
|
328
|
+
(hasFrameCounter ? 4 : 0)); // Length
|
|
329
|
+
this.writeUInt8(v.options);
|
|
330
|
+
if (panIDPresent) {
|
|
331
|
+
this.writeUInt16(v.panID);
|
|
332
|
+
}
|
|
333
|
+
if (gpdSecurityKeyPresent) {
|
|
334
|
+
this.writeBuffer(v.securityKey, 16);
|
|
335
|
+
}
|
|
336
|
+
if (hasGPDKeyMIC) {
|
|
337
|
+
this.writeUInt32(v.keyMic);
|
|
338
|
+
}
|
|
339
|
+
if (hasFrameCounter) {
|
|
340
|
+
this.writeUInt32(v.frameCounter);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
else if (value.commandID == 0xF3) { // Channel configuration
|
|
344
|
+
const v = value;
|
|
345
|
+
this.writeUInt8(1);
|
|
346
|
+
this.writeUInt8(v.operationalChannel & 0xF | ((v.basic ? 1 : 0) << 4));
|
|
347
|
+
}
|
|
348
|
+
else if (value.commandID == 0xF4 ||
|
|
349
|
+
value.commandID == 0xF5 ||
|
|
350
|
+
(value.commandID >= 0xF7 && value.commandID <= 0xFF)) {
|
|
351
|
+
// Other commands sent to GPD
|
|
352
|
+
const v = value;
|
|
353
|
+
this.writeUInt8(v.buffer.length);
|
|
354
|
+
this.writeBuffer(v.buffer, v.buffer.length);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
readGdpFrame(options) {
|
|
358
|
+
// Commisioning
|
|
359
|
+
if (options.payload?.commandID === 0xE0) {
|
|
360
|
+
const frame = {
|
|
361
|
+
deviceID: this.readUInt8(),
|
|
362
|
+
options: this.readUInt8(),
|
|
363
|
+
extendedOptions: 0,
|
|
364
|
+
securityKey: Buffer.alloc(16),
|
|
365
|
+
keyMic: 0,
|
|
366
|
+
outgoingCounter: 0,
|
|
367
|
+
applicationInfo: 0,
|
|
368
|
+
manufacturerID: 0,
|
|
369
|
+
modelID: 0,
|
|
370
|
+
numGdpCommands: 0,
|
|
371
|
+
gpdCommandIdList: Buffer.alloc(0),
|
|
372
|
+
numServerClusters: 0,
|
|
373
|
+
numClientClusters: 0,
|
|
374
|
+
gpdServerClusters: Buffer.alloc(0),
|
|
375
|
+
gpdClientClusters: Buffer.alloc(0),
|
|
376
|
+
};
|
|
377
|
+
if (frame.options & 0x80) {
|
|
378
|
+
frame.extendedOptions = this.readUInt8();
|
|
379
|
+
}
|
|
380
|
+
if (frame.extendedOptions & 0x20) {
|
|
381
|
+
frame.securityKey = this.readBuffer(16);
|
|
382
|
+
}
|
|
383
|
+
if (frame.extendedOptions & 0x40) {
|
|
384
|
+
frame.keyMic = this.readUInt32();
|
|
385
|
+
}
|
|
386
|
+
if (frame.extendedOptions & 0x80) {
|
|
387
|
+
frame.outgoingCounter = this.readUInt32();
|
|
388
|
+
}
|
|
389
|
+
if (frame.options & 0x04) {
|
|
390
|
+
frame.applicationInfo = this.readUInt8();
|
|
391
|
+
}
|
|
392
|
+
if (frame.applicationInfo & 0x01) {
|
|
393
|
+
frame.manufacturerID = this.readUInt16();
|
|
394
|
+
}
|
|
395
|
+
if (frame.applicationInfo & 0x02) {
|
|
396
|
+
frame.modelID = this.readUInt16();
|
|
397
|
+
}
|
|
398
|
+
if (frame.applicationInfo & 0x04) {
|
|
399
|
+
frame.numGdpCommands = this.readUInt8();
|
|
400
|
+
frame.gpdCommandIdList = this.readBuffer(frame.numGdpCommands);
|
|
401
|
+
}
|
|
402
|
+
if (frame.applicationInfo & 0x08) {
|
|
403
|
+
const len = this.readUInt8();
|
|
404
|
+
frame.numServerClusters = len & 0xF;
|
|
405
|
+
frame.numClientClusters = (len >> 4) & 0xF;
|
|
406
|
+
frame.gpdServerClusters = this.readBuffer(2 * frame.numServerClusters);
|
|
407
|
+
frame.gpdClientClusters = this.readBuffer(2 * frame.numClientClusters);
|
|
408
|
+
}
|
|
409
|
+
return frame;
|
|
410
|
+
// Channel Request
|
|
411
|
+
}
|
|
412
|
+
else if (options.payload?.commandID === 0xE3) {
|
|
413
|
+
const options = this.readUInt8();
|
|
414
|
+
return {
|
|
415
|
+
nextChannel: options & 0xF,
|
|
416
|
+
nextNextChannel: options >> 4,
|
|
417
|
+
};
|
|
418
|
+
// Manufacturer-specific Attribute Reporting
|
|
419
|
+
}
|
|
420
|
+
else if (options.payload?.commandID == 0xA1) {
|
|
421
|
+
if (options.payload.payloadSize == null) {
|
|
422
|
+
throw new Error('Cannot read GDP_FRAME with commandID=0xA1 without payloadSize options specified');
|
|
423
|
+
}
|
|
424
|
+
const start = this.position;
|
|
425
|
+
const frame = {
|
|
426
|
+
manufacturerCode: this.readUInt16(),
|
|
427
|
+
clusterID: this.readUInt16(),
|
|
428
|
+
attributes: {},
|
|
429
|
+
};
|
|
430
|
+
const cluster = Utils.getCluster(frame.clusterID, frame.manufacturerCode, {});
|
|
431
|
+
while (this.position - start < options.payload.payloadSize) {
|
|
432
|
+
const attributeID = this.readUInt16();
|
|
433
|
+
const type = this.readUInt8();
|
|
434
|
+
let attribute = attributeID;
|
|
435
|
+
try {
|
|
436
|
+
attribute = cluster.getAttribute(attributeID).name;
|
|
437
|
+
}
|
|
438
|
+
catch {
|
|
439
|
+
// this is spammy because of the many manufacturer-specific attributes not currently used
|
|
440
|
+
logger_1.logger.debug("Unknown attribute " + attributeID + " in cluster " + cluster.name, NS);
|
|
441
|
+
}
|
|
442
|
+
frame.attributes[attribute] = this.read(type, options);
|
|
443
|
+
}
|
|
444
|
+
return frame;
|
|
445
|
+
}
|
|
446
|
+
else if (this.isMore()) {
|
|
447
|
+
return { raw: this.buffer.subarray(this.position) };
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
return {};
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
writeStructuredSelector(value) {
|
|
454
|
+
if (value != null) {
|
|
455
|
+
const indexes = value.indexes || [];
|
|
456
|
+
const indicatorType = value.indicatorType || enums_1.StructuredIndicatorType.Whole;
|
|
457
|
+
const indicator = indexes.length + indicatorType;
|
|
458
|
+
this.writeUInt8(indicator);
|
|
459
|
+
for (const index of indexes) {
|
|
460
|
+
this.writeUInt16(index);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
readStructuredSelector() {
|
|
465
|
+
/** [0-15] range */
|
|
466
|
+
const indicator = this.readUInt8();
|
|
467
|
+
if (indicator === 0) {
|
|
468
|
+
// no indexes, whole attribute value is to be read
|
|
469
|
+
return { indicatorType: enums_1.StructuredIndicatorType.Whole };
|
|
470
|
+
}
|
|
471
|
+
else if (indicator < enums_1.StructuredIndicatorType.WriteAdd) {
|
|
472
|
+
const indexes = [];
|
|
473
|
+
for (let i = 0; i < indicator; i++) {
|
|
474
|
+
const index = this.readUInt16();
|
|
475
|
+
indexes.push(index);
|
|
476
|
+
}
|
|
477
|
+
return { indexes };
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
throw new Error(`Read structured selector was outside [0-15] range.`);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
writeListTuyaDataPointValues(dpValues) {
|
|
484
|
+
for (const dpValue of dpValues) {
|
|
485
|
+
this.writeUInt8(dpValue.dp);
|
|
486
|
+
this.writeUInt8(dpValue.datatype);
|
|
487
|
+
const dataLen = dpValue.data.length;
|
|
488
|
+
// UInt16BE
|
|
489
|
+
this.writeUInt8((dataLen >> 8) & 0xFF);
|
|
490
|
+
this.writeUInt8(dataLen & 0xFF);
|
|
491
|
+
this.writeBuffer(dpValue.data, dataLen);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
readListTuyaDataPointValues() {
|
|
495
|
+
const value = [];
|
|
496
|
+
// XXX: doesn't work if buffer has more unrelated fields after this one
|
|
497
|
+
while (this.isMore()) {
|
|
498
|
+
try {
|
|
499
|
+
const dp = this.readUInt8();
|
|
500
|
+
const datatype = this.readUInt8();
|
|
501
|
+
const len_hi = this.readUInt8();
|
|
502
|
+
const len_lo = this.readUInt8();
|
|
503
|
+
const data = this.readBuffer(len_lo + (len_hi << 8));
|
|
504
|
+
value.push({ dp, datatype, data });
|
|
505
|
+
}
|
|
506
|
+
catch (error) {
|
|
507
|
+
break;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
return value;
|
|
511
|
+
}
|
|
512
|
+
writeListMiboxerZones(values) {
|
|
513
|
+
this.writeUInt8(values.length);
|
|
514
|
+
for (const value of values) {
|
|
515
|
+
this.writeUInt16(value.groupId);
|
|
516
|
+
this.writeUInt8(value.zoneNum);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
readListMiboxerZones() {
|
|
520
|
+
const value = [];
|
|
521
|
+
const len = this.readUInt8();
|
|
522
|
+
for (let i = 0; i < len; i++) {
|
|
523
|
+
const groupId = this.readUInt16();
|
|
524
|
+
const zoneNum = this.readUInt8();
|
|
525
|
+
value.push({ groupId, zoneNum });
|
|
526
|
+
}
|
|
527
|
+
return value;
|
|
528
|
+
}
|
|
529
|
+
writeBigEndianUInt24(value) {
|
|
530
|
+
this.buffer.writeUIntBE(value, this.position, 3);
|
|
531
|
+
this.position += 3;
|
|
532
|
+
}
|
|
533
|
+
readBigEndianUInt24() {
|
|
534
|
+
const value = this.buffer.readUIntBE(this.position, 3);
|
|
535
|
+
this.position += 3;
|
|
536
|
+
return value;
|
|
537
|
+
}
|
|
538
|
+
// private writeMiStruct(value: Record<number, number | number[]>): {
|
|
539
|
+
// XXX: read only?
|
|
540
|
+
// }
|
|
541
|
+
readMiStruct() {
|
|
542
|
+
const length = this.readUInt8();
|
|
543
|
+
const value = {};
|
|
544
|
+
if (length === 0xFF) {
|
|
545
|
+
return value;
|
|
546
|
+
}
|
|
547
|
+
for (let i = 0; i < length; i++) {
|
|
548
|
+
const index = this.readUInt8();
|
|
549
|
+
const dataType = this.readUInt8();
|
|
550
|
+
value[index] = this.read(dataType, {});
|
|
551
|
+
if (this.position === this.buffer.length) {
|
|
552
|
+
break;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
return value;
|
|
556
|
+
}
|
|
557
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
558
|
+
write(type, value, options) {
|
|
559
|
+
switch (type) {
|
|
560
|
+
case enums_1.DataType.NO_DATA:
|
|
561
|
+
case enums_1.DataType.UNKNOWN: {
|
|
562
|
+
return; // nothing to write
|
|
563
|
+
}
|
|
564
|
+
case enums_1.DataType.DATA8:
|
|
565
|
+
case enums_1.DataType.BOOLEAN:
|
|
566
|
+
case enums_1.DataType.BITMAP8:
|
|
567
|
+
case enums_1.DataType.UINT8:
|
|
568
|
+
case enums_1.DataType.ENUM8: {
|
|
569
|
+
return this.writeUInt8(value);
|
|
570
|
+
}
|
|
571
|
+
case enums_1.DataType.DATA16:
|
|
572
|
+
case enums_1.DataType.BITMAP16:
|
|
573
|
+
case enums_1.DataType.UINT16:
|
|
574
|
+
case enums_1.DataType.ENUM16:
|
|
575
|
+
case enums_1.DataType.CLUSTER_ID:
|
|
576
|
+
case enums_1.DataType.ATTR_ID: {
|
|
577
|
+
return this.writeUInt16(value);
|
|
578
|
+
}
|
|
579
|
+
case enums_1.DataType.DATA24:
|
|
580
|
+
case enums_1.DataType.BITMAP24:
|
|
581
|
+
case enums_1.DataType.UINT24: {
|
|
582
|
+
return this.writeUInt24(value);
|
|
583
|
+
}
|
|
584
|
+
case enums_1.DataType.DATA32:
|
|
585
|
+
case enums_1.DataType.BITMAP32:
|
|
586
|
+
case enums_1.DataType.UINT32:
|
|
587
|
+
case enums_1.DataType.UTC:
|
|
588
|
+
case enums_1.DataType.BAC_OID: {
|
|
589
|
+
return this.writeUInt32(value);
|
|
590
|
+
}
|
|
591
|
+
case enums_1.DataType.DATA40:
|
|
592
|
+
case enums_1.DataType.BITMAP40:
|
|
593
|
+
case enums_1.DataType.UINT40: {
|
|
594
|
+
return this.writeUInt40SB(value);
|
|
595
|
+
}
|
|
596
|
+
case enums_1.DataType.DATA48:
|
|
597
|
+
case enums_1.DataType.BITMAP48:
|
|
598
|
+
case enums_1.DataType.UINT48: {
|
|
599
|
+
return this.writeUInt48SB(value);
|
|
600
|
+
}
|
|
601
|
+
case enums_1.DataType.DATA56:
|
|
602
|
+
case enums_1.DataType.BITMAP56:
|
|
603
|
+
case enums_1.DataType.UINT56: {
|
|
604
|
+
return this.writeUInt56SB(value);
|
|
605
|
+
}
|
|
606
|
+
case enums_1.DataType.DATA64:
|
|
607
|
+
case enums_1.DataType.BITMAP64:
|
|
608
|
+
case enums_1.DataType.UINT64: {
|
|
609
|
+
return this.writeUInt64SB(value);
|
|
610
|
+
}
|
|
611
|
+
case enums_1.DataType.INT8: {
|
|
612
|
+
return this.writeInt8(value);
|
|
613
|
+
}
|
|
614
|
+
case enums_1.DataType.INT16: {
|
|
615
|
+
return this.writeInt16(value);
|
|
616
|
+
}
|
|
617
|
+
case enums_1.DataType.INT24: {
|
|
618
|
+
return this.writeInt24(value);
|
|
619
|
+
}
|
|
620
|
+
case enums_1.DataType.INT32: {
|
|
621
|
+
return this.writeInt32(value);
|
|
622
|
+
}
|
|
623
|
+
case enums_1.DataType.INT40: {
|
|
624
|
+
return this.writeInt40SB(value);
|
|
625
|
+
}
|
|
626
|
+
case enums_1.DataType.INT48: {
|
|
627
|
+
return this.writeInt48(value);
|
|
628
|
+
}
|
|
629
|
+
case enums_1.DataType.INT56: {
|
|
630
|
+
return this.writeInt56SB(value);
|
|
631
|
+
}
|
|
632
|
+
case enums_1.DataType.INT64: {
|
|
633
|
+
return this.writeInt64SB(value);
|
|
634
|
+
}
|
|
635
|
+
// case DataType.SEMI_PREC: {
|
|
636
|
+
// // https://tc39.es/proposal-float16array/
|
|
637
|
+
// // not currently used
|
|
638
|
+
// return this.writeSemiFloatLE(value);
|
|
639
|
+
// }
|
|
640
|
+
case enums_1.DataType.SINGLE_PREC: {
|
|
641
|
+
return this.writeFloatLE(value);
|
|
642
|
+
}
|
|
643
|
+
case enums_1.DataType.DOUBLE_PREC: {
|
|
644
|
+
return this.writeDoubleLE(value);
|
|
645
|
+
}
|
|
646
|
+
case enums_1.DataType.OCTET_STR: {
|
|
647
|
+
return this.writeOctetStr(value);
|
|
648
|
+
}
|
|
649
|
+
case enums_1.DataType.CHAR_STR: {
|
|
650
|
+
return this.writeCharStr(value);
|
|
651
|
+
}
|
|
652
|
+
case enums_1.DataType.LONG_OCTET_STR: {
|
|
653
|
+
return this.writeLongOctetStr(value);
|
|
654
|
+
}
|
|
655
|
+
case enums_1.DataType.LONG_CHAR_STR: {
|
|
656
|
+
return this.writeLongCharStr(value);
|
|
657
|
+
}
|
|
658
|
+
case enums_1.DataType.ARRAY:
|
|
659
|
+
case enums_1.DataType.SET:
|
|
660
|
+
case enums_1.DataType.BAG: {
|
|
661
|
+
return this.writeArray(value);
|
|
662
|
+
}
|
|
663
|
+
case enums_1.DataType.STRUCT: {
|
|
664
|
+
return this.writeStruct(value);
|
|
665
|
+
}
|
|
666
|
+
case enums_1.DataType.TOD: {
|
|
667
|
+
return this.writeToD(value);
|
|
668
|
+
}
|
|
669
|
+
case enums_1.DataType.DATE: {
|
|
670
|
+
return this.writeDate(value);
|
|
671
|
+
}
|
|
672
|
+
case enums_1.DataType.IEEE_ADDR: {
|
|
673
|
+
return this.writeIeeeAddr(value);
|
|
674
|
+
}
|
|
675
|
+
case enums_1.DataType.SEC_KEY: {
|
|
676
|
+
return this.writeBuffer(value, SEC_KEY_LENGTH);
|
|
677
|
+
}
|
|
678
|
+
case enums_1.BuffaloZclDataType.USE_DATA_TYPE: {
|
|
679
|
+
if (options.dataType == null) {
|
|
680
|
+
if (Buffer.isBuffer(value) || (0, utils_1.IsNumberArray)(value)) {
|
|
681
|
+
return this.writeBuffer(value, value.length);
|
|
682
|
+
}
|
|
683
|
+
else {
|
|
684
|
+
throw new Error('Cannot write USE_DATA_TYPE without dataType option specified');
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
return this.write(options.dataType, value, options);
|
|
688
|
+
}
|
|
689
|
+
case enums_1.BuffaloZclDataType.LIST_UINT8: {
|
|
690
|
+
return this.writeListUInt8(value);
|
|
691
|
+
}
|
|
692
|
+
case enums_1.BuffaloZclDataType.LIST_UINT16: {
|
|
693
|
+
return this.writeListUInt16(value);
|
|
694
|
+
}
|
|
695
|
+
case enums_1.BuffaloZclDataType.LIST_UINT24: {
|
|
696
|
+
return this.writeListUInt24(value);
|
|
697
|
+
}
|
|
698
|
+
case enums_1.BuffaloZclDataType.LIST_UINT32: {
|
|
699
|
+
return this.writeListUInt32(value);
|
|
700
|
+
}
|
|
701
|
+
case enums_1.BuffaloZclDataType.LIST_ZONEINFO: {
|
|
702
|
+
return this.writeListZoneInfo(value);
|
|
703
|
+
}
|
|
704
|
+
case enums_1.BuffaloZclDataType.EXTENSION_FIELD_SETS: {
|
|
705
|
+
return this.writeExtensionFieldSets(value);
|
|
706
|
+
}
|
|
707
|
+
case enums_1.BuffaloZclDataType.LIST_THERMO_TRANSITIONS: {
|
|
708
|
+
return this.writeListThermoTransitions(value);
|
|
709
|
+
}
|
|
710
|
+
case enums_1.BuffaloZclDataType.BUFFER: {
|
|
711
|
+
// XXX: inconsistent with read that allows partial with options.length, here always "whole"
|
|
712
|
+
return this.writeBuffer(value, value.length);
|
|
713
|
+
}
|
|
714
|
+
case enums_1.BuffaloZclDataType.GDP_FRAME: {
|
|
715
|
+
return this.writeGdpFrame(value);
|
|
716
|
+
}
|
|
717
|
+
case enums_1.BuffaloZclDataType.STRUCTURED_SELECTOR: {
|
|
718
|
+
return this.writeStructuredSelector(value);
|
|
719
|
+
}
|
|
720
|
+
case enums_1.BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES: {
|
|
721
|
+
return this.writeListTuyaDataPointValues(value);
|
|
722
|
+
}
|
|
723
|
+
case enums_1.BuffaloZclDataType.LIST_MIBOXER_ZONES: {
|
|
724
|
+
return this.writeListMiboxerZones(value);
|
|
725
|
+
}
|
|
726
|
+
case enums_1.BuffaloZclDataType.BIG_ENDIAN_UINT24: {
|
|
727
|
+
return this.writeBigEndianUInt24(value);
|
|
728
|
+
}
|
|
729
|
+
default: {
|
|
730
|
+
// In case the type is undefined, write it as a buffer to easily allow for custom types
|
|
731
|
+
// e.g. for https://github.com/Koenkk/zigbee-herdsman/issues/127
|
|
732
|
+
if (Buffer.isBuffer(value) || (0, utils_1.IsNumberArray)(value)) {
|
|
733
|
+
return this.writeBuffer(value, value.length);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
throw new Error(`Write for '${type}' not available`);
|
|
738
|
+
}
|
|
739
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
740
|
+
read(type, options) {
|
|
741
|
+
switch (type) {
|
|
742
|
+
case enums_1.DataType.NO_DATA:
|
|
743
|
+
case enums_1.DataType.UNKNOWN: {
|
|
744
|
+
return; // nothing to write
|
|
745
|
+
}
|
|
746
|
+
case enums_1.DataType.DATA8:
|
|
747
|
+
case enums_1.DataType.BOOLEAN:
|
|
748
|
+
case enums_1.DataType.BITMAP8:
|
|
749
|
+
case enums_1.DataType.UINT8:
|
|
750
|
+
case enums_1.DataType.ENUM8: {
|
|
751
|
+
return this.readUInt8();
|
|
752
|
+
}
|
|
753
|
+
case enums_1.DataType.DATA16:
|
|
754
|
+
case enums_1.DataType.BITMAP16:
|
|
755
|
+
case enums_1.DataType.UINT16:
|
|
756
|
+
case enums_1.DataType.ENUM16:
|
|
757
|
+
case enums_1.DataType.CLUSTER_ID:
|
|
758
|
+
case enums_1.DataType.ATTR_ID: {
|
|
759
|
+
return this.readUInt16();
|
|
760
|
+
}
|
|
761
|
+
case enums_1.DataType.DATA24:
|
|
762
|
+
case enums_1.DataType.BITMAP24:
|
|
763
|
+
case enums_1.DataType.UINT24: {
|
|
764
|
+
return this.readUInt24();
|
|
765
|
+
}
|
|
766
|
+
case enums_1.DataType.DATA32:
|
|
767
|
+
case enums_1.DataType.BITMAP32:
|
|
768
|
+
case enums_1.DataType.UINT32:
|
|
769
|
+
case enums_1.DataType.UTC:
|
|
770
|
+
case enums_1.DataType.BAC_OID: {
|
|
771
|
+
return this.readUInt32();
|
|
772
|
+
}
|
|
773
|
+
case enums_1.DataType.DATA40:
|
|
774
|
+
case enums_1.DataType.BITMAP40:
|
|
775
|
+
case enums_1.DataType.UINT40: {
|
|
776
|
+
return this.readUInt40SB();
|
|
777
|
+
}
|
|
778
|
+
case enums_1.DataType.DATA48:
|
|
779
|
+
case enums_1.DataType.BITMAP48:
|
|
780
|
+
case enums_1.DataType.UINT48: {
|
|
781
|
+
return this.readUInt48SB();
|
|
782
|
+
}
|
|
783
|
+
case enums_1.DataType.DATA56:
|
|
784
|
+
case enums_1.DataType.BITMAP56:
|
|
785
|
+
case enums_1.DataType.UINT56: {
|
|
786
|
+
return this.readUInt56SB();
|
|
787
|
+
}
|
|
788
|
+
case enums_1.DataType.DATA64:
|
|
789
|
+
case enums_1.DataType.BITMAP64:
|
|
790
|
+
case enums_1.DataType.UINT64: {
|
|
791
|
+
return this.readUInt64SB();
|
|
792
|
+
}
|
|
793
|
+
case enums_1.DataType.INT8: {
|
|
794
|
+
return this.readInt8();
|
|
795
|
+
}
|
|
796
|
+
case enums_1.DataType.INT16: {
|
|
797
|
+
return this.readInt16();
|
|
798
|
+
}
|
|
799
|
+
case enums_1.DataType.INT24: {
|
|
800
|
+
return this.readInt24();
|
|
801
|
+
}
|
|
802
|
+
case enums_1.DataType.INT32: {
|
|
803
|
+
return this.readInt32();
|
|
804
|
+
}
|
|
805
|
+
case enums_1.DataType.INT40: {
|
|
806
|
+
return this.readInt40SB();
|
|
807
|
+
}
|
|
808
|
+
case enums_1.DataType.INT48: {
|
|
809
|
+
return this.readInt48();
|
|
810
|
+
}
|
|
811
|
+
case enums_1.DataType.INT56: {
|
|
812
|
+
return this.readInt56SB();
|
|
813
|
+
}
|
|
814
|
+
case enums_1.DataType.INT64: {
|
|
815
|
+
return this.readInt64SB();
|
|
816
|
+
}
|
|
817
|
+
// case DataType.SEMI_PREC: {
|
|
818
|
+
// // https://tc39.es/proposal-float16array/
|
|
819
|
+
// // not currently used
|
|
820
|
+
// return this.readSemiFloatLE();
|
|
821
|
+
// }
|
|
822
|
+
case enums_1.DataType.SINGLE_PREC: {
|
|
823
|
+
return this.readFloatLE();
|
|
824
|
+
}
|
|
825
|
+
case enums_1.DataType.DOUBLE_PREC: {
|
|
826
|
+
return this.readDoubleLE();
|
|
827
|
+
}
|
|
828
|
+
case enums_1.DataType.OCTET_STR: {
|
|
829
|
+
return this.readOctetStr();
|
|
830
|
+
}
|
|
831
|
+
case enums_1.DataType.CHAR_STR: {
|
|
832
|
+
return this.readCharStr();
|
|
833
|
+
}
|
|
834
|
+
case enums_1.DataType.LONG_OCTET_STR: {
|
|
835
|
+
return this.readLongOctetStr();
|
|
836
|
+
}
|
|
837
|
+
case enums_1.DataType.LONG_CHAR_STR: {
|
|
838
|
+
return this.readLongCharStr();
|
|
839
|
+
}
|
|
840
|
+
case enums_1.DataType.ARRAY:
|
|
841
|
+
case enums_1.DataType.SET:
|
|
842
|
+
case enums_1.DataType.BAG: {
|
|
843
|
+
return this.readArray();
|
|
844
|
+
}
|
|
845
|
+
case enums_1.DataType.STRUCT: {
|
|
846
|
+
return this.readStruct();
|
|
847
|
+
}
|
|
848
|
+
case enums_1.DataType.TOD: {
|
|
849
|
+
return this.readToD();
|
|
850
|
+
}
|
|
851
|
+
case enums_1.DataType.DATE: {
|
|
852
|
+
return this.readDate();
|
|
853
|
+
}
|
|
854
|
+
case enums_1.DataType.IEEE_ADDR: {
|
|
855
|
+
return this.readIeeeAddr();
|
|
856
|
+
}
|
|
857
|
+
case enums_1.DataType.SEC_KEY: {
|
|
858
|
+
return this.readBuffer(SEC_KEY_LENGTH);
|
|
859
|
+
}
|
|
860
|
+
case enums_1.BuffaloZclDataType.USE_DATA_TYPE: {
|
|
861
|
+
if (options.dataType == null) {
|
|
862
|
+
return this.readBuffer(options.length ?? this.buffer.length);
|
|
863
|
+
}
|
|
864
|
+
return this.read(options.dataType, options);
|
|
865
|
+
}
|
|
866
|
+
case enums_1.BuffaloZclDataType.LIST_UINT8: {
|
|
867
|
+
if (options.length == null) {
|
|
868
|
+
throw new Error('Cannot read LIST_UINT8 without length option specified');
|
|
869
|
+
}
|
|
870
|
+
return this.readListUInt8(options.length);
|
|
871
|
+
}
|
|
872
|
+
case enums_1.BuffaloZclDataType.LIST_UINT16: {
|
|
873
|
+
if (options.length == null) {
|
|
874
|
+
throw new Error('Cannot read LIST_UINT16 without length option specified');
|
|
875
|
+
}
|
|
876
|
+
return this.readListUInt16(options.length);
|
|
877
|
+
}
|
|
878
|
+
case enums_1.BuffaloZclDataType.LIST_UINT24: {
|
|
879
|
+
if (options.length == null) {
|
|
880
|
+
throw new Error('Cannot read LIST_UINT24 without length option specified');
|
|
881
|
+
}
|
|
882
|
+
return this.readListUInt24(options.length);
|
|
883
|
+
}
|
|
884
|
+
case enums_1.BuffaloZclDataType.LIST_UINT32: {
|
|
885
|
+
if (options.length == null) {
|
|
886
|
+
throw new Error('Cannot read LIST_UINT32 without length option specified');
|
|
887
|
+
}
|
|
888
|
+
return this.readListUInt32(options.length);
|
|
889
|
+
}
|
|
890
|
+
case enums_1.BuffaloZclDataType.LIST_ZONEINFO: {
|
|
891
|
+
if (options.length == null) {
|
|
892
|
+
throw new Error('Cannot read LIST_ZONEINFO without length option specified');
|
|
893
|
+
}
|
|
894
|
+
return this.readListZoneInfo(options.length);
|
|
895
|
+
}
|
|
896
|
+
case enums_1.BuffaloZclDataType.EXTENSION_FIELD_SETS: {
|
|
897
|
+
return this.readExtensionFieldSets();
|
|
898
|
+
}
|
|
899
|
+
case enums_1.BuffaloZclDataType.LIST_THERMO_TRANSITIONS: {
|
|
900
|
+
return this.readListThermoTransitions(options);
|
|
901
|
+
}
|
|
902
|
+
case enums_1.BuffaloZclDataType.BUFFER: {
|
|
903
|
+
// if length option not specified, read the whole buffer
|
|
904
|
+
return this.readBuffer(options.length ?? this.buffer.length);
|
|
905
|
+
}
|
|
906
|
+
case enums_1.BuffaloZclDataType.GDP_FRAME: {
|
|
907
|
+
return this.readGdpFrame(options);
|
|
908
|
+
}
|
|
909
|
+
case enums_1.BuffaloZclDataType.STRUCTURED_SELECTOR: {
|
|
910
|
+
return this.readStructuredSelector();
|
|
911
|
+
}
|
|
912
|
+
case enums_1.BuffaloZclDataType.LIST_TUYA_DATAPOINT_VALUES: {
|
|
913
|
+
return this.readListTuyaDataPointValues();
|
|
914
|
+
}
|
|
915
|
+
case enums_1.BuffaloZclDataType.LIST_MIBOXER_ZONES: {
|
|
916
|
+
return this.readListMiboxerZones();
|
|
917
|
+
}
|
|
918
|
+
case enums_1.BuffaloZclDataType.BIG_ENDIAN_UINT24: {
|
|
919
|
+
return this.readBigEndianUInt24();
|
|
920
|
+
}
|
|
921
|
+
case enums_1.BuffaloZclDataType.MI_STRUCT: {
|
|
922
|
+
return this.readMiStruct();
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
throw new Error(`Read for '${type}' not available`);
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
exports.BuffaloZcl = BuffaloZcl;
|
|
929
|
+
//# sourceMappingURL=buffaloZcl.js.map
|