@matter/protocol 0.16.0-alpha.0-20250809-ee8375bcb → 0.16.0-alpha.0-20250812-285b75d83
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/ble/BleConsts.d.ts +2 -1
- package/dist/cjs/ble/BleConsts.d.ts.map +1 -1
- package/dist/cjs/ble/BleConsts.js +3 -1
- package/dist/cjs/ble/BleConsts.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 +53 -150
- 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/protocol/ProtocolHandler.d.ts +4 -0
- package/dist/cjs/protocol/ProtocolHandler.d.ts.map +1 -1
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts +8 -4
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts.map +1 -1
- package/dist/cjs/protocol/ProtocolStatusMessage.js +23 -8
- package/dist/cjs/protocol/ProtocolStatusMessage.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.js +2 -2
- package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.js +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.d.ts +3 -3
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.js +3 -3
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.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/ble/BleConsts.d.ts +2 -1
- package/dist/esm/ble/BleConsts.d.ts.map +1 -1
- package/dist/esm/ble/BleConsts.js +3 -1
- package/dist/esm/ble/BleConsts.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 +55 -155
- 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/protocol/ProtocolHandler.d.ts +4 -0
- package/dist/esm/protocol/ProtocolHandler.d.ts.map +1 -1
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts +8 -4
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts.map +1 -1
- package/dist/esm/protocol/ProtocolStatusMessage.js +24 -9
- package/dist/esm/protocol/ProtocolStatusMessage.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.js +3 -3
- package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelProtocol.js +2 -2
- package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.d.ts +3 -3
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.js +3 -3
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.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 +6 -6
- 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/ble/BleConsts.ts +2 -1
- 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 +76 -198
- 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/protocol/ProtocolHandler.ts +7 -0
- package/src/protocol/ProtocolStatusMessage.ts +26 -10
- package/src/securechannel/SecureChannelMessenger.ts +3 -3
- package/src/securechannel/SecureChannelProtocol.ts +2 -2
- package/src/securechannel/SecureChannelStatusMessageSchema.ts +3 -3
- 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
package/src/mdns/index.ts
CHANGED
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
export * from "./
|
|
7
|
+
export * from "./MdnsClient.js";
|
|
8
8
|
export * from "./MdnsConsts.js";
|
|
9
|
-
export * from "./MdnsInstanceBroadcaster.js";
|
|
10
|
-
export * from "./MdnsScanner.js";
|
|
11
9
|
export * from "./MdnsServer.js";
|
|
12
10
|
export * from "./MdnsService.js";
|
|
11
|
+
export * from "./MdnsSocket.js";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
serverAddressToString,
|
|
24
24
|
} from "#general";
|
|
25
25
|
import { InteractionClient, InteractionClientProvider } from "#interaction/InteractionClient.js";
|
|
26
|
-
import {
|
|
26
|
+
import { MdnsClient } from "#mdns/MdnsClient.js";
|
|
27
27
|
import {
|
|
28
28
|
CommissioningError,
|
|
29
29
|
ControllerCommissioningFlow,
|
|
@@ -306,7 +306,7 @@ export class ControllerCommissioner {
|
|
|
306
306
|
): Promise<MessageChannel> {
|
|
307
307
|
let paseChannel: Channel<Uint8Array>;
|
|
308
308
|
if (device !== undefined) {
|
|
309
|
-
logger.info(`Establish PASE to device`,
|
|
309
|
+
logger.info(`Establish PASE to device`, MdnsClient.discoveryDataDiagnostics(device));
|
|
310
310
|
}
|
|
311
311
|
if (address.type === "udp") {
|
|
312
312
|
const { ip } = address;
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
Scanner,
|
|
17
17
|
} from "../common/Scanner.js";
|
|
18
18
|
import { Fabric } from "../fabric/Fabric.js";
|
|
19
|
-
import {
|
|
19
|
+
import { MdnsClient } from "../mdns/MdnsClient.js";
|
|
20
20
|
import { RetransmissionLimitReachedError } from "../protocol/MessageExchange.js";
|
|
21
21
|
|
|
22
22
|
const logger = Logger.get("ControllerDiscovery");
|
|
@@ -117,7 +117,7 @@ export class ControllerDiscovery {
|
|
|
117
117
|
static async discoverOperationalDevice(
|
|
118
118
|
fabric: Fabric,
|
|
119
119
|
peerNodeId: NodeId,
|
|
120
|
-
scanner:
|
|
120
|
+
scanner: MdnsClient,
|
|
121
121
|
timeoutSeconds?: number,
|
|
122
122
|
ignoreExistingRecords?: boolean,
|
|
123
123
|
): Promise<OperationalDevice> {
|
|
@@ -135,7 +135,7 @@ export class ControllerDiscovery {
|
|
|
135
135
|
return foundDevice;
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
static cancelOperationalDeviceDiscovery(fabric: Fabric, peerNodeId: NodeId, scanner:
|
|
138
|
+
static cancelOperationalDeviceDiscovery(fabric: Fabric, peerNodeId: NodeId, scanner: MdnsClient) {
|
|
139
139
|
scanner.cancelOperationalDeviceDiscovery(fabric, peerNodeId);
|
|
140
140
|
}
|
|
141
141
|
|
package/src/peer/PeerSet.ts
CHANGED
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
Timer,
|
|
31
31
|
} from "#general";
|
|
32
32
|
import { SubscriptionClient } from "#interaction/SubscriptionClient.js";
|
|
33
|
-
import {
|
|
33
|
+
import { MdnsClient } from "#mdns/MdnsClient.js";
|
|
34
34
|
import { PeerAddress, PeerAddressMap } from "#peer/PeerAddress.js";
|
|
35
35
|
import { ChannelManager } from "#protocol/ChannelManager.js";
|
|
36
36
|
import { ExchangeManager } from "#protocol/ExchangeManager.js";
|
|
@@ -86,7 +86,7 @@ interface RunningDiscovery {
|
|
|
86
86
|
type: NodeDiscoveryType;
|
|
87
87
|
promises?: (() => Promise<MessageChannel>)[];
|
|
88
88
|
stopTimerFunc?: (() => void) | undefined;
|
|
89
|
-
|
|
89
|
+
mdnsClient?: MdnsClient;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
/**
|
|
@@ -147,7 +147,13 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
|
|
|
147
147
|
this.#peersByAddress.delete(peer.address);
|
|
148
148
|
});
|
|
149
149
|
|
|
150
|
-
this.#sessions.
|
|
150
|
+
this.#sessions.retry.on((session, count) => {
|
|
151
|
+
if (count !== 1) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
this.#handleFirstRetry(session);
|
|
156
|
+
});
|
|
151
157
|
|
|
152
158
|
/** A channel was added by ourselves */
|
|
153
159
|
this.#channels.added.on((address, msgChannel) => {
|
|
@@ -375,7 +381,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
|
|
|
375
381
|
}
|
|
376
382
|
|
|
377
383
|
async close() {
|
|
378
|
-
for (const [address, { stopTimerFunc, mdnsScanner }] of this.#runningPeerDiscoveries.entries()) {
|
|
384
|
+
for (const [address, { stopTimerFunc, mdnsClient: mdnsScanner }] of this.#runningPeerDiscoveries.entries()) {
|
|
379
385
|
stopTimerFunc?.();
|
|
380
386
|
|
|
381
387
|
// This ends discovery without triggering promises
|
|
@@ -442,7 +448,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
|
|
|
442
448
|
throw new ImplementationError("Cannot set retransmission discovery type.");
|
|
443
449
|
}
|
|
444
450
|
|
|
445
|
-
const mdnsScanner = this.#scanners.scannerFor(ChannelType.UDP) as
|
|
451
|
+
const mdnsScanner = this.#scanners.scannerFor(ChannelType.UDP) as MdnsClient | undefined;
|
|
446
452
|
if (!mdnsScanner) {
|
|
447
453
|
throw new ImplementationError("Cannot discover device without mDNS scanner.");
|
|
448
454
|
}
|
|
@@ -593,7 +599,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
|
|
|
593
599
|
type: requestedDiscoveryType,
|
|
594
600
|
promises: discoveryPromises,
|
|
595
601
|
stopTimerFunc,
|
|
596
|
-
mdnsScanner,
|
|
602
|
+
mdnsClient: mdnsScanner,
|
|
597
603
|
});
|
|
598
604
|
|
|
599
605
|
return await anyPromise(discoveryPromises).finally(() => {
|
|
@@ -765,7 +771,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
|
|
|
765
771
|
return lastKnownAddress;
|
|
766
772
|
}
|
|
767
773
|
|
|
768
|
-
const mdnsScanner = this.#scanners.scannerFor(ChannelType.UDP) as
|
|
774
|
+
const mdnsScanner = this.#scanners.scannerFor(ChannelType.UDP) as MdnsClient | undefined;
|
|
769
775
|
const discoveredAddresses = mdnsScanner?.getDiscoveredOperationalDevice(
|
|
770
776
|
this.#sessions.fabricFor(address),
|
|
771
777
|
address.nodeId,
|
|
@@ -810,7 +816,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
|
|
|
810
816
|
if (this.#runningPeerDiscoveries.has(address)) {
|
|
811
817
|
logger.info(`Found ${address} during discovery, cancel discovery.`);
|
|
812
818
|
// We are currently discovering this node, so we need to update the discovery data
|
|
813
|
-
const { mdnsScanner } = this.#runningPeerDiscoveries.get(address) ?? {};
|
|
819
|
+
const { mdnsClient: mdnsScanner } = this.#runningPeerDiscoveries.get(address) ?? {};
|
|
814
820
|
|
|
815
821
|
// This ends discovery and triggers the promises
|
|
816
822
|
mdnsScanner?.cancelOperationalDeviceDiscovery(this.#sessions.fabricFor(address), address.nodeId, true);
|
|
@@ -821,7 +827,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
|
|
|
821
827
|
return this.#peersByAddress.get(address)?.operationalAddress;
|
|
822
828
|
}
|
|
823
829
|
|
|
824
|
-
#
|
|
830
|
+
#handleFirstRetry(session: Session) {
|
|
825
831
|
if (!session.isSecure || (session as SecureSession).fabric === undefined) {
|
|
826
832
|
// For insecure sessions from CASE/PASE or not yet fabric bound session establishments we do not need to do anything
|
|
827
833
|
return;
|
|
@@ -4,25 +4,14 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { Advertisement } from "#advertisement/Advertisement.js";
|
|
8
|
+
import { Advertiser } from "#advertisement/Advertiser.js";
|
|
9
|
+
import { ServiceDescription } from "#advertisement/ServiceDescription.js";
|
|
8
10
|
import { Fabric } from "#fabric/Fabric.js";
|
|
9
11
|
import { FabricManager } from "#fabric/FabricManager.js";
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
Diagnostic,
|
|
13
|
-
Environment,
|
|
14
|
-
Environmental,
|
|
15
|
-
Logger,
|
|
16
|
-
MatterAggregateError,
|
|
17
|
-
Mutex,
|
|
18
|
-
ObserverGroup,
|
|
19
|
-
Time,
|
|
20
|
-
Timer,
|
|
21
|
-
} from "#general";
|
|
12
|
+
import { Environment, Environmental, MatterAggregateError, ObserverGroup } from "#general";
|
|
13
|
+
import { SecureSession } from "#session/SecureSession.js";
|
|
22
14
|
import { SessionManager } from "#session/SessionManager.js";
|
|
23
|
-
import { DEVICE_ANNOUNCEMENT_DURATION_MS, DEVICE_ANNOUNCEMENT_INTERVAL_MS } from "#types";
|
|
24
|
-
|
|
25
|
-
const logger = Logger.get("DeviceAdvertiser");
|
|
26
15
|
|
|
27
16
|
/**
|
|
28
17
|
* Interfaces the {@link DeviceAdvertiser} with other components.
|
|
@@ -36,51 +25,81 @@ export interface DeviceAdvertiserContext {
|
|
|
36
25
|
* Advertises a node for commissioning (if uncommissioned) or operationally (if commissioned).
|
|
37
26
|
*/
|
|
38
27
|
export class DeviceAdvertiser {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
readonly #operationalModeEnded = new AsyncObservable<[]>();
|
|
44
|
-
readonly #observers = new ObserverGroup();
|
|
45
|
-
#interval: Timer;
|
|
46
|
-
#startTime: number | null = null;
|
|
28
|
+
#context: DeviceAdvertiserContext;
|
|
29
|
+
#advertisers = new Set<Advertiser>();
|
|
30
|
+
#observers = new ObserverGroup();
|
|
31
|
+
#isOperational = false;
|
|
47
32
|
#isClosing = false;
|
|
48
|
-
#
|
|
49
|
-
|
|
50
|
-
// Currently we do not put much effort into synchronizing announcements as it probably isn't really necessary. But
|
|
51
|
-
// this mutex prevents automated announcements from piling up and allows us to ensure announcements are complete on
|
|
52
|
-
// close
|
|
53
|
-
#mutex = new Mutex(this);
|
|
33
|
+
#commissioningService?: ServiceDescription;
|
|
54
34
|
|
|
55
35
|
constructor(context: DeviceAdvertiserContext) {
|
|
56
36
|
this.#context = context;
|
|
37
|
+
const { fabrics, sessions } = this.#context;
|
|
57
38
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
39
|
+
// When a fabric is added, begin advertising automatically if in operational mode
|
|
40
|
+
this.#observers.on(fabrics.events.added, fabric => {
|
|
41
|
+
if (!this.#isOperational) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
this.#advertiseFabric(fabric, "startup");
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// When a fabric is deleted, cancel any active advertisement
|
|
49
|
+
this.#observers.on(fabrics.events.deleted, fabric => {
|
|
50
|
+
Advertisement.cancelAll(this.#advertisements(ad => ad.isOperational() && ad.description.fabric === fabric));
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// When an operational session is established, notify relevant advertisers so they can stop advertising if so
|
|
54
|
+
// configured
|
|
55
|
+
this.#observers.on(sessions.sessions.added, session => {
|
|
56
|
+
const fabricIndex = session.fabric?.fabricIndex;
|
|
57
|
+
const fabric = fabricIndex ? fabrics.findByIndex(fabricIndex) : undefined;
|
|
58
|
+
if (!fabric) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
63
61
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
// At least one fabric is still present, so re-announce
|
|
70
|
-
this.#mutex.run(() => this.advertise(true));
|
|
62
|
+
for (const advertiser of this.#advertisers) {
|
|
63
|
+
const ad = advertiser.advertisementForFabric(fabric);
|
|
64
|
+
if (ad) {
|
|
65
|
+
ad.serviceConnected();
|
|
66
|
+
}
|
|
71
67
|
}
|
|
72
68
|
});
|
|
73
69
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
70
|
+
// When a session is closed, conditionally resume broadcast
|
|
71
|
+
this.#observers.on(sessions.sessions.deleted, session => {
|
|
72
|
+
const fabricIndex = session.fabric?.fabricIndex;
|
|
73
|
+
const fabric = fabricIndex ? fabrics.findByIndex(fabricIndex) : undefined;
|
|
74
|
+
|
|
75
|
+
// If this was an operational connection, readvertise if we're no longer connected to the peer
|
|
76
|
+
if (fabric) {
|
|
77
|
+
if (fabric.hasSessionForPeer(session.peerNodeId)) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
for (const advertiser of this.#advertisers) {
|
|
82
|
+
const ad = advertiser.advertisementForFabric(fabric);
|
|
83
|
+
if (ad) {
|
|
84
|
+
ad.serviceDisconnected();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// If we're in commissioning mode, resume advertising for commissioning
|
|
92
|
+
this.#startCommissioningAdvertisement();
|
|
77
93
|
});
|
|
78
94
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
95
|
+
// Trigger retransmission broadcast on retry
|
|
96
|
+
this.#observers.on(sessions.retry, session => {
|
|
97
|
+
if (!session.isSecure || !(session as SecureSession).fabric) {
|
|
98
|
+
return;
|
|
83
99
|
}
|
|
100
|
+
|
|
101
|
+
// Each time we retry a transmission, also trigger retry broadcast for associated fabric
|
|
102
|
+
this.#advertiseFabric(session.associatedFabric, "retransmit");
|
|
84
103
|
});
|
|
85
104
|
}
|
|
86
105
|
|
|
@@ -98,146 +117,137 @@ export class DeviceAdvertiser {
|
|
|
98
117
|
}
|
|
99
118
|
|
|
100
119
|
/**
|
|
101
|
-
*
|
|
120
|
+
* Advertise the device as commissionable.
|
|
102
121
|
*/
|
|
103
|
-
|
|
104
|
-
|
|
122
|
+
enterCommissioningMode(description: ServiceDescription.Commissionable) {
|
|
123
|
+
this.#commissioningService = description;
|
|
124
|
+
this.#startCommissioningAdvertisement();
|
|
105
125
|
}
|
|
106
126
|
|
|
107
127
|
/**
|
|
108
|
-
*
|
|
128
|
+
* Begin automatic broadcast for commissioning if in commissionable mode.
|
|
109
129
|
*/
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
130
|
+
#startCommissioningAdvertisement() {
|
|
131
|
+
if (this.#isClosing) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
113
134
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
get operationalModeEnabled() {
|
|
118
|
-
return this.#operationalModeEnabled;
|
|
119
|
-
}
|
|
135
|
+
if (this.#commissioningService === undefined) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
120
138
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
for (const broadcaster of this.#broadcasters) {
|
|
124
|
-
await broadcaster.setCommissionMode(mode, deviceData);
|
|
139
|
+
for (const advertiser of this.#advertisers) {
|
|
140
|
+
advertiser.advertise(this.#commissioningService, "startup");
|
|
125
141
|
}
|
|
126
|
-
await this.startAdvertising();
|
|
127
142
|
}
|
|
128
143
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
144
|
+
/**
|
|
145
|
+
* Cease advertising the device as commissionable.
|
|
146
|
+
*/
|
|
147
|
+
exitCommissioningMode() {
|
|
148
|
+
if (!this.#commissioningService) {
|
|
149
|
+
return;
|
|
135
150
|
}
|
|
151
|
+
|
|
152
|
+
this.#commissioningService = undefined;
|
|
153
|
+
return Advertisement.closeAll(this.#advertisements(ad => ad.isCommissioning()));
|
|
136
154
|
}
|
|
137
155
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
156
|
+
/**
|
|
157
|
+
* Advertise the device as operational.
|
|
158
|
+
*/
|
|
159
|
+
enterOperationalMode() {
|
|
160
|
+
if (this.#isOperational) {
|
|
161
|
+
return;
|
|
142
162
|
}
|
|
143
|
-
this.#startTime = Time.nowMs();
|
|
144
|
-
this.#interval.start();
|
|
145
|
-
await this.advertise();
|
|
146
|
-
}
|
|
147
163
|
|
|
148
|
-
|
|
149
|
-
if (!once) {
|
|
150
|
-
// Stop announcement if duration is reached
|
|
151
|
-
if (this.#startTime !== null && Time.nowMs() - this.#startTime > DEVICE_ANNOUNCEMENT_DURATION_MS) {
|
|
152
|
-
logger.debug("Announcement duration reached, stop announcing");
|
|
153
|
-
await this.#timedOut.emit();
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
164
|
+
this.#isOperational = true;
|
|
156
165
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
166
|
+
this.#startOperationalAdvertisement();
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Begin automatic broadcast for fabrics if in operational mode.
|
|
171
|
+
*/
|
|
172
|
+
#startOperationalAdvertisement() {
|
|
173
|
+
if (!this.#isOperational) {
|
|
174
|
+
return;
|
|
164
175
|
}
|
|
165
176
|
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
"Announcing",
|
|
176
|
-
Diagnostic.dict({ fabricIndex: fabric.fabricIndex, fabricId: fabric.fabricId }),
|
|
177
|
-
);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
for (const broadcaster of this.#broadcasters) {
|
|
181
|
-
await broadcaster.setFabrics(fabrics.fabrics);
|
|
182
|
-
if (fabricsWithoutSessions > 0 || this.#commissioningMode !== CommissioningMode.NotCommissioning) {
|
|
183
|
-
await broadcaster.announce();
|
|
184
|
-
}
|
|
177
|
+
const fabricsAdvertised = new Set(
|
|
178
|
+
this.#advertisements(ad => ad.isOperational()).map(
|
|
179
|
+
ad => (ad as Advertisement<ServiceDescription.Operational>).description.fabric,
|
|
180
|
+
),
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
for (const fabric of this.#context.fabrics) {
|
|
184
|
+
if (!fabricsAdvertised.has(fabric)) {
|
|
185
|
+
this.#advertiseFabric(fabric, "startup");
|
|
185
186
|
}
|
|
186
|
-
} else {
|
|
187
|
-
// Expire operational Fabric announcements (if fabric got just deleted)
|
|
188
|
-
await this.#exitOperationalMode();
|
|
189
|
-
await this.#operationalModeEnded.emit();
|
|
190
187
|
}
|
|
191
188
|
}
|
|
192
189
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
for (const broadcaster of this.#broadcasters) {
|
|
201
|
-
await broadcaster.setFabrics(fabrics, expireCommissioningAnnouncement);
|
|
202
|
-
await broadcaster.announce();
|
|
190
|
+
/**
|
|
191
|
+
* Cease advertising the device as operational.
|
|
192
|
+
*/
|
|
193
|
+
exitOperationalMode() {
|
|
194
|
+
if (!this.#isOperational) {
|
|
195
|
+
return;
|
|
203
196
|
}
|
|
197
|
+
|
|
198
|
+
this.#isOperational = false;
|
|
199
|
+
|
|
200
|
+
Advertisement.cancelAll(this.#advertisements(ad => ad.isOperational()));
|
|
204
201
|
}
|
|
205
202
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
203
|
+
/**
|
|
204
|
+
* Reset automatic advertisement.
|
|
205
|
+
*
|
|
206
|
+
* This is useful when there is a network change.
|
|
207
|
+
*/
|
|
208
|
+
restartAdvertisement() {
|
|
209
|
+
this.#startCommissioningAdvertisement();
|
|
210
|
+
this.#startOperationalAdvertisement();
|
|
210
211
|
}
|
|
211
212
|
|
|
212
213
|
async close() {
|
|
213
214
|
this.#isClosing = true;
|
|
214
|
-
await this.#mutex;
|
|
215
215
|
this.#observers.close();
|
|
216
|
-
this
|
|
217
|
-
|
|
216
|
+
await this.clearAdvertisers();
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
hasAdvertiser(advertiser: Advertiser) {
|
|
220
|
+
return this.#advertisers.has(advertiser);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
addAdvertiser(advertiser: Advertiser) {
|
|
224
|
+
this.#advertisers.add(advertiser);
|
|
218
225
|
}
|
|
219
226
|
|
|
220
|
-
|
|
221
|
-
|
|
227
|
+
async deleteAdvertiser(advertiser: Advertiser) {
|
|
228
|
+
this.#advertisers.delete(advertiser);
|
|
229
|
+
await advertiser.close();
|
|
222
230
|
}
|
|
223
231
|
|
|
224
|
-
|
|
225
|
-
this.#
|
|
232
|
+
async clearAdvertisers() {
|
|
233
|
+
const advertisers = [...this.#advertisers];
|
|
234
|
+
this.#advertisers.clear();
|
|
235
|
+
await MatterAggregateError.allSettled(advertisers.map(advertiser => advertiser.close()));
|
|
226
236
|
}
|
|
227
237
|
|
|
228
|
-
|
|
229
|
-
if (this.#
|
|
230
|
-
|
|
238
|
+
#advertiseFabric(fabric: Fabric, event: Advertiser.BroadcastEvent) {
|
|
239
|
+
if (this.#isClosing) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
for (const advertiser of this.#advertisers) {
|
|
244
|
+
advertiser.advertise(ServiceDescription.Operational({ fabric }), event);
|
|
231
245
|
}
|
|
232
246
|
}
|
|
233
247
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
"Error closing broadcasters",
|
|
239
|
-
).catch(error => logger.error(error));
|
|
240
|
-
this.#broadcasters.clear();
|
|
241
|
-
await closed;
|
|
248
|
+
#advertisements(predicate?: (ad: Advertisement) => boolean) {
|
|
249
|
+
return [...this.#advertisers].flatMap(advertiser =>
|
|
250
|
+
predicate ? advertiser.filter(predicate) : [...advertiser.advertisements],
|
|
251
|
+
);
|
|
242
252
|
}
|
|
243
253
|
}
|