@matter/protocol 0.16.0-alpha.0-20250916-d577beb1d → 0.16.0-alpha.0-20250921-b7a3dda23
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/dist/cjs/bdx/BdxClient.d.ts +31 -0
- package/dist/cjs/bdx/BdxClient.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxClient.js +57 -0
- package/dist/cjs/bdx/BdxClient.js.map +6 -0
- package/dist/cjs/bdx/BdxError.d.ts +21 -0
- package/dist/cjs/bdx/BdxError.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxError.js +54 -0
- package/dist/cjs/bdx/BdxError.js.map +6 -0
- package/dist/cjs/bdx/BdxMessenger.d.ts +77 -0
- package/dist/cjs/bdx/BdxMessenger.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxMessenger.js +245 -0
- package/dist/cjs/bdx/BdxMessenger.js.map +6 -0
- package/dist/cjs/bdx/BdxProtocol.d.ts +25 -0
- package/dist/cjs/bdx/BdxProtocol.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxProtocol.js +102 -0
- package/dist/cjs/bdx/BdxProtocol.js.map +6 -0
- package/dist/cjs/bdx/BdxSession.d.ts +36 -0
- package/dist/cjs/bdx/BdxSession.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxSession.js +153 -0
- package/dist/cjs/bdx/BdxSession.js.map +6 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.d.ts +61 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.js +95 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.js.map +6 -0
- package/dist/cjs/bdx/FileDesignator.d.ts +21 -0
- package/dist/cjs/bdx/FileDesignator.d.ts.map +1 -0
- package/dist/cjs/bdx/FileDesignator.js +62 -0
- package/dist/cjs/bdx/FileDesignator.js.map +6 -0
- package/dist/cjs/bdx/PersistedFileDesignator.d.ts +16 -0
- package/dist/cjs/bdx/PersistedFileDesignator.d.ts.map +1 -0
- package/dist/cjs/bdx/PersistedFileDesignator.js +57 -0
- package/dist/cjs/bdx/PersistedFileDesignator.js.map +6 -0
- package/dist/cjs/bdx/bdx-session-initiator.d.ts +14 -0
- package/dist/cjs/bdx/bdx-session-initiator.d.ts.map +1 -0
- package/dist/cjs/bdx/bdx-session-initiator.js +218 -0
- package/dist/cjs/bdx/bdx-session-initiator.js.map +6 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.d.ts +15 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.js +49 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.d.ts +15 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.js +47 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/Flow.d.ts +48 -0
- package/dist/cjs/bdx/flow/Flow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/Flow.js +112 -0
- package/dist/cjs/bdx/flow/Flow.js.map +6 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.d.ts +16 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.js +60 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.d.ts +15 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.js +49 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/InboundFlow.d.ts +26 -0
- package/dist/cjs/bdx/flow/InboundFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/InboundFlow.js +101 -0
- package/dist/cjs/bdx/flow/InboundFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/OutboundFlow.d.ts +31 -0
- package/dist/cjs/bdx/flow/OutboundFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/OutboundFlow.js +124 -0
- package/dist/cjs/bdx/flow/OutboundFlow.js.map +6 -0
- package/dist/cjs/bdx/index.d.ts +16 -0
- package/dist/cjs/bdx/index.d.ts.map +1 -0
- package/dist/cjs/bdx/index.js +33 -0
- package/dist/cjs/bdx/index.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.d.ts +50 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.js +125 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.d.ts +53 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.js +92 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.d.ts +117 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.js +153 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxMessage.d.ts +23 -0
- package/dist/cjs/bdx/schema/BdxMessage.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxMessage.js +75 -0
- package/dist/cjs/bdx/schema/BdxMessage.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.d.ts +12 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.js +35 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/index.d.ts +11 -0
- package/dist/cjs/bdx/schema/index.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/index.js +28 -0
- package/dist/cjs/bdx/schema/index.js.map +6 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts +4 -4
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +27 -39
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsClient.js +2 -2
- package/dist/cjs/mdns/MdnsClient.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +4 -2
- package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +2 -0
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +14 -8
- package/dist/cjs/protocol/MessageExchange.js.map +2 -2
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts +1 -1
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts.map +1 -1
- package/dist/cjs/protocol/ProtocolStatusMessage.js.map +1 -1
- package/dist/esm/bdx/BdxClient.d.ts +31 -0
- package/dist/esm/bdx/BdxClient.d.ts.map +1 -0
- package/dist/esm/bdx/BdxClient.js +37 -0
- package/dist/esm/bdx/BdxClient.js.map +6 -0
- package/dist/esm/bdx/BdxError.d.ts +21 -0
- package/dist/esm/bdx/BdxError.d.ts.map +1 -0
- package/dist/esm/bdx/BdxError.js +34 -0
- package/dist/esm/bdx/BdxError.js.map +6 -0
- package/dist/esm/bdx/BdxMessenger.d.ts +77 -0
- package/dist/esm/bdx/BdxMessenger.d.ts.map +1 -0
- package/dist/esm/bdx/BdxMessenger.js +233 -0
- package/dist/esm/bdx/BdxMessenger.js.map +6 -0
- package/dist/esm/bdx/BdxProtocol.d.ts +25 -0
- package/dist/esm/bdx/BdxProtocol.d.ts.map +1 -0
- package/dist/esm/bdx/BdxProtocol.js +82 -0
- package/dist/esm/bdx/BdxProtocol.js.map +6 -0
- package/dist/esm/bdx/BdxSession.d.ts +36 -0
- package/dist/esm/bdx/BdxSession.d.ts.map +1 -0
- package/dist/esm/bdx/BdxSession.js +133 -0
- package/dist/esm/bdx/BdxSession.js.map +6 -0
- package/dist/esm/bdx/BdxSessionConfiguration.d.ts +61 -0
- package/dist/esm/bdx/BdxSessionConfiguration.d.ts.map +1 -0
- package/dist/esm/bdx/BdxSessionConfiguration.js +75 -0
- package/dist/esm/bdx/BdxSessionConfiguration.js.map +6 -0
- package/dist/esm/bdx/FileDesignator.d.ts +21 -0
- package/dist/esm/bdx/FileDesignator.d.ts.map +1 -0
- package/dist/esm/bdx/FileDesignator.js +42 -0
- package/dist/esm/bdx/FileDesignator.js.map +6 -0
- package/dist/esm/bdx/PersistedFileDesignator.d.ts +16 -0
- package/dist/esm/bdx/PersistedFileDesignator.d.ts.map +1 -0
- package/dist/esm/bdx/PersistedFileDesignator.js +37 -0
- package/dist/esm/bdx/PersistedFileDesignator.js.map +6 -0
- package/dist/esm/bdx/bdx-session-initiator.d.ts +14 -0
- package/dist/esm/bdx/bdx-session-initiator.d.ts.map +1 -0
- package/dist/esm/bdx/bdx-session-initiator.js +198 -0
- package/dist/esm/bdx/bdx-session-initiator.js.map +6 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.d.ts +15 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.js +29 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.d.ts +15 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.js +27 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/Flow.d.ts +48 -0
- package/dist/esm/bdx/flow/Flow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/Flow.js +92 -0
- package/dist/esm/bdx/flow/Flow.js.map +6 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.d.ts +16 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.js +40 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.d.ts +15 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.js +29 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/InboundFlow.d.ts +26 -0
- package/dist/esm/bdx/flow/InboundFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/InboundFlow.js +81 -0
- package/dist/esm/bdx/flow/InboundFlow.js.map +6 -0
- package/dist/esm/bdx/flow/OutboundFlow.d.ts +31 -0
- package/dist/esm/bdx/flow/OutboundFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/OutboundFlow.js +104 -0
- package/dist/esm/bdx/flow/OutboundFlow.js.map +6 -0
- package/dist/esm/bdx/index.d.ts +16 -0
- package/dist/esm/bdx/index.d.ts.map +1 -0
- package/dist/esm/bdx/index.js +16 -0
- package/dist/esm/bdx/index.js.map +6 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.d.ts +50 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.js +109 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.js.map +6 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.d.ts +53 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.js +72 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.js.map +6 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.d.ts +117 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.js +133 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.js.map +6 -0
- package/dist/esm/bdx/schema/BdxMessage.d.ts +23 -0
- package/dist/esm/bdx/schema/BdxMessage.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxMessage.js +62 -0
- package/dist/esm/bdx/schema/BdxMessage.js.map +6 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.d.ts +12 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.js +15 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.js.map +6 -0
- package/dist/esm/bdx/schema/index.d.ts +11 -0
- package/dist/esm/bdx/schema/index.d.ts.map +1 -0
- package/dist/esm/bdx/schema/index.js +11 -0
- package/dist/esm/bdx/schema/index.js.map +6 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts +4 -4
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +27 -39
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/mdns/MdnsClient.js +2 -2
- package/dist/esm/mdns/MdnsClient.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +4 -2
- package/dist/esm/protocol/ExchangeManager.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +2 -0
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +14 -8
- package/dist/esm/protocol/MessageExchange.js.map +2 -2
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts +1 -1
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts.map +1 -1
- package/dist/esm/protocol/ProtocolStatusMessage.js.map +1 -1
- package/package.json +6 -6
- package/src/bdx/BdxClient.ts +47 -0
- package/src/bdx/BdxError.ts +39 -0
- package/src/bdx/BdxMessenger.ts +291 -0
- package/src/bdx/BdxProtocol.ts +93 -0
- package/src/bdx/BdxSession.ts +174 -0
- package/src/bdx/BdxSessionConfiguration.ts +134 -0
- package/src/bdx/FileDesignator.ts +49 -0
- package/src/bdx/PersistedFileDesignator.ts +40 -0
- package/src/bdx/bdx-session-initiator.ts +246 -0
- package/src/bdx/flow/DrivenSendingFlow.ts +40 -0
- package/src/bdx/flow/DrivingReceivingFlow.ts +39 -0
- package/src/bdx/flow/Flow.ts +124 -0
- package/src/bdx/flow/FollowingReceivingFlow.ts +53 -0
- package/src/bdx/flow/FollowingSendingFlow.ts +38 -0
- package/src/bdx/flow/InboundFlow.ts +104 -0
- package/src/bdx/flow/OutboundFlow.ts +124 -0
- package/src/bdx/index.ts +16 -0
- package/src/bdx/schema/BdxAcceptMessagesSchema.ts +159 -0
- package/src/bdx/schema/BdxBlockMessagesSchema.ts +99 -0
- package/src/bdx/schema/BdxInitMessagesSchema.ts +213 -0
- package/src/bdx/schema/BdxMessage.ts +70 -0
- package/src/bdx/schema/BdxStatusMessageSchema.ts +14 -0
- package/src/bdx/schema/index.ts +11 -0
- package/src/index.ts +1 -0
- package/src/interaction/InteractionClient.ts +34 -48
- package/src/mdns/MdnsClient.ts +2 -2
- package/src/protocol/ExchangeManager.ts +2 -0
- package/src/protocol/MessageExchange.ts +17 -6
- package/src/protocol/ProtocolStatusMessage.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageExchange.d.ts","sourceRoot":"","sources":["../../../src/protocol/MessageExchange.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAA2C,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EACH,eAAe,EACf,KAAK,EAKL,QAAQ,EAIR,WAAW,EAGX,sBAAsB,EAGzB,MAAM,UAAU,CAAC;AAClB,OAAO,EAGH,cAAc,EAEjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAEH,MAAM,EAKT,MAAM,QAAQ,CAAC;AAIhB,qBAAa,+BAAgC,SAAQ,sBAAsB;CAAG;AAE9E,qBAAa,sBAAuB,SAAQ,WAAW;aAG/B,eAAe,EAAE,OAAO;gBADxC,OAAO,EAAE,MAAM,EACC,eAAe,EAAE,OAAO;CAI/C;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG;IAC9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,QAAQ,CAAC;IAElC,gGAAgG;IAChG,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,qFAAqF;IACrF,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,qGAAqG;IACrG,UAAU,CAAC,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageExchange.d.ts","sourceRoot":"","sources":["../../../src/protocol/MessageExchange.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAA2C,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EACH,eAAe,EACf,KAAK,EAKL,QAAQ,EAIR,WAAW,EAGX,sBAAsB,EAGzB,MAAM,UAAU,CAAC;AAClB,OAAO,EAGH,cAAc,EAEjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAEH,MAAM,EAKT,MAAM,QAAQ,CAAC;AAIhB,qBAAa,+BAAgC,SAAQ,sBAAsB;CAAG;AAE9E,qBAAa,sBAAuB,SAAQ,WAAW;aAG/B,eAAe,EAAE,OAAO;gBADxC,OAAO,EAAE,MAAM,EACC,eAAe,EAAE,OAAO;CAI/C;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG;IAC9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,QAAQ,CAAC;IAElC,gGAAgG;IAChG,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,qFAAqF;IACrF,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,qGAAqG;IACrG,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAIhC,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAAyC,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,sBAAsB,EAAE,iBAAiB,CAAC;CAC7C;AAED,qBAAa,eAAe;;IAmEpB,QAAQ,CAAC,OAAO,EAAE,sBAAsB;IACxC,QAAQ,CAAC,WAAW,EAAE,OAAO;IAM7B,QAAQ,CAAC,qBAAqB,EAAE,OAAO;IAzE3C,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,OAAO;IAgBlF,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;gBAkD1E,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,OAAO,EAC7B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EACT,qBAAqB,EAAE,OAAO;IAqC3C,6GAA6G;IAC7G,IAAI,MAAM,8BAET;IAED;;;OAGG;IACH,IAAI,OAAO,8BAEV;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,mBAEV;IAED,IAAI,OAAO,0CAEV;IAED;;;OAGG;IACH,IAAI,cAAc,WAIjB;IAEK,2BAA2B,CAAC,OAAO,EAAE,OAAO;IAa5C,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,UAAQ;IAiFrD,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,mBAAmB;IA6H7E,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,sBAAsB,CAAC,EAAE,QAAQ,CAAC;QAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;KAAE;IAe/E,kCAAkC,CAAC,wBAAwB,WAAmC;IA2ExF,OAAO;IAcb,qBAAqB,CAAC,OAAO,EAAE,QAAQ;IAkBvC,qBAAqB;IAUrB,mBAAmB;IAInB,yBAAyB;IAIzB,0BAA0B;IAIpB,KAAK,CAAC,KAAK,UAAQ;CAiE5B"}
|
|
@@ -176,7 +176,10 @@ class MessageExchange {
|
|
|
176
176
|
payloadHeader: { requiresAck }
|
|
177
177
|
} = message;
|
|
178
178
|
if (!requiresAck || !this.channel.usesMrp) return;
|
|
179
|
-
await this.send(SecureMessageType.StandaloneAck, new Uint8Array(0), {
|
|
179
|
+
await this.send(SecureMessageType.StandaloneAck, new Uint8Array(0), {
|
|
180
|
+
includeAcknowledgeMessageId: messageId,
|
|
181
|
+
protocolId: SECURE_CHANNEL_PROTOCOL_ID
|
|
182
|
+
});
|
|
180
183
|
}
|
|
181
184
|
async onMessageReceived(message, duplicate = false) {
|
|
182
185
|
logger.debug("Message \xAB", MessageCodec.messageDiagnostics(message, { duplicate }));
|
|
@@ -252,12 +255,14 @@ class MessageExchange {
|
|
|
252
255
|
expectedProcessingTime = DEFAULT_EXPECTED_PROCESSING_TIME,
|
|
253
256
|
requiresAck,
|
|
254
257
|
includeAcknowledgeMessageId,
|
|
255
|
-
logContext
|
|
258
|
+
logContext,
|
|
259
|
+
protocolId = this.#protocolId
|
|
256
260
|
} = options ?? {};
|
|
257
261
|
if (!this.channel.usesMrp && includeAcknowledgeMessageId !== void 0) {
|
|
258
262
|
throw new InternalError("Cannot include an acknowledge message ID when MRP is not used");
|
|
259
263
|
}
|
|
260
|
-
|
|
264
|
+
const isStandaloneAck = SecureMessageType.isStandaloneAck(protocolId, messageType);
|
|
265
|
+
if (isStandaloneAck) {
|
|
261
266
|
if (!this.channel.usesMrp) {
|
|
262
267
|
return;
|
|
263
268
|
}
|
|
@@ -265,8 +270,9 @@ class MessageExchange {
|
|
|
265
270
|
throw new MatterFlowError("A standalone ack may not require acknowledgement.");
|
|
266
271
|
}
|
|
267
272
|
}
|
|
268
|
-
if (this.#sentMessageToAck !== void 0 &&
|
|
273
|
+
if (this.#sentMessageToAck !== void 0 && !isStandaloneAck) {
|
|
269
274
|
throw new MatterFlowError("The previous message has not been acked yet, cannot send a new message.");
|
|
275
|
+
}
|
|
270
276
|
this.#used = true;
|
|
271
277
|
this.session.notifyActivity(false);
|
|
272
278
|
let ackedMessageId = includeAcknowledgeMessageId;
|
|
@@ -316,10 +322,10 @@ class MessageExchange {
|
|
|
316
322
|
packetHeader,
|
|
317
323
|
payloadHeader: {
|
|
318
324
|
exchangeId: this.#exchangeId,
|
|
319
|
-
protocolId
|
|
325
|
+
protocolId,
|
|
320
326
|
messageType,
|
|
321
327
|
isInitiatorMessage: this.isInitiator,
|
|
322
|
-
requiresAck: requiresAck ?? (this.channel.usesMrp &&
|
|
328
|
+
requiresAck: requiresAck ?? (this.channel.usesMrp && !isStandaloneAck),
|
|
323
329
|
ackedMessageId,
|
|
324
330
|
hasSecuredExtension: false
|
|
325
331
|
},
|
|
@@ -346,9 +352,9 @@ class MessageExchange {
|
|
|
346
352
|
this.#sentMessageAckSuccess = void 0;
|
|
347
353
|
this.#sentMessageAckFailure = void 0;
|
|
348
354
|
const {
|
|
349
|
-
payloadHeader: { protocolId, messageType: messageType2 }
|
|
355
|
+
payloadHeader: { protocolId: protocolId2, messageType: messageType2 }
|
|
350
356
|
} = responseMessage;
|
|
351
|
-
if (expectAckOnly && !SecureMessageType.isStandaloneAck(
|
|
357
|
+
if (expectAckOnly && !SecureMessageType.isStandaloneAck(protocolId2, messageType2)) {
|
|
352
358
|
throw new UnexpectedMessageError("Expected ack only", responseMessage);
|
|
353
359
|
}
|
|
354
360
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/protocol/MessageExchange.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAkB,cAA4B,mBAAmB;AACjE;AAAA,EACI;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AACP;AAAA,EACI;AAAA,EACA;AAAA,EAEA;AAAA,OACG;AACP,SAAS,oBAAoB;AAE7B,SAAS,wBAAwB;AACjC;AAAA,EACI;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,MAAM,SAAS,OAAO,IAAI,iBAAiB;AAEpC,MAAM,wCAAwC,uBAAuB;AAAC;AAEtE,MAAM,+BAA+B,YAAY;AAAA,EAC7C,YACH,SACgB,iBAClB;AACE,UAAM,IAAI,aAAa,mBAAmB,eAAe,CAAC,KAAK,OAAO,EAAE;AAFxD;AAAA,EAGpB;AACJ;AA4CO,MAAM,0BAA0B,KAAK,KAAK;AAW1C,MAAM,gBAAgB;AAAA,EAkEzB,YACa,SACA,aACT,eACA,QACA,YACA,YACA,YACS,uBACX;AARW;AACA;AAMA;AAET,UAAM,EAAE,QAAQ,IAAI;AACpB,UAAM,EAAE,QAAQ,IAAI;AACpB,SAAK,iBAAiB;AACtB,SAAK,UAAU;AACf,SAAK,cAAc;AACnB,SAAK,cAAc;AACnB,SAAK,cAAc;AAEnB,UAAM,EAAE,gBAAgB,cAAc,gBAAgB,IAAI,iBAAiB,QAAQ,UAAU;AAC7F,SAAK,kBAAkB;AACvB,SAAK,gBAAgB;AACrB,SAAK,mBAAmB;AAExB,SAAK,QAAQ,CAAC;AAEd,WAAO;AAAA,MACH;AAAA,MACA,WAAW,KAAK;AAAA,QACZ,SAAS,QAAQ;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,MAAM,KAAK;AAAA,QACX,MAAM,QAAQ;AAAA,QACd,UAAU,KAAK;AAAA,QACf,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,UAAU,IAAI;AAAA,QACd,eAAe,WAAW,QAAQ;AAAA,UAC9B,KAAK,KAAK,QAAQ;AAAA,UAClB,GAAG,KAAK;AAAA,QACZ,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EA5GA,OAAO,mBAAmB,SAAiC,gBAAyB;AAChF,UAAM;AAAA,MACF,SAAS,EAAE,QAAQ;AAAA,IACvB,IAAI;AACJ,WAAO,IAAI;AAAA,MACP;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,eAAe,aAAa;AAAA,MAC5B,eAAe,aAAa;AAAA,MAC5B,eAAe,cAAc;AAAA,MAC7B,eAAe,cAAc;AAAA,MAC7B,QAAQ;AAAA,IACZ;AAAA,EACJ;AAAA,EAEA,OAAO,SAAS,SAAiC,YAAoB,YAAoB;AACrF,UAAM;AAAA,MACF,SAAS,EAAE,QAAQ;AAAA,IACvB,IAAI;AACJ,WAAO,IAAI;AAAA,MACP;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,IACZ;AAAA,EACJ;AAAA,EAES;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB,IAAI,cAAuB;AAAA,EACrD;AAAA,EACA,2BAA2B,KAAK,SAAS,uBAAuB,IAAI,wBAAwB,MAAM;AAC9F,QAAI,KAAK,0BAA0B,QAAW;AAC1C,YAAM,eAAe,KAAK;AAC1B,WAAK,wBAAwB;AAE7B,WAAK,4BAA4B,YAAY,EAAE;AAAA,QAAM,WACjD,OAAO,MAAM,mDAAmD,KAAK;AAAA,MACzE;AAAA,IACJ;AAAA,EACJ,CAAC;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,yBAAyB;AAAA,EACzB;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EAES;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU,gBAAoB;AAAA,EAC9B,WAAW,gBAAoB;AAAA;AAAA,EAgDxC,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,UAAU;AACV,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,YAAY;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,KAAK;AACL,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,iBAAiB;AAGjB,WAAO,KAAK,QAAQ,iBAAiB;AAAA,EACzC;AAAA,EAEA,MAAM,4BAA4B,SAAkB;AAChD,UAAM;AAAA,MACF,cAAc,EAAE,UAAU;AAAA,MAC1B,eAAe,EAAE,YAAY;AAAA,IACjC,IAAI;AACJ,QAAI,CAAC,eAAe,CAAC,KAAK,QAAQ,QAAS;AAE3C,UAAM,KAAK,KAAK,kBAAkB,eAAe,IAAI,WAAW,CAAC,GAAG,EAAE,6BAA6B,UAAU,CAAC;AAAA,EAClH;AAAA,EAEA,MAAM,kBAAkB,SAAkB,YAAY,OAAO;AACzD,WAAO,MAAM,gBAAa,aAAa,mBAAmB,SAAS,EAAE,UAAU,CAAC,CAAC;AAGjF,QAAI,QAAQ,cAAc,eAAe,CAAC,KAAK,QAAQ,SAAS;AAC5D,aAAO,MAAM,sEAAsE;AACnF,cAAQ,cAAc,cAAc;AAAA,IACxC;AAEA,UAAM;AAAA,MACF,cAAc,EAAE,UAAU;AAAA,MAC1B,eAAe,EAAE,aAAa,gBAAgB,YAAY,YAAY;AAAA,IAC1E,IAAI;AAEJ,UAAM,kBAAkB,kBAAkB,gBAAgB,YAAY,WAAW;AACjF,QAAI,eAAe,KAAK,eAAe,CAAC,iBAAiB;AACrD,YAAM,IAAI;AAAA,QACN,iEAAiE,KAAK,WAAW,eAAe,UAAU;AAAA,MAC9G;AAAA,IACJ;AAEA,SAAK,QAAQ,eAAe,IAAI;AAEhC,QAAI,WAAW;AAEX,UAAI,aAAa;AACb,cAAM,KAAK,4BAA4B,OAAO;AAAA,MAClD;AACA;AAAA,IACJ;AACA,QAAI,cAAc,KAAK,mBAAmB,cAAc,gBAAgB;AAGpE,YAAM,KAAK,QAAQ,KAAK,KAAK,iBAAiB;AAC9C;AAAA,IACJ;AACA,UAAM,qBAAqB,KAAK,mBAAmB,aAAa;AAChE,QAAI,uBAAuB,QAAW;AAClC,UAAI,mBAAmB,QAAW;AAE9B,cAAM,IAAI,gBAAgB,iCAAiC;AAAA,MAC/D,WAAW,mBAAmB,oBAAoB;AAE9C,YAAI,iBAAiB;AAAA,QAErB,OAAO;AACH,gBAAM,IAAI;AAAA,YACN,oCAAoC,kBAAkB,eAAe,cAAc;AAAA,UACvF;AAAA,QACJ;AAAA,MACJ,OAAO;AAEH,aAAK,sBAAsB,KAAK;AAChC,aAAK,yBAAyB;AAC9B,aAAK,yBAAyB,OAAO;AACrC,aAAK,yBAAyB;AAC9B,aAAK,yBAAyB;AAC9B,aAAK,oBAAoB;AACzB,YAAI,mBAAmB,KAAK,gBAAgB,QAAW;AAEnD,iBAAO,KAAK,OAAO;AAAA,QACvB;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,iBAAiB;AAEjB;AAAA,IACJ;AACA,QAAI,aAAa;AAEb,UAAI,KAAK,0BAA0B,QAAW;AAC1C,aAAK,yBAAyB,KAAK;AACnC,cAAM,KAAK,4BAA4B,KAAK,qBAAqB;AACjE;AAAA,MACJ;AACA,WAAK,wBAAwB;AAC7B,WAAK,yBAAyB,MAAM;AAAA,IACxC;AACA,UAAM,KAAK,eAAe,MAAM,OAAO;AAAA,EAC3C;AAAA,EAEA,MAAM,KAAK,aAAqB,SAAgB,SAA+B;AAC3E,QAAI,SAAS,eAAe,CAAC,KAAK,QAAQ,SAAS;AAC/C,cAAQ,cAAc;AAAA,IAC1B;AAEA,UAAM;AAAA,MACF,gBAAgB;AAAA,MAChB;AAAA,MACA,yBAAyB;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,IACJ,IAAI,WAAW,CAAC;AAChB,QAAI,CAAC,KAAK,QAAQ,WAAW,gCAAgC,QAAW;AACpE,YAAM,IAAI,cAAc,+DAA+D;AAAA,IAC3F;AACA,QAAI,gBAAgB,kBAAkB,eAAe;AACjD,UAAI,CAAC,KAAK,QAAQ,SAAS;AACvB;AAAA,MACJ;AACA,UAAI,aAAa;AACb,cAAM,IAAI,gBAAgB,mDAAmD;AAAA,MACjF;AAAA,IACJ;AACA,QAAI,KAAK,sBAAsB,UAAa,gBAAgB,kBAAkB;AAC1E,YAAM,IAAI,gBAAgB,yEAAyE;AAEvG,SAAK,QAAQ;AACb,SAAK,QAAQ,eAAe,KAAK;AAEjC,QAAI,iBAAiB;AACrB,QAAI,mBAAmB,UAAa,KAAK,QAAQ,SAAS;AACtD,uBAAiB,KAAK,uBAAuB,aAAa;AAC1D,UAAI,mBAAmB,QAAW;AAC9B,aAAK,yBAAyB,KAAK;AACnC,aAAK,wBAAwB;AAAA,MACjC;AAAA,IACJ;AAEA,QAAI;AACJ,QAAI,KAAK,QAAQ,SAAS,YAAY,SAAS;AAC3C,qBAAe;AAAA,QACX,WAAW,KAAK;AAAA,QAChB,aAAa,YAAY;AAAA,QACzB,WAAW,MAAM,KAAK,QAAQ,6BAA6B;AAAA,QAC3D,YAAY,KAAK;AAAA,QACjB,cAAc,KAAK;AAAA,QACnB,wBAAwB;AAAA,QACxB,kBAAkB;AAAA,QAClB,sBAAsB;AAAA,MAC1B;AAAA,IACJ,WAAW,KAAK,QAAQ,SAAS,YAAY,OAAO;AAChD,YAAM,UAAU,KAAK;AACrB,UAAI,CAAC,aAAa,GAAG,OAAO,GAAG;AAC3B,cAAM,IAAI,cAAc,2DAA2D;AAAA,MACvF;AACA,YAAM,cAAc,QAAQ,WAAW,KAAK,WAAY;AACxD,UAAI,gBAAgB,GAAG;AACnB,cAAM,IAAI,cAAc,yCAAyC,KAAK,WAAW,EAAE;AAAA,MACvF;AACA,qBAAe;AAAA,QACX,WAAW,KAAK;AAAA,QAChB,aAAa,YAAY;AAAA,QACzB,WAAW,MAAM,QAAQ,6BAA6B;AAAA,QACtD;AAAA,QACA,cAAc,KAAK;AAAA;AAAA,QACnB,wBAAwB;AAAA,QACxB,kBAAkB;AAAA,QAClB,sBAAsB;AAAA,MAC1B;AAAA,IACJ,OAAO;AACH,YAAM,IAAI,cAAc,yBAAyB,KAAK,QAAQ,IAAI,EAAE;AAAA,IACxE;AAEA,UAAM,UAAmB;AAAA,MACrB;AAAA,MACA,eAAe;AAAA,QACX,YAAY,KAAK;AAAA,QACjB,YACI,gBAAgB,kBAAkB,gBAAgB,6BAA6B,KAAK;AAAA,QACxF;AAAA,QACA,oBAAoB,KAAK;AAAA,QACzB,aAAa,gBAAgB,KAAK,QAAQ,WAAW,gBAAgB,kBAAkB;AAAA,QACvF;AAAA,QACA,qBAAqB;AAAA,MACzB;AAAA,MACA;AAAA,IACJ;AAEA,QAAI;AACJ,QAAI,KAAK,QAAQ,WAAW,QAAQ,cAAc,eAAe,CAAC,iBAAiB;AAC/E,WAAK,oBAAoB;AACzB,WAAK,uBAAuB,KAAK;AAAA,QAC7B,0BAA0B,QAAQ,aAAa,SAAS;AAAA,QACxD,KAAK,QAAQ,8BAA8B,CAAC;AAAA,QAC5C,MAAM,KAAK,mBAAmB,SAAS,sBAAsB;AAAA,MACjE;AACA,YAAM,EAAE,SAAS,UAAU,SAAS,IAAI,cAAuB;AAC/D,mBAAa;AACb,WAAK,yBAAyB;AAC9B,WAAK,yBAAyB;AAAA,IAClC;AAEA,UAAM,KAAK,QAAQ,KAAK,SAAS,UAAU;AAE3C,QAAI,eAAe,QAAW;AAC1B,WAAK,yBAAyB;AAC9B,WAAK,sBAAsB,MAAM;AAEjC,YAAM,kBAAkB,MAAM;AAC9B,WAAK,yBAAyB;AAC9B,WAAK,yBAAyB;AAE9B,YAAM;AAAA,QACF,eAAe,EAAE,YAAY,aAAAA,aAAY;AAAA,MAC7C,IAAI;AACJ,UAAI,iBAAiB,CAAC,kBAAkB,gBAAgB,YAAYA,YAAW,GAAG;AAC9E,cAAM,IAAI,uBAAuB,qBAAqB,eAAe;AAAA,MACzE;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,YAAY,SAAqE;AAC7E,QAAI;AACJ,QAAI,SAAS,YAAY,QAAW;AAChC,gBAAU,QAAQ;AAAA,IACtB,WAAW,KAAK,eAAe,OAAO,GAAG;AACrC,gBAAU;AAAA,IACd,OAAO;AACH,gBAAU,KAAK,QAAQ;AAAA,QACnB,KAAK,QAAQ;AAAA,QACb,SAAS;AAAA,MACb;AAAA,IACJ;AACA,WAAO,KAAK,eAAe,KAAK,OAAO;AAAA,EAC3C;AAAA,EAEA,mCAAmC,2BAA2B,kCAAkC;AAC5F,WAAO,KAAK,QAAQ;AAAA,MAChB,KAAK,QAAQ;AAAA,MACb;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,mBAAmB,SAAkB,wBAAmC;AACpE,SAAK;AACL,QAAI,KAAK,0BAA0B,IAAI,mBAAmB;AAGtD,UAAI,wBAAwB;AAExB,cAAM,gBAAgB;AAAA,UAClB,KAAK,QAAQ;AAAA,YACT,KAAK,QAAQ;AAAA,YACb;AAAA,UACJ,KAAK,KAAK,sBAAsB,YAAY;AAAA,QAChD;AACA,YAAI,gBAAgB,GAAG;AACnB,eAAK;AACL,iBAAO;AAAA,YACH,WAAW,QAAQ,aAAa,SAAS,qBAAqB,aAAa;AAAA,UAC/E;AACA,eAAK,uBAAuB,KAAK;AAAA,YAC7B,yCAAyC,QAAQ,aAAa,SAAS;AAAA,YACvE;AAAA,YACA,MAAM,KAAK,mBAAmB,OAAO;AAAA,UACzC,EAAE,MAAM;AACR;AAAA,QACJ;AAAA,MACJ;AAGA,UAAI,KAAK,sBAAsB,UAAa,KAAK,2BAA2B,QAAW;AACnF,aAAK,wBAAwB;AAC7B,aAAK,uBAAuB,IAAI,gCAAgC,CAAC;AACjE,aAAK,yBAAyB;AAC9B,aAAK,yBAAyB;AAAA,MAClC;AACA,UAAI,KAAK,gBAAgB,QAAW;AAEhC,aAAK,OAAO,EAAE,MAAM,WAAS,OAAO,MAAM,+CAA+C,KAAK,CAAC;AAAA,MACnG;AACA;AAAA,IACJ;AAEA,SAAK,QAAQ,eAAe,KAAK;AAEjC,SAAK,QAAQ,MAAM,KAAK,sBAAsB;AAC9C,UAAM,0BAA0B,KAAK,QAAQ,8BAA8B,KAAK,sBAAsB;AACtG,WAAO;AAAA,MACH,oBAAoB,QAAQ,aAAa,SAAS,4BAA4B,KAAK,sBAAsB,kBAAkB,uBAAuB;AAAA,IACtJ;AAEA,SAAK,QACA,KAAK,OAAO,EACZ,KAAK,MAAM,KAAK,wBAAwB,SAAS,yBAAyB,sBAAsB,CAAC,EACjG,MAAM,WAAS;AACZ,aAAO,MAAM,mDAAmD,KAAK;AACrE,UAAI,iBAAiB,0BAA0B;AAC3C,aAAK,OAAO,EAAE,MAAM,CAAAC,WAAS,OAAO,MAAM,+CAA+CA,MAAK,CAAC;AAAA,MACnG,OAAO;AACH,aAAK,wBAAwB,SAAS,yBAAyB,sBAAsB;AAAA,MACzF;AAAA,IACJ,CAAC;AAAA,EACT;AAAA,EAEA,wBAAwB,SAAkB,yBAAmC,0BAAqC;AAC9G,SAAK,uBAAuB,KAAK;AAAA,MAAS;AAAA,MAA0B;AAAA,MAAyB,MACzF,KAAK,mBAAmB,SAAS,wBAAwB;AAAA,IAC7D,EAAE,MAAM;AAAA,EACZ;AAAA,EAEA,MAAM,UAAU;AACZ,QAAI,KAAK,gBAAgB,UAAa,KAAK,0BAA0B,QAAW;AAC5E,WAAK,yBAAyB,KAAK;AACnC,YAAM,eAAe,KAAK;AAC1B,WAAK,wBAAwB;AAC7B,UAAI;AACA,cAAM,KAAK,4BAA4B,YAAY;AAAA,MACvD,SAAS,OAAO;AACZ,eAAO,MAAM,+CAA+C,KAAK;AAAA,MACrE;AAAA,IACJ;AACA,UAAM,KAAK,OAAO;AAAA,EACtB;AAAA,EAEA,sBAAsB,SAAmB;AACrC,QAAI,KAAK,2BAA2B,UAAa,KAAK,uBAAuB,WAAW;AACpF,WAAK,uBAAuB,KAAK;AACjC,YAAM,IAAI;AAAA,QACN;AAAA,QACA,WAAW;AAAA,MACf;AAAA,IACJ;AACA,WAAO;AAAA,MACH,kDAAkD,KAAK,WAAW,QAAQ,SAAS,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI;AAAA,IAChI;AACA,SAAK,yBAAyB,KAAK,SAAS,qBAAqB,SAAS,MAAM;AAC5E,aAAO;AAAA,QACH,yCAAyC,KAAK,WAAW,SAAS,KAAK,QAAQ,IAAI;AAAA,MACvF;AAAA,IACJ,CAAC,EAAE,MAAM;AAAA,EACb;AAAA,EAEA,wBAAwB;AACpB,QAAI,KAAK,2BAA2B,QAAW;AAC3C,aAAO;AAAA,QACH,kDAAkD,KAAK,WAAW,SAAS,KAAK,QAAQ,IAAI;AAAA,MAChG;AACA,WAAK,uBAAuB,KAAK;AACjC,WAAK,yBAAyB;AAAA,IAClC;AAAA,EACJ;AAAA,EAEA,sBAAsB;AAClB,WAAO,KAAK,2BAA2B;AAAA,EAC3C;AAAA,EAEA,4BAA4B;AACxB,WAAO,KAAK,2BAA2B,UAAa,KAAK,uBAAuB;AAAA,EACpF;AAAA,EAEA,6BAA6B;AACzB,WAAO,KAAK,2BAA2B,UAAa,CAAC,KAAK,uBAAuB;AAAA,EACrF;AAAA,EAEA,MAAM,MAAM,QAAQ,OAAO;AACvB,QAAI,KAAK,gBAAgB,QAAW;AAChC,UAAI,OAAO;AAEP,aAAK,YAAY,KAAK;AACtB,eAAO,KAAK,OAAO;AAAA,MACvB;AAEA;AAAA,IACJ;AACA,QAAI,CAAC,KAAK,OAAO;AAGb,aAAO,KAAK,YAAY,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,mCAAmC;AAClG,aAAO,KAAK,OAAO;AAAA,IACvB;AACA,SAAK,aAAa;AAClB,SAAK,SAAS,KAAK;AAEnB,QAAI,KAAK,0BAA0B,QAAW;AAC1C,WAAK,yBAAyB,KAAK;AACnC,YAAM,eAAe,KAAK;AAC1B,WAAK,wBAAwB;AAC7B,UAAI;AACA,cAAM,KAAK,4BAA4B,YAAY;AAAA,MACvD,SAAS,OAAO;AACZ,eAAO;AAAA,UACH,+CAA+C,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW;AAAA,UACtF;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,OAAO;AAEP,eAAO,KAAK,OAAO;AAAA,MACvB;AAAA,IACJ,WAAW,KAAK,sBAAsB,UAAa,OAAO;AAEtD,aAAO,KAAK,OAAO;AAAA,IACvB;AAKA,QAAI,sBAAsB;AAC1B,aAAS,IAAI,KAAK,wBAAwB,KAAK,IAAI,mBAAmB,KAAK;AACvE,4BAAsB,OAAO,sBAAsB,KAAK,QAAQ,8BAA8B,CAAC,CAAC;AAAA,IACpG;AACA,SAAK,cAAc,KAAK;AAAA,MACpB,4BAA4B,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW;AAAA,MACnE;AAAA,MACA,YAAY,MAAM,KAAK,OAAO;AAAA,IAClC,EAAE,MAAM;AAAA,EACZ;AAAA,EAEA,MAAM,SAAS;AACX,QAAI,CAAC,KAAK,YAAY;AAClB,WAAK,SAAS,KAAK;AAAA,IACvB;AACA,SAAK,aAAa;AAClB,SAAK,sBAAsB,KAAK;AAChC,SAAK,aAAa,KAAK;AACvB,SAAK,wBAAwB,KAAK;AAClC,SAAK,eAAe,MAAM;AAC1B,UAAM,KAAK,QAAQ,KAAK;AAAA,EAC5B;AACJ;",
|
|
5
|
-
"names": ["messageType", "error"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["protocolId", "messageType", "error"]
|
|
6
6
|
}
|
|
@@ -12,7 +12,7 @@ export type ProtocolStatusMessage<T> = {
|
|
|
12
12
|
protocolStatus: T;
|
|
13
13
|
protocolData?: Bytes;
|
|
14
14
|
};
|
|
15
|
-
export declare abstract class ProtocolStatusMessageSchema<T extends ProtocolStatusMessage<any>> extends Schema<T
|
|
15
|
+
export declare abstract class ProtocolStatusMessageSchema<T extends ProtocolStatusMessage<any>> extends Schema<T> {
|
|
16
16
|
#private;
|
|
17
17
|
constructor(protocol: number | {
|
|
18
18
|
protocolId: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtocolStatusMessage.d.ts","sourceRoot":"","sources":["../../../src/protocol/ProtocolStatusMessage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAkC,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE7D,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACnC,aAAa,EAAE,iBAAiB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,CAAC,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,CAAC;CACxB,CAAC;AAEF,8BAAsB,2BAA2B,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"ProtocolStatusMessage.d.ts","sourceRoot":"","sources":["../../../src/protocol/ProtocolStatusMessage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAkC,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE7D,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACnC,aAAa,EAAE,iBAAiB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,CAAC,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,CAAC;CACxB,CAAC;AAEF,8BAAsB,2BAA2B,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;;gBAKzF,QAAQ,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,2BAA2B,UAAO;IAYlG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,GAAG,KAAK;IAInE,cAAc,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC;IAWvF,cAAc,CAAC,KAAK,EAAE,KAAK,GAeP,CAAC;CAExB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/protocol/ProtocolStatusMessage.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAgB,YAAY,YAAY,cAAc;AACtD,SAA4B,QAAQ,gBAAgB;AAU7C,MAAe,oCAA0E,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAgB,YAAY,YAAY,cAAc;AACtD,SAA4B,QAAQ,gBAAgB;AAU7C,MAAe,oCAA0E,OAAU;AAAA,EACtG;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,UAA6D,8BAA8B,MAAM;AACzG,UAAM;AACN,QAAI,OAAO,aAAa,UAAU;AAC9B,WAAK,cAAc;AACnB,WAAK,YAAY;AAAA,IACrB,OAAO;AACH,WAAK,cAAc,SAAS;AAC5B,WAAK,YAAY,SAAS;AAAA,IAC9B;AACA,SAAK,+BAA+B;AAAA,EACxC;AAAA,EAES,OAAO,SAAoD;AAChE,WAAO,MAAM,OAAO,EAAE,GAAG,SAAS,YAAY,KAAK,aAAa,UAAU,KAAK,UAAU,CAAM;AAAA,EACnG;AAAA,EAEA,eAAe,EAAE,eAAe,gBAAgB,YAAY,cAAc,SAAS,GAAM;AACrF,UAAM,SAAS,IAAI,WAAW,OAAO,MAAM;AAC3C,WAAO,YAAY,aAAa;AAChC,WAAO,YAAa,YAAY,KAAM,UAAU;AAChD,WAAO,YAAY,cAAc;AACjC,QAAI,KAAK,gCAAgC,iBAAiB,UAAa,aAAa,aAAa,GAAG;AAChG,aAAO,eAAe,YAAY;AAAA,IACtC;AACA,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,eAAe,OAAc;AACzB,UAAM,SAAS,IAAI,WAAW,OAAO,OAAO,MAAM;AAClD,UAAM,gBAAgB,OAAO,WAAW;AACxC,UAAM,mBAAmB,OAAO,WAAW;AAC3C,UAAM,iBAAiB,OAAO,WAAW;AACzC,UAAM,eAAe,OAAO,sBAAsB,IAAI,OAAO,iBAAiB;AAE9E,UAAM,aAAa,mBAAmB;AACtC,UAAM,WAAW,SAAS,qBAAqB,EAAE;AACjD,WAAO;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/protocol",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20250921-b7a3dda23",
|
|
4
4
|
"description": "Low-level APIs for Matter interaction",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
"#*": "./src/*"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@matter/general": "0.16.0-alpha.0-
|
|
44
|
-
"@matter/model": "0.16.0-alpha.0-
|
|
45
|
-
"@matter/types": "0.16.0-alpha.0-
|
|
43
|
+
"@matter/general": "0.16.0-alpha.0-20250921-b7a3dda23",
|
|
44
|
+
"@matter/model": "0.16.0-alpha.0-20250921-b7a3dda23",
|
|
45
|
+
"@matter/types": "0.16.0-alpha.0-20250921-b7a3dda23"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@matter/tools": "0.16.0-alpha.0-
|
|
49
|
-
"@matter/testing": "0.16.0-alpha.0-
|
|
48
|
+
"@matter/tools": "0.16.0-alpha.0-20250921-b7a3dda23",
|
|
49
|
+
"@matter/testing": "0.16.0-alpha.0-20250921-b7a3dda23"
|
|
50
50
|
},
|
|
51
51
|
"files": [
|
|
52
52
|
"dist/**/*",
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { BdxMessenger } from "./BdxMessenger.js";
|
|
8
|
+
import { BdxSession } from "./BdxSession.js";
|
|
9
|
+
import { BdxSessionConfiguration } from "./BdxSessionConfiguration.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* BDX Client to initiate a BDX transfer.
|
|
13
|
+
* Unless differently configured it tries to be the Driver of the transfer.
|
|
14
|
+
* Asynchronous transfer is provisional, implemented in theory but disabled internally.
|
|
15
|
+
*/
|
|
16
|
+
export class BdxClient {
|
|
17
|
+
#session: BdxSession;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Create a BDX client to initiate a BDX transfer as sender.
|
|
21
|
+
* A file designator needs to be provided and needs to exist in the storage context.
|
|
22
|
+
*/
|
|
23
|
+
static asSender(messenger: BdxMessenger, options: BdxSessionConfiguration.SenderInitiatorOptions) {
|
|
24
|
+
return new BdxClient(BdxSession.asSender(messenger, options));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Create a BDX client to initiate a BDX transfer as receiver.
|
|
29
|
+
* A file designator needs to be provided. The content will be written to the storage context.
|
|
30
|
+
*/
|
|
31
|
+
static asReceiver(messenger: BdxMessenger, options: BdxSessionConfiguration.InitiatorOptions) {
|
|
32
|
+
return new BdxClient(BdxSession.asReceiver(messenger, options));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
constructor(bdxSession: BdxSession) {
|
|
36
|
+
this.#session = bdxSession;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** This is the main entry point to initiate and process the BDX transfer. */
|
|
40
|
+
processTransfer() {
|
|
41
|
+
return this.#session.processTransfer();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
close() {
|
|
45
|
+
return this.#session.close();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { MatterError } from "#general";
|
|
8
|
+
import { BdxStatusCode, GeneralStatusCode } from "#types";
|
|
9
|
+
|
|
10
|
+
/** Error class used by the BDX protocol. */
|
|
11
|
+
export class BdxError extends MatterError {
|
|
12
|
+
#code: BdxStatusCode;
|
|
13
|
+
|
|
14
|
+
constructor(message: string, code: BdxStatusCode = BdxStatusCode.Unknown) {
|
|
15
|
+
super(`BDX error ${BdxStatusCode[code]}(${code}): ${message}`);
|
|
16
|
+
this.#code = code;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
get code(): BdxStatusCode {
|
|
20
|
+
return this.#code;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static is(error: unknown) {
|
|
24
|
+
return error instanceof BdxError;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Error base Class for all errors related to the BDX status response messages. */
|
|
29
|
+
export class BdxStatusResponseError extends MatterError {
|
|
30
|
+
public constructor(
|
|
31
|
+
message: string,
|
|
32
|
+
public readonly generalStatusCode: GeneralStatusCode,
|
|
33
|
+
public readonly protocolStatusCode: BdxStatusCode,
|
|
34
|
+
) {
|
|
35
|
+
super(
|
|
36
|
+
`(${GeneralStatusCode[generalStatusCode]} (${generalStatusCode}) / ${BdxStatusCode[protocolStatusCode]} (${protocolStatusCode})) ${message}`,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Message } from "#codec/MessageCodec.js";
|
|
8
|
+
import {
|
|
9
|
+
Bytes,
|
|
10
|
+
Diagnostic,
|
|
11
|
+
Duration,
|
|
12
|
+
ImplementationError,
|
|
13
|
+
InternalError,
|
|
14
|
+
Logger,
|
|
15
|
+
Minutes,
|
|
16
|
+
UnexpectedDataError,
|
|
17
|
+
} from "#general";
|
|
18
|
+
import { MessageExchange } from "#protocol/MessageExchange.js";
|
|
19
|
+
import { BdxMessageType, BdxStatusCode, GeneralStatusCode, SecureMessageType } from "#types";
|
|
20
|
+
import { BdxError, BdxStatusResponseError } from "./BdxError.js";
|
|
21
|
+
import { BdxReceiveAccept, BdxSendAccept } from "./schema/BdxAcceptMessagesSchema.js";
|
|
22
|
+
import {
|
|
23
|
+
BdxBlock,
|
|
24
|
+
BdxBlockAck,
|
|
25
|
+
BdxBlockAckEof,
|
|
26
|
+
BdxBlockEof,
|
|
27
|
+
BdxBlockQuery,
|
|
28
|
+
BdxBlockQueryWithSkip,
|
|
29
|
+
} from "./schema/BdxBlockMessagesSchema.js";
|
|
30
|
+
import { BdxInit } from "./schema/BdxInitMessagesSchema.js";
|
|
31
|
+
import { BdxMessage } from "./schema/BdxMessage.js";
|
|
32
|
+
import { BdxStatusMessage } from "./schema/BdxStatusMessageSchema.js";
|
|
33
|
+
|
|
34
|
+
const logger = Logger.get("BdxMessenger");
|
|
35
|
+
|
|
36
|
+
export const BDX_TRANSFER_IDLE_TIMEOUT = Minutes(5); // Minimum time according to Matter spec
|
|
37
|
+
|
|
38
|
+
/** Messenger class that contains all Bdx Messages */
|
|
39
|
+
export class BdxMessenger {
|
|
40
|
+
#exchange: MessageExchange;
|
|
41
|
+
#messageTimeout: Duration;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Creates a new BdxMessenger instance.
|
|
45
|
+
* @param exchange Exchange to use for the messaging
|
|
46
|
+
* @param messageTimeout Communication Timeout for the Bdx Messages, defaults to 5 minutes as defined for Matter OTA transfers
|
|
47
|
+
*/
|
|
48
|
+
constructor(exchange: MessageExchange, messageTimeout = BDX_TRANSFER_IDLE_TIMEOUT) {
|
|
49
|
+
if (!exchange.channel.isReliable) {
|
|
50
|
+
throw new ImplementationError("Bdx Protocol requires a reliable channel for message exchange");
|
|
51
|
+
}
|
|
52
|
+
this.#messageTimeout = messageTimeout;
|
|
53
|
+
this.#exchange = exchange;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
get channel() {
|
|
57
|
+
return this.#exchange.channel;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
get exchange() {
|
|
61
|
+
return this.#exchange;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
get maxPayloadSize() {
|
|
65
|
+
return this.#exchange.maxPayloadSize;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Waits for the next message and returns it.
|
|
70
|
+
* A List of allowed expected message types can be provided.
|
|
71
|
+
* If the message type is not in the list, an error will be thrown.
|
|
72
|
+
*/
|
|
73
|
+
async nextMessage(
|
|
74
|
+
expectedMessageTypes: BdxMessageType[],
|
|
75
|
+
timeout = this.#messageTimeout,
|
|
76
|
+
expectedMessageInfo?: string,
|
|
77
|
+
): Promise<BdxMessage<any>> {
|
|
78
|
+
logger.debug(
|
|
79
|
+
`Waiting for Bdx ${expectedMessageTypes.map(t => BdxMessageType[t]).join("/")} message with timeout ${timeout}ms`,
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
const message = await this.exchange.nextMessage({ timeout });
|
|
83
|
+
const messageType = message.payloadHeader.messageType as BdxMessageType;
|
|
84
|
+
if (expectedMessageInfo === undefined) {
|
|
85
|
+
expectedMessageInfo = expectedMessageTypes.map(t => `${t} (${BdxMessageType[t]})`).join(",");
|
|
86
|
+
}
|
|
87
|
+
this.throwIfErrorStatusReport(message, expectedMessageInfo);
|
|
88
|
+
if (!expectedMessageTypes.includes(messageType))
|
|
89
|
+
throw new UnexpectedDataError(
|
|
90
|
+
`Received unexpected message type: ${BdxMessageType[messageType] ?? "unknown"}#${messageType}, expected: ${expectedMessageInfo}`,
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
logger.debug(
|
|
94
|
+
`Received Bdx ${BdxMessageType[messageType]}${message.payload.byteLength > 0 ? ` with ${message.payload.byteLength}bytes` : ""}`,
|
|
95
|
+
message,
|
|
96
|
+
);
|
|
97
|
+
return BdxMessage.decode(messageType, message.payload);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async send(bdxMessage: BdxMessage<any>) {
|
|
101
|
+
const { kind: messageType, message } = bdxMessage;
|
|
102
|
+
logger.debug(
|
|
103
|
+
`Sending Bdx ${BdxMessageType[messageType]}${"data" in message && Bytes.isBytes(message.data) ? ` with ${message.data.byteLength}bytes` : ""}`,
|
|
104
|
+
message,
|
|
105
|
+
);
|
|
106
|
+
await this.exchange.send(messageType, BdxMessage.encode(bdxMessage));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Sends a Bdx SendInit message and waits for the SendAccept message as a response and returns it decoded. */
|
|
110
|
+
async sendSendInit(message: BdxInit): Promise<BdxSendAccept> {
|
|
111
|
+
await this.send({ kind: BdxMessageType.SendInit, message });
|
|
112
|
+
|
|
113
|
+
const response = await this.nextMessage([BdxMessageType.SendAccept]);
|
|
114
|
+
BdxMessage.assert(response, BdxMessageType.SendAccept);
|
|
115
|
+
return response.message;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/** Sends a ReceiveInit message and waits for the ReceiveAccept message as a response and returns it decoded. */
|
|
119
|
+
async sendReceiveInit(message: BdxInit): Promise<BdxReceiveAccept> {
|
|
120
|
+
await this.send({ kind: BdxMessageType.ReceiveInit, message });
|
|
121
|
+
|
|
122
|
+
const response = await this.nextMessage([BdxMessageType.ReceiveAccept]);
|
|
123
|
+
BdxMessage.assert(response, BdxMessageType.ReceiveAccept);
|
|
124
|
+
return response.message;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/** Encodes and sends a Bdx SendAccept message. */
|
|
128
|
+
async sendSendAccept(message: BdxSendAccept) {
|
|
129
|
+
await this.send({ kind: BdxMessageType.SendAccept, message });
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** Encodes and sends a Bdx ReceiveAccept message. */
|
|
133
|
+
async sendReceiveAccept(message: BdxReceiveAccept) {
|
|
134
|
+
await this.send({ kind: BdxMessageType.ReceiveAccept, message });
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/** Encodes and sends a Bdx Block message. */
|
|
138
|
+
async sendBlock(message: BdxBlock) {
|
|
139
|
+
await this.send({ kind: BdxMessageType.Block, message });
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** Encodes and sends a Bdx BlockQuery message. */
|
|
143
|
+
async sendBlockQuery(message: BdxBlockQuery) {
|
|
144
|
+
await this.send({ kind: BdxMessageType.BlockQuery, message });
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/** Encodes and sends a Bdx BlockQueryWithSkip message. */
|
|
148
|
+
async sendBlockQueryWithSkip(message: BdxBlockQueryWithSkip) {
|
|
149
|
+
await this.send({ kind: BdxMessageType.BlockQueryWithSkip, message });
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/** Encodes and sends a Bdx BlockEof message. */
|
|
153
|
+
async sendBlockEof(message: BdxBlockEof) {
|
|
154
|
+
await this.send({ kind: BdxMessageType.BlockEof, message });
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/** Encodes and sends a Bdx BlockAck message. */
|
|
158
|
+
async sendBlockAck(message: BdxBlockAck) {
|
|
159
|
+
await this.send({ kind: BdxMessageType.BlockAck, message });
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** Encodes and sends a Bdx BlockAckEof message */
|
|
163
|
+
async sendBlockAckEof(message: BdxBlockAckEof) {
|
|
164
|
+
await this.send({ kind: BdxMessageType.BlockAckEof, message });
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/** Read the next Block message, accepts Block and BlockEof messages. Returns the decoded message and it's type. */
|
|
168
|
+
async readBlock(): Promise<BdxMessage<BdxMessageType.Block | BdxMessageType.BlockEof>> {
|
|
169
|
+
const block = await this.nextMessage([BdxMessageType.Block, BdxMessageType.BlockEof]);
|
|
170
|
+
if (BdxMessage.is(block, BdxMessageType.Block) && block.message.data.byteLength === 0) {
|
|
171
|
+
// a Block message must not have empty data
|
|
172
|
+
throw new BdxError("Received empty data in Block message", BdxStatusCode.BadMessageContent);
|
|
173
|
+
}
|
|
174
|
+
return block;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Read the next BlockQuery message, accepts BlockQuery and BlockQueryWithSkip and BlockAck messages.
|
|
179
|
+
* When a BlockAck is received, it will be validated and the next BlockQuery message will be read.
|
|
180
|
+
* Returns the decoded message and it's type.
|
|
181
|
+
*/
|
|
182
|
+
async readBlockQuery(): Promise<BdxMessage<BdxMessageType.BlockQuery | BdxMessageType.BlockQueryWithSkip>> {
|
|
183
|
+
let response = await this.nextMessage([
|
|
184
|
+
BdxMessageType.BlockQuery,
|
|
185
|
+
BdxMessageType.BlockQueryWithSkip,
|
|
186
|
+
BdxMessageType.BlockAck,
|
|
187
|
+
]);
|
|
188
|
+
let expectedBlockMessageCounter: number | undefined = undefined;
|
|
189
|
+
if (BdxMessage.is(response, BdxMessageType.BlockAck)) {
|
|
190
|
+
expectedBlockMessageCounter = (response.message.blockCounter + 1) % 0x100000000; // wrap around at 2^32
|
|
191
|
+
response = await this.nextMessage([BdxMessageType.BlockQuery, BdxMessageType.BlockQueryWithSkip]);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Ensure that if we got an Ack Message that the blockCounter is as expected because this cannot be done outside
|
|
195
|
+
if (
|
|
196
|
+
expectedBlockMessageCounter !== undefined &&
|
|
197
|
+
response.message.blockCounter !== expectedBlockMessageCounter
|
|
198
|
+
) {
|
|
199
|
+
throw new BdxError(
|
|
200
|
+
`Received BlockQuery with unexpected block counter: ${response.message.blockCounter}, expected: ${expectedBlockMessageCounter}`,
|
|
201
|
+
BdxStatusCode.BadBlockCounter,
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return response;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/** Reads the next BlockAckEof message and returns the decoded message. */
|
|
209
|
+
async readBlockAckEof(): Promise<BdxBlockAckEof> {
|
|
210
|
+
const response = await this.nextMessage([BdxMessageType.BlockAckEof]);
|
|
211
|
+
BdxMessage.assert(response, BdxMessageType.BlockAckEof);
|
|
212
|
+
return response.message;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/** Reads the next BlockAck message and returns the decoded message. */
|
|
216
|
+
async readBlockAck(): Promise<BdxBlockAck> {
|
|
217
|
+
const response = await this.nextMessage([BdxMessageType.BlockAck]);
|
|
218
|
+
BdxMessage.assert(response, BdxMessageType.BlockAck);
|
|
219
|
+
return response.message;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/** Sends a Bdx Error StatusReport message with the given protocol status. */
|
|
223
|
+
sendError(code: BdxStatusCode) {
|
|
224
|
+
return this.#sendStatusReport(GeneralStatusCode.Failure, code);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/** Encodes and sends a Bdx StatusReport message with the given general and protocol status. */
|
|
228
|
+
async #sendStatusReport(generalStatus: GeneralStatusCode, protocolStatus: BdxStatusCode, requiresAck?: boolean) {
|
|
229
|
+
await this.#exchange.send(
|
|
230
|
+
SecureMessageType.StatusReport,
|
|
231
|
+
BdxStatusMessage.encode({
|
|
232
|
+
generalStatus,
|
|
233
|
+
protocolStatus,
|
|
234
|
+
}),
|
|
235
|
+
{
|
|
236
|
+
requiresAck,
|
|
237
|
+
logContext: {
|
|
238
|
+
generalStatus: GeneralStatusCode[generalStatus] ?? Diagnostic.hex(generalStatus),
|
|
239
|
+
protocolStatus: BdxStatusCode[protocolStatus] ?? Diagnostic.hex(protocolStatus),
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
protected throwIfErrorStatusReport(message: Message, logHint?: string) {
|
|
246
|
+
const {
|
|
247
|
+
payloadHeader: { messageType },
|
|
248
|
+
payload,
|
|
249
|
+
} = message;
|
|
250
|
+
if (messageType !== SecureMessageType.StatusReport) return;
|
|
251
|
+
|
|
252
|
+
const { generalStatus, protocolId, protocolStatus } = BdxStatusMessage.decode(payload);
|
|
253
|
+
if (generalStatus !== GeneralStatusCode.Success) {
|
|
254
|
+
throw new BdxStatusResponseError(
|
|
255
|
+
`Received general error status for protocol ${protocolId}${logHint ? ` (${logHint})` : ""}`,
|
|
256
|
+
generalStatus,
|
|
257
|
+
protocolStatus,
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
if (protocolStatus !== BdxStatusCode.Success) {
|
|
261
|
+
throw new BdxStatusResponseError(
|
|
262
|
+
`Received general success status, but protocol status is not Success${logHint ? ` (${logHint})` : ""}`,
|
|
263
|
+
generalStatus,
|
|
264
|
+
protocolStatus,
|
|
265
|
+
);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
close() {
|
|
270
|
+
return this.#exchange.close();
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Ensure that the value is a safe JavaScript "number" type and that it is not too large. Matter spec allows also
|
|
275
|
+
* 64bit values, but they make little sense for now, so make sure we handle them as too large. MAX_SAFE_INTEGER is
|
|
276
|
+
* 2^53-1 and is enough for now.
|
|
277
|
+
*/
|
|
278
|
+
static asSafeNumber(
|
|
279
|
+
value: number | bigint | undefined,
|
|
280
|
+
context = "",
|
|
281
|
+
bdxErrorCode = BdxStatusCode.Unknown,
|
|
282
|
+
): number {
|
|
283
|
+
if (typeof value !== "number" && typeof value !== "bigint") {
|
|
284
|
+
throw new InternalError(`${context} ${value} is not a number`); // Should not happen
|
|
285
|
+
}
|
|
286
|
+
if (value > Number.MAX_SAFE_INTEGER) {
|
|
287
|
+
throw new BdxError(`${context} ${value} exceeds maximum safe integer value`, bdxErrorCode);
|
|
288
|
+
}
|
|
289
|
+
return Number(value);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Logger, MatterError, StorageContext } from "#general";
|
|
8
|
+
import { MessageExchange } from "#protocol/MessageExchange.js";
|
|
9
|
+
import { ProtocolHandler } from "#protocol/ProtocolHandler.js";
|
|
10
|
+
import { BDX_PROTOCOL_ID, BdxMessageType, BdxStatusCode } from "#types";
|
|
11
|
+
import { Message } from "../codec/MessageCodec.js";
|
|
12
|
+
import { BdxMessenger } from "./BdxMessenger.js";
|
|
13
|
+
import { BdxSession } from "./BdxSession.js";
|
|
14
|
+
import { BdxSessionConfiguration } from "./BdxSessionConfiguration.js";
|
|
15
|
+
import { BdxInitMessageSchema } from "./schema/BdxInitMessagesSchema.js";
|
|
16
|
+
|
|
17
|
+
const logger = Logger.get("BdxProtocol");
|
|
18
|
+
|
|
19
|
+
/** BDX protocol handler. */
|
|
20
|
+
export class BdxProtocol implements ProtocolHandler {
|
|
21
|
+
readonly id = BDX_PROTOCOL_ID;
|
|
22
|
+
readonly requiresSecureSession = true;
|
|
23
|
+
readonly #activeBdxSessions = new Map<MessageExchange, BdxSession>();
|
|
24
|
+
#storage: StorageContext;
|
|
25
|
+
#bdxLimits?: BdxSessionConfiguration.Config;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Create a new BDX protocol handler.
|
|
29
|
+
* @param storage StorageContext to read or write files from/to.
|
|
30
|
+
* @param options BDX options/limits to use for this session. us this to control how the transfer should behave.
|
|
31
|
+
*/
|
|
32
|
+
constructor(storage: StorageContext, options?: BdxSessionConfiguration.Config) {
|
|
33
|
+
this.#storage = storage;
|
|
34
|
+
this.#bdxLimits = options;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async onNewExchange(exchange: MessageExchange, message: Message) {
|
|
38
|
+
const initMessageType = message.payloadHeader.messageType;
|
|
39
|
+
const messenger = new BdxMessenger(exchange);
|
|
40
|
+
|
|
41
|
+
switch (initMessageType) {
|
|
42
|
+
case BdxMessageType.SendInit:
|
|
43
|
+
case BdxMessageType.ReceiveInit:
|
|
44
|
+
logger.debug(
|
|
45
|
+
`Initialize Session for ${BdxMessageType[initMessageType]} message on BDX protocol for exchange ${exchange.id}`,
|
|
46
|
+
);
|
|
47
|
+
const { payload } = message;
|
|
48
|
+
const bdxSession = BdxSession.fromMessage(this.#storage, messenger, {
|
|
49
|
+
initMessageType,
|
|
50
|
+
initMessage: new BdxInitMessageSchema().decode(payload),
|
|
51
|
+
...this.#bdxLimits,
|
|
52
|
+
});
|
|
53
|
+
await this.#registerSession(messenger, bdxSession);
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
await bdxSession.processTransfer();
|
|
57
|
+
} catch (error) {
|
|
58
|
+
logger.error(`Error processing BDX transfer:`, error);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
break;
|
|
62
|
+
default:
|
|
63
|
+
logger.warn(
|
|
64
|
+
`Unexpected BDX message type ${BdxMessageType[initMessageType]} on new exchange ${exchange.id}`,
|
|
65
|
+
);
|
|
66
|
+
await messenger.sendError(BdxStatusCode.UnexpectedMessage);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Make sure only one BDX session can be active per exchange and that the exchange is closed with the BDX session. */
|
|
71
|
+
async #registerSession(messenger: BdxMessenger, bdxSession: BdxSession) {
|
|
72
|
+
const exchange = messenger.exchange;
|
|
73
|
+
if (this.#activeBdxSessions.has(exchange)) {
|
|
74
|
+
logger.warn(`BDX session for exchange ${exchange.id} already exists, sending error`);
|
|
75
|
+
await messenger.sendError(BdxStatusCode.UnexpectedMessage);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
this.#activeBdxSessions.set(exchange, bdxSession);
|
|
79
|
+
bdxSession.closed.on(async () => {
|
|
80
|
+
logger.debug(`BDX session for exchange ${exchange.id} closed`);
|
|
81
|
+
this.#activeBdxSessions.delete(exchange);
|
|
82
|
+
await exchange.close();
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
async close() {
|
|
87
|
+
logger.debug(`Closing BDX protocol handler with ${this.#activeBdxSessions.size} active sessions`);
|
|
88
|
+
for (const session of this.#activeBdxSessions.values()) {
|
|
89
|
+
await session.close(new MatterError("BDX protocol handler closed"));
|
|
90
|
+
}
|
|
91
|
+
this.#activeBdxSessions.clear();
|
|
92
|
+
}
|
|
93
|
+
}
|