@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
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.UartAsh = exports.AshEvents = void 0;
|
|
7
7
|
/* istanbul ignore file */
|
|
8
|
-
const debug_1 = __importDefault(require("debug"));
|
|
9
8
|
const stream_1 = require("stream");
|
|
10
9
|
const net_1 = require("net");
|
|
11
10
|
const socketPortUtils_1 = __importDefault(require("../../socketPortUtils"));
|
|
@@ -18,7 +17,8 @@ const queues_1 = require("./queues");
|
|
|
18
17
|
const writer_1 = require("./writer");
|
|
19
18
|
const parser_1 = require("./parser");
|
|
20
19
|
const utils_1 = require("../../../utils");
|
|
21
|
-
const
|
|
20
|
+
const logger_1 = require("../../../utils/logger");
|
|
21
|
+
const NS = 'zh:ember:uart:ash';
|
|
22
22
|
/** ASH get rflag in control byte */
|
|
23
23
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
24
24
|
const ashGetRFlag = (ctrl) => ((ctrl & consts_1.ASH_RFLAG_MASK) >> consts_1.ASH_RFLAG_BIT);
|
|
@@ -31,12 +31,10 @@ const ashGetFrmNum = (ctrl) => ((ctrl & consts_1.ASH_FRMNUM_MASK) >> consts_1.AS
|
|
|
31
31
|
const ashGetACKNum = (ctrl) => ((ctrl & consts_1.ASH_ACKNUM_MASK) >> consts_1.ASH_ACKNUM_BIT);
|
|
32
32
|
var AshEvents;
|
|
33
33
|
(function (AshEvents) {
|
|
34
|
-
/** When the
|
|
35
|
-
AshEvents["
|
|
36
|
-
/** When the NCP reports a fatal error */
|
|
37
|
-
AshEvents["ncpError"] = "ncpError";
|
|
34
|
+
/** When the ASH protocol detects a fatal error (bubbles up to restart adapter). */
|
|
35
|
+
AshEvents["FATAL_ERROR"] = "fatalError";
|
|
38
36
|
/** When a frame has been parsed and queued in the rxQueue. */
|
|
39
|
-
AshEvents["
|
|
37
|
+
AshEvents["FRAME"] = "frame";
|
|
40
38
|
})(AshEvents || (exports.AshEvents = AshEvents = {}));
|
|
41
39
|
var SendState;
|
|
42
40
|
(function (SendState) {
|
|
@@ -207,7 +205,12 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
207
205
|
if (this.closing) {
|
|
208
206
|
return false;
|
|
209
207
|
}
|
|
210
|
-
|
|
208
|
+
if (socketPortUtils_1.default.isTcpPath(this.portOptions.path)) {
|
|
209
|
+
return this.socketPort && !this.socketPort.closed;
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
return this.serialPort && this.serialPort.isOpen;
|
|
213
|
+
}
|
|
211
214
|
}
|
|
212
215
|
/**
|
|
213
216
|
* Get max wait time before response is considered timed out.
|
|
@@ -248,10 +251,6 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
248
251
|
*/
|
|
249
252
|
initVariables() {
|
|
250
253
|
this.closing = false;
|
|
251
|
-
this.serialPort = null;
|
|
252
|
-
this.socketPort = null;
|
|
253
|
-
this.writer = null;
|
|
254
|
-
this.parser = null;
|
|
255
254
|
this.txSHBuffer = Buffer.alloc(consts_1.SH_TX_BUFFER_LEN);
|
|
256
255
|
this.rxSHBuffer = Buffer.alloc(consts_1.SH_RX_BUFFER_LEN);
|
|
257
256
|
this.ackTimer = 0;
|
|
@@ -338,11 +337,13 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
338
337
|
this.rxFree.freeBuffer(this.rxPool[i] = new queues_1.EzspBuffer());
|
|
339
338
|
}
|
|
340
339
|
}
|
|
340
|
+
/**
|
|
341
|
+
* Init the serial or socket port and hook parser/writer.
|
|
342
|
+
* NOTE: This is the only function that throws/rejects in the ASH layer (caught by resetNcp and turned into an EzspStatus).
|
|
343
|
+
*/
|
|
341
344
|
async initPort() {
|
|
345
|
+
await this.closePort(); // will do nothing if nothing's open
|
|
342
346
|
if (!socketPortUtils_1.default.isTcpPath(this.portOptions.path)) {
|
|
343
|
-
if (this.serialPort != null) {
|
|
344
|
-
this.serialPort.close();
|
|
345
|
-
}
|
|
346
347
|
const serialOpts = {
|
|
347
348
|
path: this.portOptions.path,
|
|
348
349
|
baudRate: typeof this.portOptions.baudRate === 'number' ? this.portOptions.baudRate : 115200,
|
|
@@ -355,7 +356,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
355
356
|
};
|
|
356
357
|
// enable software flow control if RTS/CTS not enabled in config
|
|
357
358
|
if (!serialOpts.rtscts) {
|
|
358
|
-
|
|
359
|
+
logger_1.logger.info(`RTS/CTS config is off, enabling software flow control.`, NS);
|
|
359
360
|
serialOpts.xon = true;
|
|
360
361
|
serialOpts.xoff = true;
|
|
361
362
|
}
|
|
@@ -364,7 +365,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
364
365
|
//@ts-expect-error Jest testing
|
|
365
366
|
serialOpts.binding = this.portOptions.binding;
|
|
366
367
|
}
|
|
367
|
-
debug(`Opening
|
|
368
|
+
logger_1.logger.debug(`Opening serial port with ${JSON.stringify(serialOpts)}`, NS);
|
|
368
369
|
this.serialPort = new serialPort_1.SerialPort(serialOpts);
|
|
369
370
|
this.writer = new writer_1.AshWriter({ highWaterMark: CONFIG_HIGHWATER_MARK });
|
|
370
371
|
this.writer.pipe(this.serialPort);
|
|
@@ -373,7 +374,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
373
374
|
this.parser.on('data', this.onFrame.bind(this));
|
|
374
375
|
try {
|
|
375
376
|
await this.serialPort.asyncOpen();
|
|
376
|
-
|
|
377
|
+
logger_1.logger.info(`Serial port opened`, NS);
|
|
377
378
|
this.serialPort.once('close', this.onPortClose.bind(this));
|
|
378
379
|
this.serialPort.on('error', this.onPortError.bind(this));
|
|
379
380
|
}
|
|
@@ -383,11 +384,8 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
383
384
|
}
|
|
384
385
|
}
|
|
385
386
|
else {
|
|
386
|
-
if (this.socketPort != null) {
|
|
387
|
-
this.socketPort.destroy();
|
|
388
|
-
}
|
|
389
387
|
const info = socketPortUtils_1.default.parseTcpPath(this.portOptions.path);
|
|
390
|
-
debug(`Opening TCP socket with ${info.host}:${info.port}
|
|
388
|
+
logger_1.logger.debug(`Opening TCP socket with ${info.host}:${info.port}`, NS);
|
|
391
389
|
this.socketPort = new net_1.Socket();
|
|
392
390
|
this.socketPort.setNoDelay(true);
|
|
393
391
|
this.socketPort.setKeepAlive(true, 15000);
|
|
@@ -402,10 +400,10 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
402
400
|
reject(err);
|
|
403
401
|
};
|
|
404
402
|
this.socketPort.on('connect', () => {
|
|
405
|
-
debug(
|
|
403
|
+
logger_1.logger.debug(`Socket connected`, NS);
|
|
406
404
|
});
|
|
407
405
|
this.socketPort.on('ready', async () => {
|
|
408
|
-
|
|
406
|
+
logger_1.logger.info(`Socket ready`, NS);
|
|
409
407
|
this.socketPort.removeListener('error', openError);
|
|
410
408
|
this.socketPort.once('close', this.onPortClose.bind(this));
|
|
411
409
|
this.socketPort.on('error', this.onPortError.bind(this));
|
|
@@ -421,16 +419,15 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
421
419
|
* @param err A boolean for Socket, an Error for serialport
|
|
422
420
|
*/
|
|
423
421
|
async onPortClose(err) {
|
|
424
|
-
|
|
422
|
+
logger_1.logger.info(`Port closed. Error? ${err ?? 'no'}`, NS);
|
|
425
423
|
}
|
|
426
424
|
/**
|
|
427
425
|
* Handle port error
|
|
428
426
|
* @param error
|
|
429
427
|
*/
|
|
430
428
|
async onPortError(error) {
|
|
431
|
-
|
|
432
|
-
this.
|
|
433
|
-
await this.stop();
|
|
429
|
+
logger_1.logger.info(`Port error: ${error}`, NS);
|
|
430
|
+
this.emit(AshEvents.FATAL_ERROR, enums_1.EzspStatus.ERROR_SERIAL_INIT);
|
|
434
431
|
}
|
|
435
432
|
/**
|
|
436
433
|
* Handle received frame from AshParser.
|
|
@@ -442,7 +439,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
442
439
|
// ignore the cancel before RSTACK
|
|
443
440
|
if (this.flags & Flag.CONNECTED) {
|
|
444
441
|
this.counters.rxCancelled += 1;
|
|
445
|
-
|
|
442
|
+
logger_1.logger.warning(`Frame(s) in progress cancelled in [${buffer.toString('hex')}]`, NS);
|
|
446
443
|
}
|
|
447
444
|
// get rid of everything up to the CAN flag and start reading frame from there, no need to loop through bytes in vain
|
|
448
445
|
buffer = buffer.subarray(iCAN + 1);
|
|
@@ -450,15 +447,14 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
450
447
|
if (!buffer.length) {
|
|
451
448
|
// skip any CANCEL that results in empty frame (have yet to see one, but just in case...)
|
|
452
449
|
// shouldn't happen for any other reason, unless receiving bad stuff from port?
|
|
453
|
-
debug(`Received empty frame. Skipping
|
|
450
|
+
logger_1.logger.debug(`Received empty frame. Skipping.`, NS);
|
|
454
451
|
return;
|
|
455
452
|
}
|
|
456
453
|
const status = this.receiveFrame(buffer);
|
|
457
|
-
if (status
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
throw new Error(enums_1.EzspStatus[status]);
|
|
454
|
+
if ((status !== enums_1.EzspStatus.SUCCESS) && (status !== enums_1.EzspStatus.ASH_IN_PROGRESS) && (status !== enums_1.EzspStatus.NO_RX_DATA)) {
|
|
455
|
+
logger_1.logger.error(`Error while parsing received frame, status=${enums_1.EzspStatus[status]}.`, NS);
|
|
456
|
+
this.emit(AshEvents.FATAL_ERROR, enums_1.EzspStatus.HOST_FATAL_ERROR);
|
|
457
|
+
return;
|
|
462
458
|
}
|
|
463
459
|
}
|
|
464
460
|
/**
|
|
@@ -470,24 +466,34 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
470
466
|
* - EzspStatus.ASH_NCP_FATAL_ERROR)
|
|
471
467
|
*/
|
|
472
468
|
async start() {
|
|
473
|
-
if (this.
|
|
469
|
+
if (!this.portOpen || (this.flags & Flag.CONNECTED)) {
|
|
474
470
|
return enums_1.EzspStatus.ERROR_INVALID_CALL;
|
|
475
471
|
}
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
this.serialPort
|
|
472
|
+
logger_1.logger.info(`======== ASH starting ========`, NS);
|
|
473
|
+
try {
|
|
474
|
+
if (this.serialPort != null) {
|
|
475
|
+
await this.serialPort.asyncFlush(); // clear read/write buffers
|
|
476
|
+
}
|
|
477
|
+
else {
|
|
478
|
+
// XXX: Socket equiv?
|
|
479
|
+
}
|
|
479
480
|
}
|
|
480
|
-
|
|
481
|
-
|
|
481
|
+
catch (err) {
|
|
482
|
+
logger_1.logger.error(`Error while flushing before start: ${err}`, NS);
|
|
482
483
|
}
|
|
483
|
-
|
|
484
|
-
//
|
|
484
|
+
// block til RSTACK, fatal error or timeout
|
|
485
|
+
// NOTE: on average, this seems to take around 1000ms when successful
|
|
485
486
|
for (let i = 0; i < CONFIG_TIME_RST; i += CONFIG_TIME_RST_CHECK) {
|
|
487
|
+
this.sendExec();
|
|
486
488
|
if ((this.flags & Flag.CONNECTED)) {
|
|
487
|
-
|
|
489
|
+
logger_1.logger.info(`======== ASH started ========`, NS);
|
|
488
490
|
return enums_1.EzspStatus.SUCCESS;
|
|
489
491
|
}
|
|
490
|
-
|
|
492
|
+
else if ((this.hostError !== enums_1.EzspStatus.NO_ERROR) || (this.ncpError !== enums_1.EzspStatus.NO_ERROR)) {
|
|
493
|
+
// don't wait for inevitable fail, bail early, let retry logic in EZSP layer do its thing
|
|
494
|
+
break;
|
|
495
|
+
}
|
|
496
|
+
logger_1.logger.debug(`Waiting for RSTACK... ${i}/${CONFIG_TIME_RST}`, NS);
|
|
491
497
|
await (0, utils_1.Wait)(CONFIG_TIME_RST_CHECK);
|
|
492
498
|
}
|
|
493
499
|
return enums_1.EzspStatus.HOST_FATAL_ERROR;
|
|
@@ -497,24 +503,29 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
497
503
|
*/
|
|
498
504
|
async stop() {
|
|
499
505
|
this.closing = true;
|
|
500
|
-
this.
|
|
506
|
+
this.logCounters();
|
|
507
|
+
await this.closePort();
|
|
508
|
+
this.initVariables();
|
|
509
|
+
logger_1.logger.info(`======== ASH stopped ========`, NS);
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Close port and remove listeners.
|
|
513
|
+
* Does nothing if port not defined/open.
|
|
514
|
+
*/
|
|
515
|
+
async closePort() {
|
|
501
516
|
if (this.serialPort?.isOpen) {
|
|
502
517
|
try {
|
|
503
518
|
await this.serialPort.asyncFlushAndClose();
|
|
504
|
-
debug(`Serial port closed.`);
|
|
505
519
|
}
|
|
506
520
|
catch (err) {
|
|
507
|
-
|
|
521
|
+
logger_1.logger.error(`Failed to close serial port ${err}.`, NS);
|
|
508
522
|
}
|
|
509
523
|
this.serialPort.removeAllListeners();
|
|
510
524
|
}
|
|
511
525
|
else if (this.socketPort != null && !this.socketPort.closed) {
|
|
512
526
|
this.socketPort.destroy();
|
|
513
527
|
this.socketPort.removeAllListeners();
|
|
514
|
-
debug(`Socket port closed.`);
|
|
515
528
|
}
|
|
516
|
-
this.initVariables();
|
|
517
|
-
console.log(`======== ASH stopped ========`);
|
|
518
529
|
}
|
|
519
530
|
/**
|
|
520
531
|
* Initializes the ASH serial port and (if enabled) resets the NCP.
|
|
@@ -530,16 +541,19 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
530
541
|
if (this.closing) {
|
|
531
542
|
return enums_1.EzspStatus.ERROR_INVALID_CALL;
|
|
532
543
|
}
|
|
533
|
-
|
|
544
|
+
logger_1.logger.info(`======== ASH NCP reset ========`, NS);
|
|
534
545
|
this.initVariables();
|
|
535
546
|
let status;
|
|
536
547
|
// ask ncp to reset itself using RST frame
|
|
537
548
|
try {
|
|
538
|
-
|
|
549
|
+
if (!this.portOpen) {
|
|
550
|
+
await this.initPort();
|
|
551
|
+
}
|
|
539
552
|
this.flags = Flag.RST | Flag.CAN;
|
|
540
553
|
return enums_1.EzspStatus.SUCCESS;
|
|
541
554
|
}
|
|
542
555
|
catch (err) {
|
|
556
|
+
logger_1.logger.error(`Failed to init port with error ${err}`, NS);
|
|
543
557
|
this.hostError = status;
|
|
544
558
|
return enums_1.EzspStatus.HOST_FATAL_ERROR;
|
|
545
559
|
}
|
|
@@ -606,7 +620,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
606
620
|
if (this.ackRx !== expectedFrm) {
|
|
607
621
|
this.counters.rxAckTimeouts += 1;
|
|
608
622
|
this.adjustAckPeriod(true);
|
|
609
|
-
debug(`Timer expired waiting for ACK for ${expectedFrm}, current=${this.ackRx}
|
|
623
|
+
logger_1.logger.debug(`Timer expired waiting for ACK for ${expectedFrm}, current=${this.ackRx}`, NS);
|
|
610
624
|
if (++this.timeouts >= consts_1.ASH_MAX_TIMEOUTS) {
|
|
611
625
|
this.hostDisconnect(enums_1.EzspStatus.ASH_ERROR_TIMEOUTS);
|
|
612
626
|
return;
|
|
@@ -663,18 +677,18 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
663
677
|
len = 1;
|
|
664
678
|
this.flags &= ~(Flag.RST | Flag.NAK | Flag.ACK);
|
|
665
679
|
this.sendState = SendState.SHFRAME;
|
|
666
|
-
debug(`---> [FRAME type=RST]
|
|
680
|
+
logger_1.logger.debug(`---> [FRAME type=RST]`, NS);
|
|
667
681
|
}
|
|
668
682
|
else if (this.flags & (Flag.NAK | Flag.ACK)) {
|
|
669
683
|
if (this.flags & Flag.NAK) {
|
|
670
684
|
this.txSHBuffer[0] = enums_2.AshFrameType.NAK + (this.frmRx << consts_1.ASH_ACKNUM_BIT);
|
|
671
685
|
this.flags &= ~(Flag.NRTX | Flag.NAK | Flag.ACK);
|
|
672
|
-
debug(`---> [FRAME type=NAK frmRx=${this.frmRx}]
|
|
686
|
+
logger_1.logger.debug(`---> [FRAME type=NAK frmRx=${this.frmRx}]`, NS);
|
|
673
687
|
}
|
|
674
688
|
else {
|
|
675
689
|
this.txSHBuffer[0] = enums_2.AshFrameType.ACK + (this.frmRx << consts_1.ASH_ACKNUM_BIT);
|
|
676
690
|
this.flags &= ~(Flag.NRTX | Flag.ACK);
|
|
677
|
-
debug(`---> [FRAME type=ACK frmRx=${this.frmRx}]
|
|
691
|
+
logger_1.logger.debug(`---> [FRAME type=ACK frmRx=${this.frmRx}]`, NS);
|
|
678
692
|
}
|
|
679
693
|
if (this.flags & Flag.NR) {
|
|
680
694
|
this.txSHBuffer[0] |= consts_1.ASH_NFLAG_MASK;
|
|
@@ -691,7 +705,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
691
705
|
len = buffer.len + 1;
|
|
692
706
|
this.txSHBuffer[0] = enums_2.AshFrameType.DATA | (this.frmReTx << consts_1.ASH_FRMNUM_BIT) | (this.frmRx << consts_1.ASH_ACKNUM_BIT) | consts_1.ASH_RFLAG_MASK;
|
|
693
707
|
this.sendState = SendState.RETX_DATA;
|
|
694
|
-
debug(`---> [FRAME type=DATA_RETX frmReTx=${this.frmReTx} frmRx=${this.frmRx}]
|
|
708
|
+
logger_1.logger.debug(`---> [FRAME type=DATA_RETX frmReTx=${this.frmReTx} frmRx=${this.frmRx}]`, NS);
|
|
695
709
|
}
|
|
696
710
|
else if (this.ackTx != this.frmRx) {
|
|
697
711
|
// An ACK should be generated
|
|
@@ -705,7 +719,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
705
719
|
this.counters.txData += (len - 1);
|
|
706
720
|
this.txSHBuffer[0] = enums_2.AshFrameType.DATA | (this.frmTx << consts_1.ASH_FRMNUM_BIT) | (this.frmRx << consts_1.ASH_ACKNUM_BIT);
|
|
707
721
|
this.sendState = SendState.TX_DATA;
|
|
708
|
-
debug(`---> [FRAME type=DATA frmTx=${this.frmTx} frmRx=${this.frmRx}]
|
|
722
|
+
logger_1.logger.debug(`---> [FRAME type=DATA frmTx=${this.frmTx} frmRx=${this.frmRx}]`, NS);
|
|
709
723
|
}
|
|
710
724
|
else {
|
|
711
725
|
// Otherwise there's nothing to send
|
|
@@ -792,27 +806,28 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
792
806
|
case enums_1.EzspStatus.ASH_BAD_CRC:
|
|
793
807
|
this.counters.rxCrcErrors += 1;
|
|
794
808
|
this.rejectFrame();
|
|
795
|
-
|
|
809
|
+
logger_1.logger.error(`Received frame with CRC error`, NS);
|
|
796
810
|
return enums_1.EzspStatus.NO_RX_DATA;
|
|
797
811
|
case enums_1.EzspStatus.ASH_COMM_ERROR:
|
|
798
812
|
this.counters.rxCommErrors += 1;
|
|
799
813
|
this.rejectFrame();
|
|
800
|
-
|
|
814
|
+
logger_1.logger.error(`Received frame with comm error`, NS);
|
|
801
815
|
return enums_1.EzspStatus.NO_RX_DATA;
|
|
802
816
|
case enums_1.EzspStatus.ASH_TOO_SHORT:
|
|
803
817
|
this.counters.rxTooShort += 1;
|
|
804
818
|
this.rejectFrame();
|
|
805
|
-
|
|
819
|
+
logger_1.logger.error(`Received frame shorter than minimum`, NS);
|
|
806
820
|
return enums_1.EzspStatus.NO_RX_DATA;
|
|
807
821
|
case enums_1.EzspStatus.ASH_TOO_LONG:
|
|
808
822
|
this.counters.rxTooLong += 1;
|
|
809
823
|
this.rejectFrame();
|
|
810
|
-
|
|
824
|
+
logger_1.logger.error(`Received frame longer than maximum`, NS);
|
|
811
825
|
return enums_1.EzspStatus.NO_RX_DATA;
|
|
812
826
|
case enums_1.EzspStatus.ASH_ERROR_XON_XOFF:
|
|
813
827
|
return this.hostDisconnect(status);
|
|
814
828
|
default:
|
|
815
|
-
|
|
829
|
+
logger_1.logger.error(`Unhandled error while receiving frame, status=${enums_1.EzspStatus[status]}.`, NS);
|
|
830
|
+
return this.hostDisconnect(enums_1.EzspStatus.HOST_FATAL_ERROR);
|
|
816
831
|
}
|
|
817
832
|
// Got a complete frame - validate its control and length.
|
|
818
833
|
// On an error the type returned will be TYPE_INVALID.
|
|
@@ -830,7 +845,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
830
845
|
this.freeNonNullRxBuffer();
|
|
831
846
|
}
|
|
832
847
|
const frameTypeStr = enums_2.AshFrameType[frameType];
|
|
833
|
-
debug(`<--- [FRAME type=${frameTypeStr}]
|
|
848
|
+
logger_1.logger.debug(`<--- [FRAME type=${frameTypeStr}]`, NS);
|
|
834
849
|
this.countFrame(false);
|
|
835
850
|
// Process frames received while not in the connected state -
|
|
836
851
|
// ignore everything except RSTACK and ERROR frames
|
|
@@ -850,11 +865,11 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
850
865
|
this.timeouts = 0;
|
|
851
866
|
this.setAckPeriod(CONFIG_ACK_TIME_INIT);
|
|
852
867
|
this.flags = Flag.CONNECTED | Flag.ACK;
|
|
853
|
-
|
|
868
|
+
logger_1.logger.info(`======== ASH connected ========`, NS);
|
|
854
869
|
return enums_1.EzspStatus.SUCCESS;
|
|
855
870
|
}
|
|
856
871
|
else if (frameType === enums_2.AshFrameType.ERROR) {
|
|
857
|
-
|
|
872
|
+
logger_1.logger.error(`Received ERROR from NCP while connecting, with code=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`, NS);
|
|
858
873
|
return this.ncpDisconnect(enums_1.EzspStatus.ASH_NCP_FATAL_ERROR);
|
|
859
874
|
}
|
|
860
875
|
return enums_1.EzspStatus.ASH_IN_PROGRESS;
|
|
@@ -862,10 +877,10 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
862
877
|
// Connected - process the ackNum in ACK, NAK and DATA frames
|
|
863
878
|
if ((frameType === enums_2.AshFrameType.DATA) || (frameType === enums_2.AshFrameType.ACK) || (frameType === enums_2.AshFrameType.NAK)) {
|
|
864
879
|
ackNum = ashGetACKNum(this.rxSHBuffer[0]);
|
|
865
|
-
debug(`<--- [FRAME type=${frameTypeStr} ackNum=${ackNum}]
|
|
880
|
+
logger_1.logger.debug(`<--- [FRAME type=${frameTypeStr} ackNum=${ackNum}]`, NS);
|
|
866
881
|
if (!(0, math_1.withinRange)(this.ackRx, ackNum, this.frmTx)) {
|
|
867
882
|
this.counters.rxBadAckNumber += 1;
|
|
868
|
-
debug(`<-x- [FRAME type=${frameTypeStr} ackNum=${ackNum}] Invalid ACK num; not within <${this.ackRx}-${this.frmTx}
|
|
883
|
+
logger_1.logger.debug(`<-x- [FRAME type=${frameTypeStr} ackNum=${ackNum}] Invalid ACK num; not within <${this.ackRx}-${this.frmTx}>`, NS);
|
|
869
884
|
frameType = enums_2.AshFrameType.INVALID;
|
|
870
885
|
}
|
|
871
886
|
else if (ackNum !== this.ackRx) {
|
|
@@ -899,7 +914,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
899
914
|
if (this.rxDataBuffer == null) {
|
|
900
915
|
// valid frame but no memory?
|
|
901
916
|
this.counters.rxNoBuffer += 1;
|
|
902
|
-
debug(`<-x- ${frameStr} No buffer available
|
|
917
|
+
logger_1.logger.debug(`<-x- ${frameStr} No buffer available`, NS);
|
|
903
918
|
this.rejectFrame();
|
|
904
919
|
return enums_1.EzspStatus.NO_RX_SPACE;
|
|
905
920
|
}
|
|
@@ -911,10 +926,10 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
911
926
|
this.frmRx = (0, math_1.inc8)(this.frmRx);
|
|
912
927
|
this.randomizeBuffer(this.rxDataBuffer.data, this.rxDataBuffer.len); // IN/OUT data
|
|
913
928
|
this.rxQueue.addTail(this.rxDataBuffer); // add frame to receive queue
|
|
914
|
-
debug(`<--- ${frameStr} Added to rxQueue
|
|
929
|
+
logger_1.logger.debug(`<--- ${frameStr} Added to rxQueue`, NS);
|
|
915
930
|
this.counters.rxData += this.rxDataBuffer.len;
|
|
916
931
|
setImmediate(() => {
|
|
917
|
-
this.emit(AshEvents.
|
|
932
|
+
this.emit(AshEvents.FRAME);
|
|
918
933
|
});
|
|
919
934
|
return enums_1.EzspStatus.SUCCESS;
|
|
920
935
|
}
|
|
@@ -929,7 +944,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
929
944
|
// 1st OOS? then set REJ, send NAK
|
|
930
945
|
if ((this.flags & Flag.REJ) === 0) {
|
|
931
946
|
this.counters.rxOutOfSequence += 1;
|
|
932
|
-
debug(`<-x- ${frameStr} Out of sequence: expected ${this.frmRx}; got ${frmNum}
|
|
947
|
+
logger_1.logger.debug(`<-x- ${frameStr} Out of sequence: expected ${this.frmRx}; got ${frmNum}.`, NS);
|
|
933
948
|
}
|
|
934
949
|
this.rejectFrame();
|
|
935
950
|
}
|
|
@@ -944,16 +959,16 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
944
959
|
break;
|
|
945
960
|
case enums_2.AshFrameType.RSTACK:
|
|
946
961
|
// unexpected ncp reset
|
|
947
|
-
|
|
962
|
+
logger_1.logger.error(`Received unexpected reset from NCP, with reason=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`, NS);
|
|
948
963
|
this.ncpError = enums_1.EzspStatus.ASH_NCP_FATAL_ERROR;
|
|
949
964
|
return this.hostDisconnect(enums_1.EzspStatus.ASH_ERROR_NCP_RESET);
|
|
950
965
|
case enums_2.AshFrameType.ERROR:
|
|
951
966
|
// ncp error
|
|
952
|
-
|
|
967
|
+
logger_1.logger.error(`Received ERROR from NCP, with code=${enums_2.NcpFailedCode[this.rxSHBuffer[2]]}.`, NS);
|
|
953
968
|
return this.ncpDisconnect(enums_1.EzspStatus.ASH_NCP_FATAL_ERROR);
|
|
954
969
|
case enums_2.AshFrameType.INVALID:
|
|
955
970
|
// reject invalid frames
|
|
956
|
-
debug(`<-x- [FRAME type=${frameTypeStr}] Rejecting. ${this.rxSHBuffer.toString('hex')}
|
|
971
|
+
logger_1.logger.debug(`<-x- [FRAME type=${frameTypeStr}] Rejecting. ${this.rxSHBuffer.toString('hex')}`, NS);
|
|
957
972
|
this.rejectFrame();
|
|
958
973
|
break;
|
|
959
974
|
}
|
|
@@ -1073,12 +1088,11 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
1073
1088
|
// Set/clear NR flag based on the number of buffers free
|
|
1074
1089
|
if (this.rxFree.length < CONFIG_NR_LOW_LIMIT) {
|
|
1075
1090
|
this.flags |= Flag.NR;
|
|
1076
|
-
|
|
1091
|
+
logger_1.logger.warning(`NOT READY - Signaling NCP`, NS);
|
|
1077
1092
|
}
|
|
1078
1093
|
else if (this.rxFree.length > CONFIG_NR_HIGH_LIMIT) {
|
|
1079
1094
|
this.flags &= ~Flag.NR;
|
|
1080
1095
|
this.stopNrTimer(); // needed??
|
|
1081
|
-
// debug(`READY - Signaling NCP`);// spams-a-lot
|
|
1082
1096
|
}
|
|
1083
1097
|
// Force an ACK (or possibly NAK) if we need to send an updated nFlag
|
|
1084
1098
|
// due to either a changed NR status or to refresh a set nFlag
|
|
@@ -1109,8 +1123,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
1109
1123
|
hostDisconnect(error) {
|
|
1110
1124
|
this.flags = 0;
|
|
1111
1125
|
this.hostError = error;
|
|
1112
|
-
|
|
1113
|
-
this.emit(AshEvents.hostError, error);
|
|
1126
|
+
logger_1.logger.error(`ASH disconnected: ${enums_1.EzspStatus[error]} | NCP status: ${enums_1.EzspStatus[this.ncpError]}`, NS);
|
|
1114
1127
|
return enums_1.EzspStatus.HOST_FATAL_ERROR;
|
|
1115
1128
|
}
|
|
1116
1129
|
/**
|
|
@@ -1121,8 +1134,7 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
1121
1134
|
ncpDisconnect(error) {
|
|
1122
1135
|
this.flags = 0;
|
|
1123
1136
|
this.ncpError = error;
|
|
1124
|
-
|
|
1125
|
-
this.emit(AshEvents.ncpError, error);
|
|
1137
|
+
logger_1.logger.error(`ASH disconnected | NCP status: ${enums_1.EzspStatus[this.ncpError]}`, NS);
|
|
1126
1138
|
return enums_1.EzspStatus.ASH_NCP_FATAL_ERROR;
|
|
1127
1139
|
}
|
|
1128
1140
|
/**
|
|
@@ -1195,11 +1207,11 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
1195
1207
|
}
|
|
1196
1208
|
else {
|
|
1197
1209
|
this.counters.rxBadControl += 1;
|
|
1198
|
-
debug(`Frame illegal control ${control}
|
|
1210
|
+
logger_1.logger.debug(`Frame illegal control ${control}.`, NS); // EzspStatus.ASH_BAD_CONTROL
|
|
1199
1211
|
return enums_2.AshFrameType.INVALID;
|
|
1200
1212
|
}
|
|
1201
1213
|
this.counters.rxBadLength += 1;
|
|
1202
|
-
debug(`Frame illegal length ${len} for control ${control}
|
|
1214
|
+
logger_1.logger.debug(`Frame illegal length ${len} for control ${control}.`, NS); // EzspStatus.ASH_BAD_LENGTH
|
|
1203
1215
|
return enums_2.AshFrameType.INVALID;
|
|
1204
1216
|
}
|
|
1205
1217
|
/**
|
|
@@ -1552,32 +1564,69 @@ class UartAsh extends stream_1.EventEmitter {
|
|
|
1552
1564
|
}
|
|
1553
1565
|
}
|
|
1554
1566
|
/**
|
|
1555
|
-
*
|
|
1567
|
+
* Read and clear ASH layer counters in the same manner as the NCP ones.
|
|
1568
|
+
* @returns
|
|
1569
|
+
*/
|
|
1570
|
+
readAndClearCounters() {
|
|
1571
|
+
const counters = [
|
|
1572
|
+
this.counters.txData,
|
|
1573
|
+
this.counters.txAllFrames,
|
|
1574
|
+
this.counters.txDataFrames,
|
|
1575
|
+
this.counters.txAckFrames,
|
|
1576
|
+
this.counters.txNakFrames,
|
|
1577
|
+
this.counters.txReDataFrames,
|
|
1578
|
+
this.counters.txN1Frames,
|
|
1579
|
+
this.counters.txCancelled,
|
|
1580
|
+
this.counters.rxData,
|
|
1581
|
+
this.counters.rxAllFrames,
|
|
1582
|
+
this.counters.rxDataFrames,
|
|
1583
|
+
this.counters.rxAckFrames,
|
|
1584
|
+
this.counters.rxNakFrames,
|
|
1585
|
+
this.counters.rxReDataFrames,
|
|
1586
|
+
this.counters.rxN1Frames,
|
|
1587
|
+
this.counters.rxCancelled,
|
|
1588
|
+
this.counters.rxCrcErrors,
|
|
1589
|
+
this.counters.rxCommErrors,
|
|
1590
|
+
this.counters.rxTooShort,
|
|
1591
|
+
this.counters.rxTooLong,
|
|
1592
|
+
this.counters.rxBadControl,
|
|
1593
|
+
this.counters.rxBadLength,
|
|
1594
|
+
this.counters.rxBadAckNumber,
|
|
1595
|
+
this.counters.rxNoBuffer,
|
|
1596
|
+
this.counters.rxDuplicates,
|
|
1597
|
+
this.counters.rxOutOfSequence,
|
|
1598
|
+
this.counters.rxAckTimeouts,
|
|
1599
|
+
];
|
|
1600
|
+
for (const c in this.counters) {
|
|
1601
|
+
this.counters[c] = 0;
|
|
1602
|
+
}
|
|
1603
|
+
return counters;
|
|
1604
|
+
}
|
|
1605
|
+
/**
|
|
1606
|
+
* Log counters (pretty-formatted) as they are since last time they were cleared.
|
|
1607
|
+
* Used on ASH layer stop to get 'pre-stop state'.
|
|
1556
1608
|
*/
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
});
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
"Out of sequence": { "Received": this.counters.rxOutOfSequence },
|
|
1579
|
-
"ACK timeouts": { "Received": this.counters.rxAckTimeouts },
|
|
1580
|
-
});
|
|
1609
|
+
logCounters() {
|
|
1610
|
+
logger_1.logger.info(`ASH COUNTERS since last clear:`, NS);
|
|
1611
|
+
logger_1.logger.info(` Total frames: RX=${this.counters.rxAllFrames}, TX=${this.counters.txAllFrames}`, NS);
|
|
1612
|
+
logger_1.logger.info(` Cancelled : RX=${this.counters.rxCancelled}, TX=${this.counters.txCancelled}`, NS);
|
|
1613
|
+
logger_1.logger.info(` DATA frames : RX=${this.counters.rxDataFrames}, TX=${this.counters.txDataFrames}`, NS);
|
|
1614
|
+
logger_1.logger.info(` DATA bytes : RX=${this.counters.rxData}, TX=${this.counters.txData}`, NS);
|
|
1615
|
+
logger_1.logger.info(` Retry frames: RX=${this.counters.rxReDataFrames}, TX=${this.counters.txReDataFrames}`, NS);
|
|
1616
|
+
logger_1.logger.info(` ACK frames : RX=${this.counters.rxAckFrames}, TX=${this.counters.txAckFrames}`, NS);
|
|
1617
|
+
logger_1.logger.info(` NAK frames : RX=${this.counters.rxNakFrames}, TX=${this.counters.txNakFrames}`, NS);
|
|
1618
|
+
logger_1.logger.info(` nRdy frames : RX=${this.counters.rxN1Frames}, TX=${this.counters.txN1Frames}`, NS);
|
|
1619
|
+
logger_1.logger.info(` CRC errors : RX=${this.counters.rxCrcErrors}`, NS);
|
|
1620
|
+
logger_1.logger.info(` Comm errors : RX=${this.counters.rxCommErrors}`, NS);
|
|
1621
|
+
logger_1.logger.info(` Length < minimum: RX=${this.counters.rxTooShort}`, NS);
|
|
1622
|
+
logger_1.logger.info(` Length > maximum: RX=${this.counters.rxTooLong}`, NS);
|
|
1623
|
+
logger_1.logger.info(` Bad controls : RX=${this.counters.rxBadControl}`, NS);
|
|
1624
|
+
logger_1.logger.info(` Bad lengths : RX=${this.counters.rxBadLength}`, NS);
|
|
1625
|
+
logger_1.logger.info(` Bad ACK numbers : RX=${this.counters.rxBadAckNumber}`, NS);
|
|
1626
|
+
logger_1.logger.info(` Out of buffers : RX=${this.counters.rxNoBuffer}`, NS);
|
|
1627
|
+
logger_1.logger.info(` Retry dupes : RX=${this.counters.rxDuplicates}`, NS);
|
|
1628
|
+
logger_1.logger.info(` Out of sequence : RX=${this.counters.rxOutOfSequence}`, NS);
|
|
1629
|
+
logger_1.logger.info(` ACK timeouts : RX=${this.counters.rxAckTimeouts}`, NS);
|
|
1581
1630
|
}
|
|
1582
1631
|
}
|
|
1583
1632
|
exports.UartAsh = UartAsh;
|