@matter/protocol 0.16.0-alpha.0-20250807-37b08c9bb → 0.16.0-alpha.0-20250810-5c91a95d2
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/advertisement/Advertisement.d.ts +119 -0
- package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -0
- package/dist/cjs/advertisement/Advertisement.js +267 -0
- package/dist/cjs/advertisement/Advertisement.js.map +6 -0
- package/dist/cjs/advertisement/Advertiser.d.ts +50 -0
- package/dist/cjs/advertisement/Advertiser.d.ts.map +1 -0
- package/dist/cjs/advertisement/Advertiser.js +81 -0
- package/dist/cjs/advertisement/Advertiser.js.map +6 -0
- package/dist/cjs/advertisement/CommissioningMode.d.ts +11 -0
- package/dist/cjs/advertisement/CommissioningMode.d.ts.map +1 -0
- package/dist/cjs/advertisement/CommissioningMode.js +35 -0
- package/dist/cjs/advertisement/CommissioningMode.js.map +6 -0
- package/dist/cjs/{common/InstanceBroadcaster.d.ts → advertisement/PairingHintBitmap.d.ts} +3 -69
- package/dist/cjs/advertisement/PairingHintBitmap.d.ts.map +1 -0
- package/dist/cjs/{common/InstanceBroadcaster.js → advertisement/PairingHintBitmap.js} +5 -12
- package/dist/cjs/advertisement/PairingHintBitmap.js.map +6 -0
- package/dist/cjs/advertisement/ServiceDescription.d.ts +70 -0
- package/dist/cjs/advertisement/ServiceDescription.d.ts.map +1 -0
- package/dist/cjs/advertisement/ServiceDescription.js +61 -0
- package/dist/cjs/advertisement/ServiceDescription.js.map +6 -0
- package/dist/cjs/advertisement/ble/BleAdvertisement.d.ts +16 -0
- package/dist/cjs/advertisement/ble/BleAdvertisement.d.ts.map +1 -0
- package/dist/cjs/advertisement/ble/BleAdvertisement.js +85 -0
- package/dist/cjs/advertisement/ble/BleAdvertisement.js.map +6 -0
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +66 -0
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -0
- package/dist/cjs/advertisement/ble/BleAdvertiser.js +83 -0
- package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +6 -0
- package/dist/cjs/advertisement/ble/index.d.ts +8 -0
- package/dist/cjs/advertisement/ble/index.d.ts.map +1 -0
- package/dist/cjs/advertisement/ble/index.js +25 -0
- package/dist/cjs/advertisement/ble/index.js.map +6 -0
- package/dist/cjs/advertisement/index.d.ts +13 -0
- package/dist/cjs/advertisement/index.d.ts.map +1 -0
- package/dist/cjs/advertisement/index.js +30 -0
- package/dist/cjs/advertisement/index.js.map +6 -0
- package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts +21 -0
- package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts.map +1 -0
- package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.js +104 -0
- package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.js.map +6 -0
- package/dist/cjs/advertisement/mdns/CommissionerMdnsAdvertisement.d.ts +20 -0
- package/dist/cjs/advertisement/mdns/CommissionerMdnsAdvertisement.d.ts.map +1 -0
- package/dist/cjs/advertisement/mdns/CommissionerMdnsAdvertisement.js +70 -0
- package/dist/cjs/advertisement/mdns/CommissionerMdnsAdvertisement.js.map +6 -0
- package/dist/cjs/advertisement/mdns/MdnsAdvertisement.d.ts +40 -0
- package/dist/cjs/advertisement/mdns/MdnsAdvertisement.d.ts.map +1 -0
- package/dist/cjs/advertisement/mdns/MdnsAdvertisement.js +145 -0
- package/dist/cjs/advertisement/mdns/MdnsAdvertisement.js.map +6 -0
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +99 -0
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -0
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +166 -0
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +6 -0
- package/dist/cjs/advertisement/mdns/OperationalMdnsAdvertisement.d.ts +18 -0
- package/dist/cjs/advertisement/mdns/OperationalMdnsAdvertisement.d.ts.map +1 -0
- package/dist/cjs/advertisement/mdns/OperationalMdnsAdvertisement.js +55 -0
- package/dist/cjs/advertisement/mdns/OperationalMdnsAdvertisement.js.map +6 -0
- package/dist/cjs/advertisement/mdns/index.d.ts +11 -0
- package/dist/cjs/advertisement/mdns/index.d.ts.map +1 -0
- package/dist/cjs/advertisement/mdns/index.js +28 -0
- package/dist/cjs/advertisement/mdns/index.js.map +6 -0
- package/dist/cjs/ble/Ble.d.ts +7 -5
- package/dist/cjs/ble/Ble.d.ts.map +1 -1
- package/dist/cjs/ble/Ble.js.map +1 -1
- package/dist/cjs/codec/BtpCodec.d.ts +1 -1
- package/dist/cjs/codec/BtpCodec.d.ts.map +1 -1
- package/dist/cjs/codec/BtpCodec.js +4 -4
- package/dist/cjs/codec/BtpCodec.js.map +1 -1
- package/dist/cjs/common/Scanner.d.ts +1 -25
- package/dist/cjs/common/Scanner.d.ts.map +1 -1
- package/dist/cjs/common/Scanner.js +1 -18
- package/dist/cjs/common/Scanner.js.map +1 -1
- package/dist/cjs/common/SupportedTransportsBitmap.d.ts +33 -0
- package/dist/cjs/common/SupportedTransportsBitmap.d.ts.map +1 -0
- package/dist/cjs/common/SupportedTransportsBitmap.js +45 -0
- package/dist/cjs/common/SupportedTransportsBitmap.js.map +6 -0
- package/dist/cjs/common/index.d.ts +1 -1
- package/dist/cjs/common/index.d.ts.map +1 -1
- package/dist/cjs/common/index.js +1 -1
- package/dist/cjs/common/index.js.map +1 -1
- package/dist/cjs/fabric/Fabric.d.ts +1 -0
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
- package/dist/cjs/fabric/Fabric.js +7 -0
- package/dist/cjs/fabric/Fabric.js.map +1 -1
- 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/{esm/mdns/MdnsScanner.d.ts → cjs/mdns/MdnsClient.d.ts} +11 -14
- package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -0
- package/dist/cjs/mdns/{MdnsScanner.js → MdnsClient.js} +35 -90
- package/dist/cjs/mdns/MdnsClient.js.map +6 -0
- package/dist/cjs/mdns/MdnsConsts.d.ts +11 -2
- package/dist/cjs/mdns/MdnsConsts.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsConsts.js +31 -4
- package/dist/cjs/mdns/MdnsConsts.js.map +1 -1
- package/dist/cjs/mdns/MdnsServer.d.ts +13 -22
- package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsServer.js +55 -140
- package/dist/cjs/mdns/MdnsServer.js.map +2 -2
- package/dist/cjs/mdns/MdnsService.d.ts +4 -5
- package/dist/cjs/mdns/MdnsService.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsService.js +22 -23
- package/dist/cjs/mdns/MdnsService.js.map +1 -1
- package/dist/cjs/mdns/MdnsSocket.d.ts +32 -0
- package/dist/cjs/mdns/MdnsSocket.d.ts.map +1 -0
- package/dist/cjs/mdns/MdnsSocket.js +144 -0
- package/dist/cjs/mdns/MdnsSocket.js.map +6 -0
- package/dist/cjs/mdns/index.d.ts +2 -3
- package/dist/cjs/mdns/index.d.ts.map +1 -1
- package/dist/cjs/mdns/index.js +2 -3
- package/dist/cjs/mdns/index.js.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.js +2 -2
- package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.d.ts +3 -3
- package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
- package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
- package/dist/cjs/peer/PeerSet.js +10 -5
- package/dist/cjs/peer/PeerSet.js.map +1 -1
- package/dist/cjs/protocol/DeviceAdvertiser.d.ts +23 -18
- package/dist/cjs/protocol/DeviceAdvertiser.d.ts.map +1 -1
- package/dist/cjs/protocol/DeviceAdvertiser.js +130 -129
- package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
- package/dist/cjs/protocol/DeviceCommissioner.d.ts +0 -1
- package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -1
- package/dist/cjs/protocol/DeviceCommissioner.js +44 -44
- package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +1 -1
- package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +6 -8
- package/dist/cjs/protocol/MessageExchange.js.map +1 -1
- package/dist/cjs/session/NodeSession.d.ts +1 -0
- package/dist/cjs/session/NodeSession.d.ts.map +1 -1
- package/dist/cjs/session/NodeSession.js +3 -0
- package/dist/cjs/session/NodeSession.js.map +1 -1
- package/dist/cjs/session/Session.d.ts +3 -33
- package/dist/cjs/session/Session.d.ts.map +1 -1
- package/dist/cjs/session/Session.js +4 -9
- package/dist/cjs/session/Session.js.map +1 -1
- package/dist/cjs/session/SessionIntervals.d.ts +36 -0
- package/dist/cjs/session/SessionIntervals.d.ts.map +1 -0
- package/dist/cjs/session/SessionIntervals.js +51 -0
- package/dist/cjs/session/SessionIntervals.js.map +6 -0
- package/dist/cjs/session/SessionManager.d.ts +1 -1
- package/dist/cjs/session/SessionManager.d.ts.map +1 -1
- package/dist/cjs/session/SessionManager.js +11 -12
- package/dist/cjs/session/SessionManager.js.map +1 -1
- package/dist/cjs/session/pase/PaseMessages.js +2 -2
- package/dist/cjs/session/pase/PaseMessages.js.map +1 -1
- package/dist/esm/advertisement/Advertisement.d.ts +119 -0
- package/dist/esm/advertisement/Advertisement.d.ts.map +1 -0
- package/dist/esm/advertisement/Advertisement.js +247 -0
- package/dist/esm/advertisement/Advertisement.js.map +6 -0
- package/dist/esm/advertisement/Advertiser.d.ts +50 -0
- package/dist/esm/advertisement/Advertiser.d.ts.map +1 -0
- package/dist/esm/advertisement/Advertiser.js +61 -0
- package/dist/esm/advertisement/Advertiser.js.map +6 -0
- package/dist/esm/advertisement/CommissioningMode.d.ts +11 -0
- package/dist/esm/advertisement/CommissioningMode.d.ts.map +1 -0
- package/dist/esm/advertisement/CommissioningMode.js +15 -0
- package/dist/esm/advertisement/CommissioningMode.js.map +6 -0
- package/dist/esm/{common/InstanceBroadcaster.d.ts → advertisement/PairingHintBitmap.d.ts} +3 -69
- package/dist/esm/advertisement/PairingHintBitmap.d.ts.map +1 -0
- package/dist/esm/{common/InstanceBroadcaster.js → advertisement/PairingHintBitmap.js} +2 -9
- package/dist/esm/{common/InstanceBroadcaster.js.map → advertisement/PairingHintBitmap.js.map} +3 -3
- package/dist/esm/advertisement/ServiceDescription.d.ts +70 -0
- package/dist/esm/advertisement/ServiceDescription.d.ts.map +1 -0
- package/dist/esm/advertisement/ServiceDescription.js +41 -0
- package/dist/esm/advertisement/ServiceDescription.js.map +6 -0
- package/dist/esm/advertisement/ble/BleAdvertisement.d.ts +16 -0
- package/dist/esm/advertisement/ble/BleAdvertisement.d.ts.map +1 -0
- package/dist/esm/advertisement/ble/BleAdvertisement.js +65 -0
- package/dist/esm/advertisement/ble/BleAdvertisement.js.map +6 -0
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +66 -0
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -0
- package/dist/esm/advertisement/ble/BleAdvertiser.js +63 -0
- package/dist/esm/advertisement/ble/BleAdvertiser.js.map +6 -0
- package/dist/esm/advertisement/ble/index.d.ts +8 -0
- package/dist/esm/advertisement/ble/index.d.ts.map +1 -0
- package/dist/esm/advertisement/ble/index.js +8 -0
- package/dist/esm/advertisement/ble/index.js.map +6 -0
- package/dist/esm/advertisement/index.d.ts +13 -0
- package/dist/esm/advertisement/index.d.ts.map +1 -0
- package/dist/esm/advertisement/index.js +13 -0
- package/dist/esm/advertisement/index.js.map +6 -0
- package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts +21 -0
- package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts.map +1 -0
- package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.js +95 -0
- package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.js.map +6 -0
- package/dist/esm/advertisement/mdns/CommissionerMdnsAdvertisement.d.ts +20 -0
- package/dist/esm/advertisement/mdns/CommissionerMdnsAdvertisement.d.ts.map +1 -0
- package/dist/esm/advertisement/mdns/CommissionerMdnsAdvertisement.js +54 -0
- package/dist/esm/advertisement/mdns/CommissionerMdnsAdvertisement.js.map +6 -0
- package/dist/esm/advertisement/mdns/MdnsAdvertisement.d.ts +40 -0
- package/dist/esm/advertisement/mdns/MdnsAdvertisement.d.ts.map +1 -0
- package/dist/esm/advertisement/mdns/MdnsAdvertisement.js +125 -0
- package/dist/esm/advertisement/mdns/MdnsAdvertisement.js.map +6 -0
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +99 -0
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -0
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +146 -0
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +6 -0
- package/dist/esm/advertisement/mdns/OperationalMdnsAdvertisement.d.ts +18 -0
- package/dist/esm/advertisement/mdns/OperationalMdnsAdvertisement.d.ts.map +1 -0
- package/dist/esm/advertisement/mdns/OperationalMdnsAdvertisement.js +40 -0
- package/dist/esm/advertisement/mdns/OperationalMdnsAdvertisement.js.map +6 -0
- package/dist/esm/advertisement/mdns/index.d.ts +11 -0
- package/dist/esm/advertisement/mdns/index.d.ts.map +1 -0
- package/dist/esm/advertisement/mdns/index.js +11 -0
- package/dist/esm/advertisement/mdns/index.js.map +6 -0
- package/dist/esm/ble/Ble.d.ts +7 -5
- package/dist/esm/ble/Ble.d.ts.map +1 -1
- package/dist/esm/ble/Ble.js.map +1 -1
- package/dist/esm/codec/BtpCodec.d.ts +1 -1
- package/dist/esm/codec/BtpCodec.d.ts.map +1 -1
- package/dist/esm/codec/BtpCodec.js +4 -4
- package/dist/esm/codec/BtpCodec.js.map +1 -1
- package/dist/esm/common/Scanner.d.ts +1 -25
- package/dist/esm/common/Scanner.d.ts.map +1 -1
- package/dist/esm/common/Scanner.js +1 -18
- package/dist/esm/common/Scanner.js.map +1 -1
- package/dist/esm/common/SupportedTransportsBitmap.d.ts +33 -0
- package/dist/esm/common/SupportedTransportsBitmap.d.ts.map +1 -0
- package/dist/esm/common/SupportedTransportsBitmap.js +25 -0
- package/dist/esm/common/SupportedTransportsBitmap.js.map +6 -0
- package/dist/esm/common/index.d.ts +1 -1
- package/dist/esm/common/index.d.ts.map +1 -1
- package/dist/esm/common/index.js +1 -1
- package/dist/esm/fabric/Fabric.d.ts +1 -0
- package/dist/esm/fabric/Fabric.d.ts.map +1 -1
- package/dist/esm/fabric/Fabric.js +7 -0
- package/dist/esm/fabric/Fabric.js.map +1 -1
- 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/{cjs/mdns/MdnsScanner.d.ts → esm/mdns/MdnsClient.d.ts} +11 -14
- package/dist/esm/mdns/MdnsClient.d.ts.map +1 -0
- package/dist/esm/mdns/{MdnsScanner.js → MdnsClient.js} +34 -92
- package/dist/esm/mdns/MdnsClient.js.map +6 -0
- package/dist/esm/mdns/MdnsConsts.d.ts +11 -2
- package/dist/esm/mdns/MdnsConsts.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsConsts.js +31 -4
- package/dist/esm/mdns/MdnsConsts.js.map +1 -1
- package/dist/esm/mdns/MdnsServer.d.ts +13 -22
- package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsServer.js +57 -145
- package/dist/esm/mdns/MdnsServer.js.map +2 -2
- package/dist/esm/mdns/MdnsService.d.ts +4 -5
- package/dist/esm/mdns/MdnsService.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsService.js +22 -24
- package/dist/esm/mdns/MdnsService.js.map +1 -1
- package/dist/esm/mdns/MdnsSocket.d.ts +32 -0
- package/dist/esm/mdns/MdnsSocket.d.ts.map +1 -0
- package/dist/esm/mdns/MdnsSocket.js +133 -0
- package/dist/esm/mdns/MdnsSocket.js.map +6 -0
- package/dist/esm/mdns/index.d.ts +2 -3
- package/dist/esm/mdns/index.d.ts.map +1 -1
- package/dist/esm/mdns/index.js +2 -3
- package/dist/esm/mdns/index.js.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.js +2 -2
- package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.d.ts +3 -3
- package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
- package/dist/esm/peer/PeerSet.d.ts.map +1 -1
- package/dist/esm/peer/PeerSet.js +10 -5
- package/dist/esm/peer/PeerSet.js.map +1 -1
- package/dist/esm/protocol/DeviceAdvertiser.d.ts +23 -18
- package/dist/esm/protocol/DeviceAdvertiser.d.ts.map +1 -1
- package/dist/esm/protocol/DeviceAdvertiser.js +131 -139
- package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
- package/dist/esm/protocol/DeviceCommissioner.d.ts +0 -1
- package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -1
- package/dist/esm/protocol/DeviceCommissioner.js +47 -47
- package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +1 -1
- package/dist/esm/protocol/ExchangeManager.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +6 -12
- package/dist/esm/protocol/MessageExchange.js.map +1 -1
- package/dist/esm/session/NodeSession.d.ts +1 -0
- package/dist/esm/session/NodeSession.d.ts.map +1 -1
- package/dist/esm/session/NodeSession.js +3 -0
- package/dist/esm/session/NodeSession.js.map +1 -1
- package/dist/esm/session/Session.d.ts +3 -33
- package/dist/esm/session/Session.d.ts.map +1 -1
- package/dist/esm/session/Session.js +4 -9
- package/dist/esm/session/Session.js.map +1 -1
- package/dist/esm/session/SessionIntervals.d.ts +36 -0
- package/dist/esm/session/SessionIntervals.d.ts.map +1 -0
- package/dist/esm/session/SessionIntervals.js +31 -0
- package/dist/esm/session/SessionIntervals.js.map +6 -0
- package/dist/esm/session/SessionManager.d.ts +1 -1
- package/dist/esm/session/SessionManager.d.ts.map +1 -1
- package/dist/esm/session/SessionManager.js +10 -14
- package/dist/esm/session/SessionManager.js.map +1 -1
- package/dist/esm/session/pase/PaseMessages.js +1 -1
- package/package.json +9 -9
- package/src/advertisement/Advertisement.ts +348 -0
- package/src/advertisement/Advertiser.ts +83 -0
- package/src/advertisement/CommissioningMode.ts +11 -0
- package/src/{common/InstanceBroadcaster.ts → advertisement/PairingHintBitmap.ts} +1 -92
- package/src/advertisement/ServiceDescription.ts +110 -0
- package/src/advertisement/ble/BleAdvertisement.ts +90 -0
- package/src/advertisement/ble/BleAdvertiser.ts +116 -0
- package/src/advertisement/ble/index.ts +8 -0
- package/src/advertisement/index.ts +13 -0
- package/src/advertisement/mdns/CommissionableMdnsAdvertisement.ts +118 -0
- package/src/advertisement/mdns/CommissionerMdnsAdvertisement.ts +73 -0
- package/src/advertisement/mdns/MdnsAdvertisement.ts +167 -0
- package/src/advertisement/mdns/MdnsAdvertiser.ts +248 -0
- package/src/advertisement/mdns/OperationalMdnsAdvertisement.ts +50 -0
- package/src/advertisement/mdns/index.ts +11 -0
- package/src/ble/Ble.ts +8 -5
- package/src/codec/BtpCodec.ts +4 -3
- package/src/common/Scanner.ts +1 -17
- package/src/common/SupportedTransportsBitmap.ts +25 -0
- package/src/common/index.ts +1 -1
- package/src/fabric/Fabric.ts +8 -0
- package/src/index.ts +1 -0
- package/src/mdns/{MdnsScanner.ts → MdnsClient.ts} +34 -103
- package/src/mdns/MdnsConsts.ts +27 -2
- package/src/mdns/MdnsServer.ts +79 -184
- package/src/mdns/MdnsService.ts +24 -27
- package/src/mdns/MdnsSocket.ts +179 -0
- package/src/mdns/index.ts +2 -3
- package/src/peer/ControllerCommissioner.ts +2 -2
- package/src/peer/ControllerDiscovery.ts +3 -3
- package/src/peer/PeerSet.ts +15 -9
- package/src/protocol/DeviceAdvertiser.ts +161 -151
- package/src/protocol/DeviceCommissioner.ts +65 -75
- package/src/protocol/ExchangeManager.ts +1 -1
- package/src/protocol/MessageExchange.ts +8 -14
- package/src/session/NodeSession.ts +4 -0
- package/src/session/Session.ts +6 -42
- package/src/session/SessionIntervals.ts +57 -0
- package/src/session/SessionManager.ts +9 -13
- package/src/session/pase/PaseMessages.ts +1 -1
- package/dist/cjs/common/InstanceBroadcaster.d.ts.map +0 -1
- package/dist/cjs/common/InstanceBroadcaster.js.map +0 -6
- package/dist/cjs/mdns/MdnsBroadcaster.d.ts +0 -34
- package/dist/cjs/mdns/MdnsBroadcaster.d.ts.map +0 -1
- package/dist/cjs/mdns/MdnsBroadcaster.js +0 -365
- package/dist/cjs/mdns/MdnsBroadcaster.js.map +0 -6
- package/dist/cjs/mdns/MdnsInstanceBroadcaster.d.ts +0 -28
- package/dist/cjs/mdns/MdnsInstanceBroadcaster.d.ts.map +0 -1
- package/dist/cjs/mdns/MdnsInstanceBroadcaster.js +0 -87
- package/dist/cjs/mdns/MdnsInstanceBroadcaster.js.map +0 -6
- package/dist/cjs/mdns/MdnsScanner.d.ts.map +0 -1
- package/dist/cjs/mdns/MdnsScanner.js.map +0 -6
- package/dist/esm/common/InstanceBroadcaster.d.ts.map +0 -1
- package/dist/esm/mdns/MdnsBroadcaster.d.ts +0 -34
- package/dist/esm/mdns/MdnsBroadcaster.d.ts.map +0 -1
- package/dist/esm/mdns/MdnsBroadcaster.js +0 -378
- package/dist/esm/mdns/MdnsBroadcaster.js.map +0 -6
- package/dist/esm/mdns/MdnsInstanceBroadcaster.d.ts +0 -28
- package/dist/esm/mdns/MdnsInstanceBroadcaster.d.ts.map +0 -1
- package/dist/esm/mdns/MdnsInstanceBroadcaster.js +0 -67
- package/dist/esm/mdns/MdnsInstanceBroadcaster.js.map +0 -6
- package/dist/esm/mdns/MdnsScanner.d.ts.map +0 -1
- package/dist/esm/mdns/MdnsScanner.js.map +0 -6
- package/src/mdns/MdnsBroadcaster.ts +0 -451
- package/src/mdns/MdnsInstanceBroadcaster.ts +0 -88
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { CommissioningMode } from "#advertisement/CommissioningMode.js";
|
|
8
|
+
import { ServiceDescription } from "#advertisement/ServiceDescription.js";
|
|
7
9
|
import { AdministratorCommissioning } from "#clusters/administrator-commissioning";
|
|
8
10
|
import { FailsafeContext } from "#common/FailsafeContext.js";
|
|
9
|
-
import { CommissioningMode } from "#common/InstanceBroadcaster.js";
|
|
10
11
|
import { FabricManager } from "#fabric/FabricManager.js";
|
|
11
12
|
import {
|
|
12
|
-
Diagnostic,
|
|
13
13
|
Environment,
|
|
14
14
|
Environmental,
|
|
15
15
|
InternalError,
|
|
@@ -18,11 +18,13 @@ import {
|
|
|
18
18
|
MatterFlowError,
|
|
19
19
|
MaybePromise,
|
|
20
20
|
ObserverGroup,
|
|
21
|
+
Time,
|
|
22
|
+
Timer,
|
|
21
23
|
} from "#general";
|
|
22
24
|
import { SecureChannelProtocol } from "#securechannel/SecureChannelProtocol.js";
|
|
23
25
|
import { PaseServer } from "#session/pase/PaseServer.js";
|
|
24
26
|
import { SessionManager } from "#session/SessionManager.js";
|
|
25
|
-
import { CommissioningOptions, StatusCode, StatusResponseError } from "#types";
|
|
27
|
+
import { CommissioningOptions, STANDARD_COMMISSIONING_TIMEOUT_S, StatusCode, StatusResponseError } from "#types";
|
|
26
28
|
import type { ControllerCommissioner } from "../peer/ControllerCommissioner.js";
|
|
27
29
|
import { DeviceAdvertiser } from "./DeviceAdvertiser.js";
|
|
28
30
|
|
|
@@ -59,52 +61,16 @@ export class DeviceCommissioner {
|
|
|
59
61
|
#activeDiscriminator?: number;
|
|
60
62
|
#activeCommissioningEndCallback?: () => MaybePromise;
|
|
61
63
|
#observers = new ObserverGroup(this);
|
|
64
|
+
#commissioningTimeout?: Timer;
|
|
62
65
|
|
|
63
66
|
constructor(context: DeviceCommissionerContext) {
|
|
64
67
|
this.#context = context;
|
|
65
68
|
|
|
66
|
-
this.#observers.on(this.#context.advertiser.timedOut, this.endCommissioning);
|
|
67
|
-
|
|
68
|
-
// If a commissioning window is open then we re-announce this because it was ended as fabric got added
|
|
69
|
-
this.#observers.on(this.#context.fabrics.events.deleted, async () => {
|
|
70
|
-
// If a commissioning window is open, or we removed the last fabric, then we re-announce this
|
|
71
|
-
// because it was ended as fabric got added
|
|
72
|
-
if (
|
|
73
|
-
this.#context.fabrics.length === 0 ||
|
|
74
|
-
this.#windowStatus !== AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen
|
|
75
|
-
) {
|
|
76
|
-
this.reactivateAdvertiser();
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
// No fabric paired yet, so announce as "ready for commissioning"
|
|
81
|
-
this.#observers.on(this.#context.advertiser.operationalModeEnded, this.allowBasicCommissioning);
|
|
82
|
-
|
|
83
69
|
// Cancel commissioning when there are too many PASE errors
|
|
84
70
|
this.#observers.on(this.#context.secureChannelProtocol.tooManyPaseErrors, async () => {
|
|
85
71
|
logger.info("Maximum number of PASE pairing errors reached, canceling commissioning");
|
|
86
72
|
await this.endCommissioning();
|
|
87
73
|
});
|
|
88
|
-
|
|
89
|
-
this.#observers.on(this.#context.sessions.sessions.deleted, session => {
|
|
90
|
-
const currentFabricIndex = session.fabric?.fabricIndex;
|
|
91
|
-
|
|
92
|
-
// Verify if the session associated fabric still exists
|
|
93
|
-
const existingSessionFabric =
|
|
94
|
-
currentFabricIndex === undefined
|
|
95
|
-
? undefined
|
|
96
|
-
: this.#context.fabrics.findByIndex(currentFabricIndex)?.fabricIndex;
|
|
97
|
-
|
|
98
|
-
// When a session closes, announce existing fabrics again so that controller can detect the device again.
|
|
99
|
-
// When session was closed and no fabric exist anymore then this is triggering a factory reset in upper
|
|
100
|
-
// layer and it would be not good to announce a commissionable device and then reset that again with the
|
|
101
|
-
// factory reset
|
|
102
|
-
if (this.#context.fabrics.length > 0 || session.isPase || !existingSessionFabric) {
|
|
103
|
-
this.#context.advertiser
|
|
104
|
-
.startAdvertising()
|
|
105
|
-
.catch(error => logger.warn(`Error while announcing`, error));
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
74
|
}
|
|
109
75
|
|
|
110
76
|
static [Environmental.create](env: Environment) {
|
|
@@ -131,12 +97,12 @@ export class DeviceCommissioner {
|
|
|
131
97
|
) {
|
|
132
98
|
if (this.#windowStatus === AdministratorCommissioning.CommissioningWindowStatus.BasicWindowOpen) {
|
|
133
99
|
throw new MatterFlowError(
|
|
134
|
-
"Basic commissioning window is already open! Cannot set
|
|
100
|
+
"Basic commissioning window is already open! Cannot set enhanced commissioning mode.",
|
|
135
101
|
);
|
|
136
102
|
}
|
|
137
103
|
|
|
138
104
|
this.#context.secureChannelProtocol.setPaseCommissioner(paseServer);
|
|
139
|
-
|
|
105
|
+
this.#becomeCommissionable(
|
|
140
106
|
AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen,
|
|
141
107
|
commissioningEndCallback,
|
|
142
108
|
discriminator,
|
|
@@ -146,7 +112,7 @@ export class DeviceCommissioner {
|
|
|
146
112
|
async allowBasicCommissioning(commissioningEndCallback?: () => MaybePromise) {
|
|
147
113
|
if (this.#windowStatus === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen) {
|
|
148
114
|
throw new MatterFlowError(
|
|
149
|
-
"Enhanced commissioning window is already open! Cannot set
|
|
115
|
+
"Enhanced commissioning window is already open! Cannot set basic commissioning mode.",
|
|
150
116
|
);
|
|
151
117
|
}
|
|
152
118
|
|
|
@@ -157,7 +123,7 @@ export class DeviceCommissioner {
|
|
|
157
123
|
}),
|
|
158
124
|
);
|
|
159
125
|
|
|
160
|
-
|
|
126
|
+
this.#becomeCommissionable(
|
|
161
127
|
AdministratorCommissioning.CommissioningWindowStatus.BasicWindowOpen,
|
|
162
128
|
commissioningEndCallback,
|
|
163
129
|
);
|
|
@@ -166,16 +132,6 @@ export class DeviceCommissioner {
|
|
|
166
132
|
beginTimed(failsafeContext: FailsafeContext) {
|
|
167
133
|
this.#failsafeContext = failsafeContext;
|
|
168
134
|
|
|
169
|
-
this.#context.fabrics.events.added.on(fabric => {
|
|
170
|
-
const fabrics = this.#context.fabrics.fabrics;
|
|
171
|
-
this.#context.advertiser
|
|
172
|
-
.advertiseFabrics(fabrics, true)
|
|
173
|
-
.catch(error =>
|
|
174
|
-
logger.warn(`Error sending Fabric announcement for Index ${fabric.fabricIndex}`, error),
|
|
175
|
-
);
|
|
176
|
-
logger.info("Announce done", Diagnostic.dict({ fabric: fabric.fabricId, fabricIndex: fabric.fabricIndex }));
|
|
177
|
-
});
|
|
178
|
-
|
|
179
135
|
failsafeContext.commissioned.on(async () => await this.endCommissioning());
|
|
180
136
|
|
|
181
137
|
failsafeContext.construction.change.on(status => {
|
|
@@ -197,55 +153,79 @@ export class DeviceCommissioner {
|
|
|
197
153
|
);
|
|
198
154
|
}
|
|
199
155
|
|
|
200
|
-
|
|
201
|
-
if (this.#windowStatus === AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
this.#enterCommissioningMode(this.#windowStatus, this.#activeDiscriminator).catch(error =>
|
|
205
|
-
logger.warn("Error sending announcement:", error),
|
|
206
|
-
);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
async #enterCommissioningMode(
|
|
156
|
+
#enterCommissioningMode(
|
|
210
157
|
windowStatus: AdministratorCommissioning.CommissioningWindowStatus,
|
|
211
158
|
discriminator?: number,
|
|
212
159
|
) {
|
|
160
|
+
this.#cancelTimeout();
|
|
161
|
+
|
|
213
162
|
this.#windowStatus = windowStatus;
|
|
214
163
|
const commissioningConfig = this.#context.commissioningConfig.values;
|
|
215
|
-
|
|
164
|
+
const advertisementWindowS = commissioningConfig.advertisementWindowS ?? STANDARD_COMMISSIONING_TIMEOUT_S;
|
|
165
|
+
|
|
166
|
+
const mode =
|
|
216
167
|
windowStatus === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen
|
|
217
168
|
? CommissioningMode.Enhanced
|
|
218
|
-
: CommissioningMode.Basic
|
|
219
|
-
|
|
169
|
+
: CommissioningMode.Basic;
|
|
170
|
+
|
|
171
|
+
this.#context.advertiser.enterCommissioningMode(
|
|
172
|
+
ServiceDescription.Commissionable({
|
|
220
173
|
...commissioningConfig.productDescription,
|
|
174
|
+
mode,
|
|
221
175
|
discriminator: discriminator ?? commissioningConfig.discriminator,
|
|
222
|
-
},
|
|
176
|
+
}),
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
this.#commissioningTimeout = Time.getTimer(
|
|
180
|
+
"Commissioning timeout",
|
|
181
|
+
advertisementWindowS,
|
|
182
|
+
this.endCommissioning.bind(this),
|
|
223
183
|
);
|
|
224
184
|
}
|
|
225
185
|
|
|
226
|
-
|
|
227
|
-
windowStatus:
|
|
186
|
+
#becomeCommissionable(
|
|
187
|
+
windowStatus:
|
|
188
|
+
| AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen
|
|
189
|
+
| AdministratorCommissioning.CommissioningWindowStatus.BasicWindowOpen,
|
|
228
190
|
activeCommissioningEndCallback?: () => MaybePromise,
|
|
229
191
|
discriminator?: number,
|
|
230
192
|
) {
|
|
193
|
+
if (this.#windowStatus !== AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {
|
|
194
|
+
if (this.#windowStatus !== windowStatus) {
|
|
195
|
+
throw new InternalError(
|
|
196
|
+
`Commissioning mode ${windowStatus} request but already in mode ${this.#windowStatus}`,
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
if (
|
|
201
|
+
this.#activeCommissioningEndCallback &&
|
|
202
|
+
this.#activeCommissioningEndCallback !== activeCommissioningEndCallback
|
|
203
|
+
) {
|
|
204
|
+
throw new InternalError(`Already in commissioning mode with a different callback`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
231
208
|
if (
|
|
232
209
|
this.#windowStatus === windowStatus &&
|
|
233
210
|
(discriminator === undefined || discriminator === this.#activeDiscriminator)
|
|
234
211
|
) {
|
|
235
|
-
|
|
236
|
-
return
|
|
212
|
+
this.#enterCommissioningMode(this.#windowStatus, this.#activeDiscriminator);
|
|
213
|
+
return;
|
|
237
214
|
}
|
|
215
|
+
|
|
238
216
|
if (this.#windowStatus !== AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {
|
|
239
217
|
throw new InternalError(`Commissioning window already open with different mode (${this.#windowStatus})!`);
|
|
240
218
|
}
|
|
219
|
+
|
|
241
220
|
if (this.#activeCommissioningEndCallback !== undefined) {
|
|
242
221
|
throw new InternalError("Commissioning window already open with different callback!");
|
|
243
222
|
}
|
|
223
|
+
|
|
244
224
|
this.#activeCommissioningEndCallback = activeCommissioningEndCallback;
|
|
245
225
|
this.#activeDiscriminator = discriminator;
|
|
246
226
|
|
|
247
227
|
// MDNS is sent in parallel
|
|
248
|
-
|
|
228
|
+
this.#enterCommissioningMode(windowStatus, discriminator);
|
|
249
229
|
}
|
|
250
230
|
|
|
251
231
|
async endCommissioning() {
|
|
@@ -253,7 +233,7 @@ export class DeviceCommissioner {
|
|
|
253
233
|
return;
|
|
254
234
|
}
|
|
255
235
|
|
|
256
|
-
|
|
236
|
+
this.#cancelTimeout();
|
|
257
237
|
|
|
258
238
|
this.#context.secureChannelProtocol.removePaseCommissioner();
|
|
259
239
|
|
|
@@ -267,10 +247,11 @@ export class DeviceCommissioner {
|
|
|
267
247
|
|
|
268
248
|
await this.#context.advertiser.exitCommissioningMode();
|
|
269
249
|
|
|
270
|
-
logger.
|
|
250
|
+
logger.debug("No longer commissioning");
|
|
271
251
|
}
|
|
272
252
|
|
|
273
253
|
async close() {
|
|
254
|
+
this.#cancelTimeout();
|
|
274
255
|
this.#observers.close();
|
|
275
256
|
await this.endCommissioning();
|
|
276
257
|
if (this.#failsafeContext) {
|
|
@@ -278,4 +259,13 @@ export class DeviceCommissioner {
|
|
|
278
259
|
this.#failsafeContext = undefined;
|
|
279
260
|
}
|
|
280
261
|
}
|
|
262
|
+
|
|
263
|
+
#cancelTimeout() {
|
|
264
|
+
if (!this.#commissioningTimeout) {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
this.#commissioningTimeout.stop();
|
|
269
|
+
this.#commissioningTimeout = undefined;
|
|
270
|
+
}
|
|
281
271
|
}
|
|
@@ -422,7 +422,7 @@ export class ExchangeManager {
|
|
|
422
422
|
return {
|
|
423
423
|
channel,
|
|
424
424
|
localSessionParameters: this.#sessionManager.sessionParameters,
|
|
425
|
-
|
|
425
|
+
retry: number => this.#sessionManager.retry.emit(channel.session, number),
|
|
426
426
|
};
|
|
427
427
|
}
|
|
428
428
|
|
|
@@ -26,12 +26,8 @@ import {
|
|
|
26
26
|
MRP,
|
|
27
27
|
} from "#protocol/MessageChannel.js";
|
|
28
28
|
import { GroupSession } from "#session/GroupSession.js";
|
|
29
|
-
import {
|
|
30
|
-
|
|
31
|
-
SESSION_ACTIVE_THRESHOLD_MS,
|
|
32
|
-
SESSION_IDLE_INTERVAL_MS,
|
|
33
|
-
SessionParameters,
|
|
34
|
-
} from "#session/Session.js";
|
|
29
|
+
import { SessionParameters } from "#session/Session.js";
|
|
30
|
+
import { SessionIntervals } from "#session/SessionIntervals.js";
|
|
35
31
|
import {
|
|
36
32
|
GroupId,
|
|
37
33
|
NodeId,
|
|
@@ -103,7 +99,7 @@ export const MATTER_MESSAGE_OVERHEAD = 26 + 12 + CRYPTO_AEAD_MIC_LENGTH_BYTES;
|
|
|
103
99
|
*/
|
|
104
100
|
export interface MessageExchangeContext {
|
|
105
101
|
channel: MessageChannel;
|
|
106
|
-
|
|
102
|
+
retry(number: number): void;
|
|
107
103
|
localSessionParameters: SessionParameters;
|
|
108
104
|
}
|
|
109
105
|
|
|
@@ -191,10 +187,10 @@ export class MessageExchange {
|
|
|
191
187
|
this.#exchangeId = exchangeId;
|
|
192
188
|
this.#protocolId = protocolId;
|
|
193
189
|
|
|
194
|
-
const { activeIntervalMs, idleIntervalMs, activeThresholdMs } = session.parameters;
|
|
195
|
-
this.#activeIntervalMs = activeIntervalMs
|
|
196
|
-
this.#idleIntervalMs = idleIntervalMs
|
|
197
|
-
this.#activeThresholdMs = activeThresholdMs
|
|
190
|
+
const { activeIntervalMs, idleIntervalMs, activeThresholdMs } = SessionIntervals(session.parameters);
|
|
191
|
+
this.#activeIntervalMs = activeIntervalMs;
|
|
192
|
+
this.#idleIntervalMs = idleIntervalMs;
|
|
193
|
+
this.#activeThresholdMs = activeThresholdMs;
|
|
198
194
|
|
|
199
195
|
this.#used = !isInitiator; // If we are the initiator then exchange was not used yet, so track it
|
|
200
196
|
|
|
@@ -534,9 +530,7 @@ export class MessageExchange {
|
|
|
534
530
|
|
|
535
531
|
this.session.notifyActivity(false);
|
|
536
532
|
|
|
537
|
-
|
|
538
|
-
this.context.resubmissionStarted();
|
|
539
|
-
}
|
|
533
|
+
this.context.retry(this.#retransmissionCounter);
|
|
540
534
|
const resubmissionBackoffTime = this.channel.getMrpResubmissionBackOffTime(this.#retransmissionCounter);
|
|
541
535
|
logger.debug(
|
|
542
536
|
`Resubmit message ${message.packetHeader.messageId} (retransmission attempt ${this.#retransmissionCounter}, backoff time ${resubmissionBackoffTime}ms))`,
|
|
@@ -300,6 +300,10 @@ export class NodeSession extends SecureSession {
|
|
|
300
300
|
return this.#peerNodeId;
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
+
get hasAssociatedFabric() {
|
|
304
|
+
return this.#fabric !== undefined;
|
|
305
|
+
}
|
|
306
|
+
|
|
303
307
|
get associatedFabric(): Fabric {
|
|
304
308
|
if (this.#fabric === undefined) {
|
|
305
309
|
throw new NoAssociatedFabricError(
|
package/src/session/Session.ts
CHANGED
|
@@ -4,30 +4,16 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { SupportedTransportsBitmap } from "#common/SupportedTransportsBitmap.js";
|
|
7
8
|
import { AsyncObservable, DataWriter, Endian, InternalError, Time } from "#general";
|
|
8
9
|
import { NodeId, TypeFromPartialBitSchema } from "#types";
|
|
9
10
|
import { DecodedMessage, DecodedPacket, Message, Packet, SessionType } from "../codec/MessageCodec.js";
|
|
10
|
-
import { SupportedTransportsBitmap } from "../common/Scanner.js";
|
|
11
11
|
import { Fabric } from "../fabric/Fabric.js";
|
|
12
12
|
import { MessageCounter } from "../protocol/MessageCounter.js";
|
|
13
13
|
import { MessageReceptionState } from "../protocol/MessageReceptionState.js";
|
|
14
|
+
import { SessionIntervals } from "./SessionIntervals.js";
|
|
14
15
|
import { type SessionManager } from "./SessionManager.js";
|
|
15
16
|
|
|
16
|
-
/**
|
|
17
|
-
* Minimum amount of time between sender retries when the destination node is Active. This SHALL be greater than or
|
|
18
|
-
* equal to the maximum amount of time a node may be non-responsive to incoming messages when Active.
|
|
19
|
-
*/
|
|
20
|
-
export const SESSION_ACTIVE_INTERVAL_MS = 300;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Minimum amount of time between sender retries when the destination node is Idle. This SHALL be greater than or equal
|
|
24
|
-
* to the maximum amount of time a node may be non-responsive to incoming messages when Idle.
|
|
25
|
-
*/
|
|
26
|
-
export const SESSION_IDLE_INTERVAL_MS = 500;
|
|
27
|
-
|
|
28
|
-
/** Minimum amount of time the node SHOULD stay active after network activity. */
|
|
29
|
-
export const SESSION_ACTIVE_THRESHOLD_MS = 4000;
|
|
30
|
-
|
|
31
17
|
/** Fallback value for Data Model Revision when not provided in Session parameters. We use Matter 1.2 as assumption. */
|
|
32
18
|
export const FALLBACK_DATAMODEL_REVISION = 17;
|
|
33
19
|
|
|
@@ -48,29 +34,7 @@ export const FALLBACK_MAX_PATHS_PER_INVOKE = 1;
|
|
|
48
34
|
|
|
49
35
|
export const FALLBACK_MAX_TCP_MESSAGE_SIZE = 64000;
|
|
50
36
|
|
|
51
|
-
export interface SessionParameters {
|
|
52
|
-
/**
|
|
53
|
-
* Minimum amount of time between sender retries when the destination node is Idle.
|
|
54
|
-
* This SHALL be greater than or equal to the maximum amount of time a node may be
|
|
55
|
-
* non-responsive to incoming messages when Idle.
|
|
56
|
-
* Default: 500ms
|
|
57
|
-
*/
|
|
58
|
-
idleIntervalMs: number;
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Minimum amount of time between sender retries when the destination node is Active.
|
|
62
|
-
* This SHALL be greater than or equal to the maximum amount of time a node may be
|
|
63
|
-
* non-responsive to incoming messages when Active.
|
|
64
|
-
* Default: 300ms
|
|
65
|
-
*/
|
|
66
|
-
activeIntervalMs: number;
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Minimum amount of time the node SHOULD stay active after network activity.
|
|
70
|
-
* Default: 4000ms
|
|
71
|
-
*/
|
|
72
|
-
activeThresholdMs: number;
|
|
73
|
-
|
|
37
|
+
export interface SessionParameters extends SessionIntervals {
|
|
74
38
|
/** Version of Data Model for the Session parameters side where it appears. */
|
|
75
39
|
dataModelRevision: number;
|
|
76
40
|
|
|
@@ -136,9 +100,9 @@ export abstract class Session {
|
|
|
136
100
|
messageCounter,
|
|
137
101
|
messageReceptionState,
|
|
138
102
|
sessionParameters: {
|
|
139
|
-
idleIntervalMs =
|
|
140
|
-
activeIntervalMs =
|
|
141
|
-
activeThresholdMs =
|
|
103
|
+
idleIntervalMs = SessionIntervals.defaults.idleIntervalMs,
|
|
104
|
+
activeIntervalMs = SessionIntervals.defaults.activeIntervalMs,
|
|
105
|
+
activeThresholdMs = SessionIntervals.defaults.activeThresholdMs,
|
|
142
106
|
dataModelRevision = FALLBACK_DATAMODEL_REVISION,
|
|
143
107
|
interactionModelRevision = FALLBACK_INTERACTIONMODEL_REVISION,
|
|
144
108
|
specificationVersion = FALLBACK_SPECIFICATION_VERSION,
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { ImplementationError } from "@matter/general";
|
|
8
|
+
|
|
9
|
+
export interface SessionIntervals {
|
|
10
|
+
/**
|
|
11
|
+
* Minimum amount of time between sender retries when the destination node is idle. This SHALL be greater than or
|
|
12
|
+
* equal to the maximum amount of time a node may be non-responsive to incoming messages when idle.
|
|
13
|
+
*
|
|
14
|
+
* Default: 500ms
|
|
15
|
+
*/
|
|
16
|
+
idleIntervalMs: number;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Minimum amount of time between sender retries when the destination node is active. This SHALL be greater than or
|
|
20
|
+
* equal to the maximum amount of time a node may be non-responsive to incoming messages when active.
|
|
21
|
+
*
|
|
22
|
+
* Default: 300ms
|
|
23
|
+
*/
|
|
24
|
+
activeIntervalMs: number;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Minimum amount of time the node SHOULD stay active after network activity.
|
|
28
|
+
*
|
|
29
|
+
* Default: 4000ms
|
|
30
|
+
*/
|
|
31
|
+
activeThresholdMs: number;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function SessionIntervals(intervals?: Partial<SessionIntervals>): SessionIntervals {
|
|
35
|
+
const reified = { ...SessionIntervals.defaults, ...intervals };
|
|
36
|
+
const { idleIntervalMs, activeIntervalMs, activeThresholdMs } = reified;
|
|
37
|
+
|
|
38
|
+
if (idleIntervalMs !== undefined && idleIntervalMs > 3600000) {
|
|
39
|
+
throw new ImplementationError("Session Idle Interval must be less than 1 hour");
|
|
40
|
+
}
|
|
41
|
+
if (activeIntervalMs !== undefined && activeIntervalMs > 3600000) {
|
|
42
|
+
throw new ImplementationError("Session Active Interval must be less than 1 hour");
|
|
43
|
+
}
|
|
44
|
+
if (activeThresholdMs !== undefined && activeThresholdMs > 65535) {
|
|
45
|
+
throw new ImplementationError("Session Active Threshold must be less than 65535 seconds");
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return reified;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export namespace SessionIntervals {
|
|
52
|
+
export const defaults = {
|
|
53
|
+
idleIntervalMs: 500,
|
|
54
|
+
activeIntervalMs: 300,
|
|
55
|
+
activeThresholdMs: 4000,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { DecodedPacket } from "#codec/MessageCodec.js";
|
|
8
|
+
import { SupportedTransportsSchema } from "#common/SupportedTransportsBitmap.js";
|
|
8
9
|
import { FabricManager } from "#fabric/FabricManager.js";
|
|
9
10
|
import {
|
|
10
11
|
BasicSet,
|
|
@@ -28,7 +29,6 @@ import { PeerAddress, PeerAddressMap } from "#peer/PeerAddress.js";
|
|
|
28
29
|
import { GroupSession } from "#session/GroupSession.js";
|
|
29
30
|
import { CaseAuthenticatedTag, DEFAULT_MAX_PATHS_PER_INVOKE, FabricId, FabricIndex, GroupId, NodeId } from "#types";
|
|
30
31
|
import { UnexpectedDataError } from "@matter/general";
|
|
31
|
-
import { SupportedTransportsSchema } from "../common/Scanner.js";
|
|
32
32
|
import { Fabric } from "../fabric/Fabric.js";
|
|
33
33
|
import { MessageCounter } from "../protocol/MessageCounter.js";
|
|
34
34
|
import { InsecureSession } from "./InsecureSession.js";
|
|
@@ -41,19 +41,15 @@ import {
|
|
|
41
41
|
FALLBACK_MAX_TCP_MESSAGE_SIZE,
|
|
42
42
|
FALLBACK_SPECIFICATION_VERSION,
|
|
43
43
|
Session,
|
|
44
|
-
SESSION_ACTIVE_INTERVAL_MS,
|
|
45
|
-
SESSION_ACTIVE_THRESHOLD_MS,
|
|
46
|
-
SESSION_IDLE_INTERVAL_MS,
|
|
47
44
|
SessionParameterOptions,
|
|
48
45
|
SessionParameters,
|
|
49
46
|
} from "./Session.js";
|
|
47
|
+
import { SessionIntervals } from "./SessionIntervals.js";
|
|
50
48
|
|
|
51
49
|
const logger = Logger.get("SessionManager");
|
|
52
50
|
|
|
53
51
|
const DEFAULT_SESSION_PARAMETERS = {
|
|
54
|
-
|
|
55
|
-
activeIntervalMs: SESSION_ACTIVE_INTERVAL_MS,
|
|
56
|
-
activeThresholdMs: SESSION_ACTIVE_THRESHOLD_MS,
|
|
52
|
+
...SessionIntervals.defaults,
|
|
57
53
|
dataModelRevision: Specification.DATA_MODEL_REVISION,
|
|
58
54
|
interactionModelRevision: Specification.INTERACTION_MODEL_REVISION,
|
|
59
55
|
specificationVersion: Specification.SPECIFICATION_VERSION,
|
|
@@ -126,7 +122,7 @@ export class SessionManager {
|
|
|
126
122
|
readonly #globalUnencryptedMessageCounter;
|
|
127
123
|
readonly #subscriptionsChanged = Observable<[session: NodeSession, subscription: Subscription]>();
|
|
128
124
|
#sessionParameters: SessionParameters;
|
|
129
|
-
readonly #
|
|
125
|
+
readonly #retry = Observable<[session: Session, number: number]>();
|
|
130
126
|
readonly #construction: Construction<SessionManager>;
|
|
131
127
|
readonly #observers = new ObserverGroup();
|
|
132
128
|
readonly #subscriptionUpdateMutex = new Mutex(this);
|
|
@@ -215,8 +211,8 @@ export class SessionManager {
|
|
|
215
211
|
/**
|
|
216
212
|
* Emits when resubmission is necessary due to timeout or network error.
|
|
217
213
|
*/
|
|
218
|
-
get
|
|
219
|
-
return this.#
|
|
214
|
+
get retry() {
|
|
215
|
+
return this.#retry;
|
|
220
216
|
}
|
|
221
217
|
|
|
222
218
|
/**
|
|
@@ -612,9 +608,9 @@ export class SessionManager {
|
|
|
612
608
|
peerNodeId,
|
|
613
609
|
sessionParameters: {
|
|
614
610
|
// Make sure to initialize default values when restoring an older resumption record
|
|
615
|
-
idleIntervalMs: idleIntervalMs ??
|
|
616
|
-
activeIntervalMs: activeIntervalMs ??
|
|
617
|
-
activeThresholdMs: activeThresholdMs ??
|
|
611
|
+
idleIntervalMs: idleIntervalMs ?? SessionIntervals.defaults.idleIntervalMs,
|
|
612
|
+
activeIntervalMs: activeIntervalMs ?? SessionIntervals.defaults.activeIntervalMs,
|
|
613
|
+
activeThresholdMs: activeThresholdMs ?? SessionIntervals.defaults.activeThresholdMs,
|
|
618
614
|
dataModelRevision: dataModelRevision ?? FALLBACK_DATAMODEL_REVISION,
|
|
619
615
|
interactionModelRevision: interactionModelRevision ?? FALLBACK_INTERACTIONMODEL_REVISION,
|
|
620
616
|
specificationVersion: specificationVersion ?? FALLBACK_SPECIFICATION_VERSION,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { SupportedTransportsBitmap } from "#common/
|
|
7
|
+
import { SupportedTransportsBitmap } from "#common/SupportedTransportsBitmap.js";
|
|
8
8
|
import { CRYPTO_HASH_LEN_BYTES, CRYPTO_PUBLIC_KEY_SIZE_BYTES } from "#general";
|
|
9
9
|
import {
|
|
10
10
|
TlvBitmap,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InstanceBroadcaster.d.ts","sourceRoot":"","sources":["../../../src/common/InstanceBroadcaster.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/common/InstanceBroadcaster.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,mBAA8F;AAN9F;AAAA;AAAA;AAAA;AAAA;AASO,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,EAK7B,gBAAY,sBAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrB,2BAAuB,sBAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMhC,mBAAe,sBAAQ,CAAC;AAAA;AAAA;AAAA;AAAA,EAKxB,wBAAoB,sBAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7B,uBAAmB,sBAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO5B,kBAAc,sBAAQ,CAAC;AAAA;AAAA;AAAA;AAAA,EAKvB,sBAAkB,sBAAQ,CAAC;AAAA;AAAA;AAAA;AAAA,EAK3B,4CAAwC,sBAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjD,uCAAmC,sBAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5C,sCAAkC,sBAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAM3C,8DAA0D,sBAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpE,4DAAwD,sBAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMlE,mCAA+B,sBAAQ,EAAE;AAAA;AAAA;AAAA;AAAA,EAKzC,sBAAkB,sBAAQ,EAAE;AAAA;AAAA;AAAA;AAAA,EAK5B,4CAAwC,sBAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMlD,wCAAoC,sBAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9C,sCAAkC,sBAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5C,8DAA0D,sBAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpE,4DAAwD,sBAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMlE,mCAA+B,sBAAQ,EAAE;AAC7C;AAEO,MAAM,8BAA0B,2BAAa,iBAAiB;AAwD9D,IAAK,oBAAL,kBAAKA,uBAAL;AACH,EAAAA,sCAAA,sBAAmB,KAAnB;AACA,EAAAA,sCAAA,WAAQ,KAAR;AACA,EAAAA,sCAAA,cAAW,KAAX;AAHQ,SAAAA;AAAA,GAAA;",
|
|
5
|
-
"names": ["CommissioningMode"]
|
|
6
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { Crypto, Network } from "#general";
|
|
7
|
-
import { CommissionerInstanceData, CommissioningModeInstanceData, OperationalInstanceData } from "../common/InstanceBroadcaster.js";
|
|
8
|
-
import { Fabric } from "../fabric/Fabric.js";
|
|
9
|
-
import { MdnsInstanceBroadcaster } from "./MdnsInstanceBroadcaster.js";
|
|
10
|
-
import { MdnsServer } from "./MdnsServer.js";
|
|
11
|
-
/**
|
|
12
|
-
* This class is handing MDNS Announcements for multiple instances/devices
|
|
13
|
-
*/
|
|
14
|
-
export declare class MdnsBroadcaster {
|
|
15
|
-
#private;
|
|
16
|
-
static create(crypto: Crypto, network: Network, options?: {
|
|
17
|
-
enableIpv4?: boolean;
|
|
18
|
-
multicastInterface?: string;
|
|
19
|
-
}): Promise<MdnsBroadcaster>;
|
|
20
|
-
constructor(crypto: Crypto, network: Network, mdnsServer: MdnsServer, enableIpv4?: boolean);
|
|
21
|
-
createInstanceBroadcaster(port: number): MdnsInstanceBroadcaster;
|
|
22
|
-
/** Set the Broadcaster data to announce a device ready for commissioning in a special mode */
|
|
23
|
-
setCommissionMode(announcedNetPort: number, mode: number, commissioningModeData: CommissioningModeInstanceData): Promise<void>;
|
|
24
|
-
/** Set the Broadcaster Data to announce a device for operative discovery (aka "already paired") */
|
|
25
|
-
setFabrics(announcedNetPort: number, fabrics: Fabric[], { sessionIdleInterval, sessionActiveInterval, sessionActiveThreshold, }?: OperationalInstanceData): Promise<void>;
|
|
26
|
-
/** Set the Broadcaster data to announce a Commissioner (aka Commissioner discovery) */
|
|
27
|
-
setCommissionerInfo(announcedNetPort: number, { deviceName, deviceType, vendorId, productId, sessionIdleInterval, sessionActiveInterval, sessionActiveThreshold, }: CommissionerInstanceData): Promise<void>;
|
|
28
|
-
announce(announcementPort: number): Promise<void>;
|
|
29
|
-
expireFabricAnnouncement(announcedNetPort: number): Promise<void>;
|
|
30
|
-
expireCommissioningAnnouncement(announcedNetPort: number): Promise<void>;
|
|
31
|
-
expireAllAnnouncements(announcedNetPort: number): Promise<void>;
|
|
32
|
-
close(): Promise<void>;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=MdnsBroadcaster.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MdnsBroadcaster.d.ts","sourceRoot":"","sources":["../../../src/mdns/MdnsBroadcaster.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKH,MAAM,EAMN,OAAO,EAMV,MAAM,UAAU,CAAC;AAElB,OAAO,EACH,wBAAwB,EACxB,6BAA6B,EAC7B,uBAAuB,EAG1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAoB7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAoB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAW/D;;GAEG;AACH,qBAAa,eAAe;;WASX,MAAM,CACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE;gBAWvD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO;IAO1F,yBAAyB,CAAC,IAAI,EAAE,MAAM;IA+DtC,8FAA8F;IACxF,iBAAiB,CACnB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,qBAAqB,EAAE,6BAA6B;IA0FxD,mGAAmG;IAC7F,UAAU,CACZ,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,EAAE,EACjB,EACI,mBAA8C,EAC9C,qBAAkD,EAClD,sBAAoD,GACvD,GAAE,uBAA4B;IAsFnC,uFAAuF;IACjF,mBAAmB,CACrB,gBAAgB,EAAE,MAAM,EACxB,EACI,UAAU,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACT,mBAA8C,EAC9C,qBAAkD,EAClD,sBAAoD,GACvD,EAAE,wBAAwB;IAoDzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IAIjC,wBAAwB,CAAC,gBAAgB,EAAE,MAAM;IAOjD,+BAA+B,CAAC,gBAAgB,EAAE,MAAM;IAOxD,sBAAsB,CAAC,gBAAgB,EAAE,MAAM;IAW/C,KAAK;CAUd"}
|