@matter/protocol 0.16.0-alpha.0-20250817-1b000357c → 0.16.0-alpha.0-20250820-24939dd26
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/action/Val.d.ts +6 -0
- package/dist/cjs/action/Val.d.ts.map +1 -1
- package/dist/cjs/action/Val.js.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.d.ts +1 -1
- package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.js +4 -4
- package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
- package/dist/cjs/action/client/ClientSubscription.d.ts +2 -1
- package/dist/cjs/action/client/ClientSubscription.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientSubscriptionHandler.js +2 -2
- package/dist/cjs/action/client/ClientSubscriptionHandler.js.map +1 -1
- package/dist/cjs/action/client/ClientSubscriptions.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientSubscriptions.js +11 -7
- package/dist/cjs/action/client/ClientSubscriptions.js.map +1 -1
- package/dist/cjs/action/request/Subscribe.d.ts +6 -6
- package/dist/cjs/action/request/Subscribe.d.ts.map +1 -1
- package/dist/cjs/action/request/Subscribe.js +11 -9
- package/dist/cjs/action/request/Subscribe.js.map +1 -1
- package/dist/cjs/advertisement/Advertisement.d.ts +3 -3
- package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -1
- package/dist/cjs/advertisement/Advertisement.js +5 -5
- package/dist/cjs/advertisement/Advertisement.js.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertisement.d.ts.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertisement.js +7 -6
- package/dist/cjs/advertisement/ble/BleAdvertisement.js.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +9 -9
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.js +4 -4
- package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertisement.d.ts.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertisement.js +7 -7
- package/dist/cjs/advertisement/mdns/MdnsAdvertisement.js.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +2 -2
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +4 -4
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
- package/dist/cjs/ble/Ble.d.ts +2 -2
- 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 +4 -4
- package/dist/cjs/ble/BleConsts.d.ts.map +1 -1
- package/dist/cjs/ble/BleConsts.js +7 -7
- package/dist/cjs/ble/BleConsts.js.map +1 -1
- package/dist/cjs/ble/BtpSessionHandler.js +2 -2
- package/dist/cjs/ble/BtpSessionHandler.js.map +1 -1
- package/dist/cjs/certificate/AttestationCertificateManager.js +3 -3
- package/dist/cjs/certificate/AttestationCertificateManager.js.map +1 -1
- package/dist/cjs/certificate/CertificateAuthority.js +2 -2
- package/dist/cjs/certificate/CertificateAuthority.js.map +1 -1
- package/dist/cjs/certificate/kinds/OperationalBase.js +2 -2
- package/dist/cjs/certificate/kinds/OperationalBase.js.map +1 -1
- package/dist/cjs/cluster/client/ClusterClient.js +5 -5
- package/dist/cjs/cluster/client/ClusterClient.js.map +1 -1
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts +3 -3
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts.map +1 -1
- package/dist/cjs/cluster/client/EventClient.d.ts +2 -1
- package/dist/cjs/cluster/client/EventClient.d.ts.map +1 -1
- package/dist/cjs/cluster/client/EventClient.js +3 -3
- package/dist/cjs/cluster/client/EventClient.js.map +1 -1
- package/dist/cjs/common/FailsafeContext.d.ts +4 -4
- package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeContext.js +8 -8
- package/dist/cjs/common/FailsafeContext.js.map +1 -1
- package/dist/cjs/common/FailsafeTimer.d.ts +3 -3
- package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeTimer.js +8 -8
- package/dist/cjs/common/FailsafeTimer.js.map +1 -1
- package/dist/cjs/common/Scanner.d.ts +7 -7
- package/dist/cjs/common/Scanner.d.ts.map +1 -1
- package/dist/cjs/common/Scanner.js.map +1 -1
- package/dist/cjs/events/OccurrenceManager.js +1 -1
- package/dist/cjs/events/OccurrenceManager.js.map +1 -1
- package/dist/cjs/fabric/Fabric.d.ts +8 -3
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
- package/dist/cjs/groups/FabricGroups.d.ts +1 -1
- package/dist/cjs/groups/FabricGroups.js +1 -1
- package/dist/cjs/groups/Groups.d.ts +1 -1
- package/dist/cjs/groups/KeySets.d.ts +3 -3
- package/dist/cjs/groups/KeySets.d.ts.map +1 -1
- package/dist/cjs/groups/KeySets.js +12 -4
- package/dist/cjs/groups/KeySets.js.map +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts +9 -9
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +33 -33
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts +10 -10
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.js +15 -15
- package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
- package/dist/cjs/interaction/Subscription.d.ts +3 -4
- package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
- package/dist/cjs/interaction/Subscription.js +9 -12
- package/dist/cjs/interaction/Subscription.js.map +1 -1
- package/dist/cjs/interaction/SubscriptionClient.d.ts +3 -3
- package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/SubscriptionClient.js +3 -3
- package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsClient.d.ts +9 -9
- package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsClient.js +86 -82
- package/dist/cjs/mdns/MdnsClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsServer.js +11 -9
- package/dist/cjs/mdns/MdnsServer.js.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
- package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.js +7 -7
- package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.js +37 -35
- package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.d.ts +4 -4
- package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.js +12 -17
- package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
- package/dist/cjs/peer/InteractionQueue.d.ts.map +1 -1
- package/dist/cjs/peer/InteractionQueue.js +2 -2
- package/dist/cjs/peer/InteractionQueue.js.map +1 -1
- package/dist/cjs/peer/PeerAddress.d.ts +1 -1
- package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
- package/dist/cjs/peer/PeerAddress.js +3 -0
- package/dist/cjs/peer/PeerAddress.js.map +1 -1
- package/dist/cjs/peer/PeerSet.d.ts +2 -2
- package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
- package/dist/cjs/peer/PeerSet.js +25 -25
- package/dist/cjs/peer/PeerSet.js.map +1 -1
- package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -1
- package/dist/cjs/protocol/DeviceCommissioner.js +1 -1
- package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +2 -5
- package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
- package/dist/cjs/protocol/ExchangeProvider.d.ts +4 -4
- package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeProvider.js +3 -3
- package/dist/cjs/protocol/ExchangeProvider.js.map +1 -1
- package/dist/cjs/protocol/MessageChannel.d.ts +5 -5
- package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageChannel.js +19 -15
- package/dist/cjs/protocol/MessageChannel.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +6 -6
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +35 -33
- package/dist/cjs/protocol/MessageExchange.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +9 -9
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.js +18 -18
- package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/cjs/session/NodeSession.d.ts +6 -3
- package/dist/cjs/session/NodeSession.d.ts.map +1 -1
- package/dist/cjs/session/NodeSession.js +5 -5
- package/dist/cjs/session/NodeSession.js.map +1 -1
- package/dist/cjs/session/Session.d.ts +7 -7
- package/dist/cjs/session/Session.d.ts.map +1 -1
- package/dist/cjs/session/Session.js +19 -19
- package/dist/cjs/session/Session.js.map +1 -1
- package/dist/cjs/session/SessionIntervals.d.ts +7 -6
- package/dist/cjs/session/SessionIntervals.d.ts.map +1 -1
- package/dist/cjs/session/SessionIntervals.js +8 -8
- package/dist/cjs/session/SessionIntervals.js.map +1 -1
- package/dist/cjs/session/SessionManager.d.ts +2 -2
- package/dist/cjs/session/SessionManager.d.ts.map +1 -1
- package/dist/cjs/session/SessionManager.js +6 -6
- package/dist/cjs/session/SessionManager.js.map +1 -1
- package/dist/cjs/session/case/CaseClient.d.ts +6 -4
- package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseClient.js +19 -13
- package/dist/cjs/session/case/CaseClient.js.map +1 -1
- package/dist/cjs/session/case/CaseServer.js +4 -4
- package/dist/cjs/session/case/CaseServer.js.map +1 -1
- package/dist/cjs/session/pase/PaseClient.js +1 -1
- package/dist/cjs/session/pase/PaseClient.js.map +1 -1
- package/dist/cjs/session/pase/PaseMessenger.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseMessenger.js +4 -7
- package/dist/cjs/session/pase/PaseMessenger.js.map +1 -1
- package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseServer.js +3 -3
- package/dist/cjs/session/pase/PaseServer.js.map +1 -1
- package/dist/esm/action/Val.d.ts +6 -0
- package/dist/esm/action/Val.d.ts.map +1 -1
- package/dist/esm/action/Val.js.map +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/esm/action/client/ClientInteraction.js +5 -5
- package/dist/esm/action/client/ClientInteraction.js.map +1 -1
- package/dist/esm/action/client/ClientSubscription.d.ts +2 -1
- package/dist/esm/action/client/ClientSubscription.d.ts.map +1 -1
- package/dist/esm/action/client/ClientSubscriptionHandler.js +2 -2
- package/dist/esm/action/client/ClientSubscriptionHandler.js.map +1 -1
- package/dist/esm/action/client/ClientSubscriptions.d.ts.map +1 -1
- package/dist/esm/action/client/ClientSubscriptions.js +14 -8
- package/dist/esm/action/client/ClientSubscriptions.js.map +1 -1
- package/dist/esm/action/request/Subscribe.d.ts +6 -6
- package/dist/esm/action/request/Subscribe.d.ts.map +1 -1
- package/dist/esm/action/request/Subscribe.js +12 -10
- package/dist/esm/action/request/Subscribe.js.map +1 -1
- package/dist/esm/advertisement/Advertisement.d.ts +3 -3
- package/dist/esm/advertisement/Advertisement.d.ts.map +1 -1
- package/dist/esm/advertisement/Advertisement.js +16 -7
- package/dist/esm/advertisement/Advertisement.js.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertisement.d.ts.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertisement.js +7 -6
- package/dist/esm/advertisement/ble/BleAdvertisement.js.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +9 -9
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.js +6 -6
- package/dist/esm/advertisement/ble/BleAdvertiser.js.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertisement.d.ts.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertisement.js +17 -8
- package/dist/esm/advertisement/mdns/MdnsAdvertisement.js.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +2 -2
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +14 -6
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
- package/dist/esm/ble/Ble.d.ts +2 -2
- package/dist/esm/ble/Ble.d.ts.map +1 -1
- package/dist/esm/ble/Ble.js +5 -1
- package/dist/esm/ble/Ble.js.map +1 -1
- package/dist/esm/ble/BleConsts.d.ts +4 -4
- package/dist/esm/ble/BleConsts.d.ts.map +1 -1
- package/dist/esm/ble/BleConsts.js +8 -8
- package/dist/esm/ble/BleConsts.js.map +1 -1
- package/dist/esm/ble/BtpSessionHandler.js +4 -4
- package/dist/esm/ble/BtpSessionHandler.js.map +1 -1
- package/dist/esm/certificate/AttestationCertificateManager.js +3 -3
- package/dist/esm/certificate/AttestationCertificateManager.js.map +1 -1
- package/dist/esm/certificate/CertificateAuthority.js +2 -2
- package/dist/esm/certificate/CertificateAuthority.js.map +1 -1
- package/dist/esm/certificate/kinds/OperationalBase.js +2 -2
- package/dist/esm/certificate/kinds/OperationalBase.js.map +1 -1
- package/dist/esm/cluster/client/ClusterClient.js +5 -5
- package/dist/esm/cluster/client/ClusterClient.js.map +1 -1
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts +3 -3
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts.map +1 -1
- package/dist/esm/cluster/client/EventClient.d.ts +2 -1
- package/dist/esm/cluster/client/EventClient.d.ts.map +1 -1
- package/dist/esm/cluster/client/EventClient.js +3 -3
- package/dist/esm/cluster/client/EventClient.js.map +1 -1
- package/dist/esm/common/FailsafeContext.d.ts +4 -4
- package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
- package/dist/esm/common/FailsafeContext.js +9 -8
- package/dist/esm/common/FailsafeContext.js.map +1 -1
- package/dist/esm/common/FailsafeTimer.d.ts +3 -3
- package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
- package/dist/esm/common/FailsafeTimer.js +8 -8
- package/dist/esm/common/FailsafeTimer.js.map +1 -1
- package/dist/esm/common/Scanner.d.ts +7 -7
- package/dist/esm/common/Scanner.d.ts.map +1 -1
- package/dist/esm/common/Scanner.js +5 -1
- package/dist/esm/common/Scanner.js.map +1 -1
- package/dist/esm/events/OccurrenceManager.js +1 -1
- package/dist/esm/events/OccurrenceManager.js.map +1 -1
- package/dist/esm/fabric/Fabric.d.ts +8 -3
- package/dist/esm/fabric/Fabric.d.ts.map +1 -1
- package/dist/esm/groups/FabricGroups.d.ts +1 -1
- package/dist/esm/groups/FabricGroups.js +1 -1
- package/dist/esm/groups/Groups.d.ts +1 -1
- package/dist/esm/groups/KeySets.d.ts +3 -3
- package/dist/esm/groups/KeySets.d.ts.map +1 -1
- package/dist/esm/groups/KeySets.js +13 -5
- package/dist/esm/groups/KeySets.js.map +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts +9 -9
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +34 -33
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts +10 -10
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.js +16 -15
- package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
- package/dist/esm/interaction/Subscription.d.ts +3 -4
- package/dist/esm/interaction/Subscription.d.ts.map +1 -1
- package/dist/esm/interaction/Subscription.js +9 -12
- package/dist/esm/interaction/Subscription.js.map +1 -1
- package/dist/esm/interaction/SubscriptionClient.d.ts +3 -3
- package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/esm/interaction/SubscriptionClient.js +4 -4
- package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
- package/dist/esm/mdns/MdnsClient.d.ts +9 -9
- package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsClient.js +94 -82
- package/dist/esm/mdns/MdnsClient.js.map +1 -1
- package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsServer.js +14 -9
- package/dist/esm/mdns/MdnsServer.js.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
- package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.js +11 -8
- package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
- package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioningFlow.js +44 -35
- package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.d.ts +4 -4
- package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.js +20 -18
- package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
- package/dist/esm/peer/InteractionQueue.d.ts.map +1 -1
- package/dist/esm/peer/InteractionQueue.js +3 -3
- package/dist/esm/peer/InteractionQueue.js.map +1 -1
- package/dist/esm/peer/PeerAddress.d.ts +1 -1
- package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
- package/dist/esm/peer/PeerAddress.js +3 -0
- package/dist/esm/peer/PeerAddress.js.map +1 -1
- package/dist/esm/peer/PeerSet.d.ts +2 -2
- package/dist/esm/peer/PeerSet.d.ts.map +1 -1
- package/dist/esm/peer/PeerSet.js +29 -26
- package/dist/esm/peer/PeerSet.js.map +1 -1
- package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -1
- package/dist/esm/protocol/DeviceCommissioner.js +2 -2
- package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +3 -6
- package/dist/esm/protocol/ExchangeManager.js.map +1 -1
- package/dist/esm/protocol/ExchangeProvider.d.ts +4 -4
- package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeProvider.js +4 -4
- package/dist/esm/protocol/ExchangeProvider.js.map +1 -1
- package/dist/esm/protocol/MessageChannel.d.ts +5 -5
- package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/esm/protocol/MessageChannel.js +20 -16
- package/dist/esm/protocol/MessageChannel.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +6 -6
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +39 -34
- package/dist/esm/protocol/MessageExchange.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts +9 -9
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.js +19 -19
- package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/esm/session/NodeSession.d.ts +6 -3
- package/dist/esm/session/NodeSession.d.ts.map +1 -1
- package/dist/esm/session/NodeSession.js +5 -5
- package/dist/esm/session/NodeSession.js.map +1 -1
- package/dist/esm/session/Session.d.ts +7 -7
- package/dist/esm/session/Session.d.ts.map +1 -1
- package/dist/esm/session/Session.js +27 -20
- package/dist/esm/session/Session.js.map +1 -1
- package/dist/esm/session/SessionIntervals.d.ts +7 -6
- package/dist/esm/session/SessionIntervals.d.ts.map +1 -1
- package/dist/esm/session/SessionIntervals.js +8 -8
- package/dist/esm/session/SessionIntervals.js.map +1 -1
- package/dist/esm/session/SessionManager.d.ts +2 -2
- package/dist/esm/session/SessionManager.d.ts.map +1 -1
- package/dist/esm/session/SessionManager.js +6 -6
- package/dist/esm/session/SessionManager.js.map +1 -1
- package/dist/esm/session/case/CaseClient.d.ts +6 -4
- package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
- package/dist/esm/session/case/CaseClient.js +20 -14
- package/dist/esm/session/case/CaseClient.js.map +1 -1
- package/dist/esm/session/case/CaseServer.js +4 -4
- package/dist/esm/session/case/CaseServer.js.map +1 -1
- package/dist/esm/session/pase/PaseClient.js +1 -1
- package/dist/esm/session/pase/PaseClient.js.map +1 -1
- package/dist/esm/session/pase/PaseMessenger.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseMessenger.js +5 -11
- package/dist/esm/session/pase/PaseMessenger.js.map +1 -1
- package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseServer.js +4 -3
- package/dist/esm/session/pase/PaseServer.js.map +1 -1
- package/package.json +6 -6
- package/src/action/Val.ts +5 -0
- package/src/action/client/ClientInteraction.ts +4 -4
- package/src/action/client/ClientSubscription.ts +2 -1
- package/src/action/client/ClientSubscriptionHandler.ts +2 -2
- package/src/action/client/ClientSubscriptions.ts +14 -8
- package/src/action/request/Subscribe.ts +17 -15
- package/src/advertisement/Advertisement.ts +18 -8
- package/src/advertisement/ble/BleAdvertisement.ts +7 -6
- package/src/advertisement/ble/BleAdvertiser.ts +10 -10
- package/src/advertisement/mdns/MdnsAdvertisement.ts +20 -9
- package/src/advertisement/mdns/MdnsAdvertiser.ts +17 -7
- package/src/ble/Ble.ts +11 -2
- package/src/ble/BleConsts.ts +5 -5
- package/src/ble/BtpSessionHandler.ts +4 -4
- package/src/certificate/AttestationCertificateManager.ts +3 -3
- package/src/certificate/CertificateAuthority.ts +2 -2
- package/src/certificate/kinds/OperationalBase.ts +3 -3
- package/src/cluster/client/ClusterClient.ts +8 -8
- package/src/cluster/client/ClusterClientTypes.ts +3 -3
- package/src/cluster/client/EventClient.ts +5 -5
- package/src/common/FailsafeContext.ts +11 -13
- package/src/common/FailsafeTimer.ts +11 -13
- package/src/common/Scanner.ts +16 -7
- package/src/events/OccurrenceManager.ts +1 -1
- package/src/groups/FabricGroups.ts +1 -1
- package/src/groups/KeySets.ts +14 -6
- package/src/interaction/InteractionClient.ts +46 -44
- package/src/interaction/InteractionMessenger.ts +24 -22
- package/src/interaction/Subscription.ts +10 -14
- package/src/interaction/SubscriptionClient.ts +6 -6
- package/src/mdns/MdnsClient.ts +105 -82
- package/src/mdns/MdnsServer.ts +14 -9
- package/src/peer/ControllerCommissioner.ts +12 -9
- package/src/peer/ControllerCommissioningFlow.ts +48 -39
- package/src/peer/ControllerDiscovery.ts +22 -18
- package/src/peer/InteractionQueue.ts +3 -3
- package/src/peer/PeerAddress.ts +7 -3
- package/src/peer/PeerSet.ts +34 -28
- package/src/protocol/DeviceCommissioner.ts +2 -2
- package/src/protocol/ExchangeManager.ts +3 -6
- package/src/protocol/ExchangeProvider.ts +6 -6
- package/src/protocol/MessageChannel.ts +26 -21
- package/src/protocol/MessageExchange.ts +42 -38
- package/src/securechannel/SecureChannelMessenger.ts +17 -23
- package/src/session/NodeSession.ts +5 -5
- package/src/session/Session.ts +31 -21
- package/src/session/SessionIntervals.ts +11 -11
- package/src/session/SessionManager.ts +10 -9
- package/src/session/case/CaseClient.ts +29 -16
- package/src/session/case/CaseServer.ts +4 -4
- package/src/session/pase/PaseClient.ts +1 -1
- package/src/session/pase/PaseMessenger.ts +5 -11
- package/src/session/pase/PaseServer.ts +4 -3
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { BlePeripheralInterface } from "#ble/Ble.js";
|
|
8
|
-
import { Bytes, ImplementationError } from "#general";
|
|
8
|
+
import { Bytes, Duration, ImplementationError, Millis } from "#general";
|
|
9
9
|
import { DatatypeModel, FieldElement } from "#model";
|
|
10
|
-
import {
|
|
10
|
+
import { MAXIMUM_COMMISSIONING_TIMEOUT } from "#types";
|
|
11
11
|
import { Advertisement } from "../Advertisement.js";
|
|
12
12
|
import { Advertiser } from "../Advertiser.js";
|
|
13
13
|
import { CommissioningMode } from "../CommissioningMode.js";
|
|
@@ -66,38 +66,38 @@ export namespace BleAdvertiser {
|
|
|
66
66
|
/**
|
|
67
67
|
* Advertisement timeout.
|
|
68
68
|
*/
|
|
69
|
-
readonly timeout:
|
|
69
|
+
readonly timeout: Duration;
|
|
70
70
|
|
|
71
71
|
/**
|
|
72
72
|
* Transmission interval for first 30 seconds.
|
|
73
73
|
*
|
|
74
74
|
* Per core spec 5.4.2.5.3 should be 20-60ms.
|
|
75
75
|
*/
|
|
76
|
-
readonly earlyInterval:
|
|
76
|
+
readonly earlyInterval: Duration;
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
79
|
* Transmission interval after first 30 seconds but before 15 minutes.
|
|
80
80
|
*
|
|
81
81
|
* Per core spec 5.4.2.5.3 should be 150-1285ms.
|
|
82
82
|
*/
|
|
83
|
-
readonly lateInterval:
|
|
83
|
+
readonly lateInterval: Duration;
|
|
84
84
|
|
|
85
85
|
/**
|
|
86
86
|
* Transmission interval after 15 minutes.
|
|
87
87
|
*
|
|
88
88
|
* Per core spec 5.4.2.5.3 should be ~1285ms.
|
|
89
89
|
*/
|
|
90
|
-
readonly extendedInterval:
|
|
90
|
+
readonly extendedInterval: Duration;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
export interface Options extends Partial<Configuration> {}
|
|
94
94
|
|
|
95
95
|
export function Configuration(options?: Options) {
|
|
96
96
|
return {
|
|
97
|
-
timeout:
|
|
98
|
-
earlyInterval: 20,
|
|
99
|
-
lateInterval: 150,
|
|
100
|
-
extendedInterval: 1285,
|
|
97
|
+
timeout: MAXIMUM_COMMISSIONING_TIMEOUT,
|
|
98
|
+
earlyInterval: Millis(20),
|
|
99
|
+
lateInterval: Millis(150),
|
|
100
|
+
extendedInterval: Millis(1285),
|
|
101
101
|
...options,
|
|
102
102
|
};
|
|
103
103
|
}
|
|
@@ -8,7 +8,18 @@ import { Advertisement } from "#advertisement/Advertisement.js";
|
|
|
8
8
|
import type { Advertiser } from "#advertisement/Advertiser.js";
|
|
9
9
|
import type { ServiceDescription } from "#advertisement/ServiceDescription.js";
|
|
10
10
|
import { SupportedTransportsSchema } from "#common/SupportedTransportsBitmap.js";
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
AAAARecord,
|
|
13
|
+
ARecord,
|
|
14
|
+
DnsRecord,
|
|
15
|
+
Duration,
|
|
16
|
+
Logger,
|
|
17
|
+
NetworkInterfaceDetails,
|
|
18
|
+
SrvRecord,
|
|
19
|
+
Time,
|
|
20
|
+
Timestamp,
|
|
21
|
+
TxtRecord,
|
|
22
|
+
} from "#general";
|
|
12
23
|
import type { MdnsServer } from "#mdns/MdnsServer.js";
|
|
13
24
|
import { SessionIntervals } from "#session/SessionIntervals.js";
|
|
14
25
|
import type { MdnsAdvertiser } from "./MdnsAdvertiser.js";
|
|
@@ -29,7 +40,7 @@ export abstract class MdnsAdvertisement<T extends ServiceDescription = ServiceDe
|
|
|
29
40
|
qname: string;
|
|
30
41
|
|
|
31
42
|
#isPrivacyMasked: boolean;
|
|
32
|
-
#stopAt?:
|
|
43
|
+
#stopAt?: Timestamp;
|
|
33
44
|
|
|
34
45
|
constructor(advertiser: MdnsAdvertiser, qname: string, description: T) {
|
|
35
46
|
description = {
|
|
@@ -51,12 +62,12 @@ export abstract class MdnsAdvertisement<T extends ServiceDescription = ServiceDe
|
|
|
51
62
|
this.#stopAt = undefined;
|
|
52
63
|
let number = 0;
|
|
53
64
|
for (const retryInterval of this.advertiser.broadcastScheduleFor(this, event)) {
|
|
54
|
-
if (this.#stopAt !== undefined && this.#stopAt <= Time.nowMs
|
|
65
|
+
if (this.#stopAt !== undefined && this.#stopAt <= Time.nowMs) {
|
|
55
66
|
break;
|
|
56
67
|
}
|
|
57
68
|
|
|
58
69
|
number++;
|
|
59
|
-
logger.debug("Broadcast", this.dict({ number, next: retryInterval }));
|
|
70
|
+
logger.debug("Broadcast", this.dict({ number, next: Duration.format(retryInterval) }));
|
|
60
71
|
await this.broadcast();
|
|
61
72
|
await context.sleep("MDNS repeat", retryInterval);
|
|
62
73
|
}
|
|
@@ -78,7 +89,7 @@ export abstract class MdnsAdvertisement<T extends ServiceDescription = ServiceDe
|
|
|
78
89
|
* Broadcast expiration announcement immediately.
|
|
79
90
|
*/
|
|
80
91
|
async expire() {
|
|
81
|
-
logger.info("Unpublishing", this.dict({ time: this.duration }));
|
|
92
|
+
logger.info("Unpublishing", this.dict({ time: Duration.format(this.duration) }));
|
|
82
93
|
await this.advertiser.server.expireAnnouncements(this.service);
|
|
83
94
|
}
|
|
84
95
|
|
|
@@ -94,7 +105,7 @@ export abstract class MdnsAdvertisement<T extends ServiceDescription = ServiceDe
|
|
|
94
105
|
return;
|
|
95
106
|
}
|
|
96
107
|
|
|
97
|
-
this.#stopAt = Time.nowMs
|
|
108
|
+
this.#stopAt = Timestamp(Time.nowMs + broadcastAfterConnection);
|
|
98
109
|
}
|
|
99
110
|
|
|
100
111
|
override serviceDisconnected() {
|
|
@@ -148,9 +159,9 @@ export abstract class MdnsAdvertisement<T extends ServiceDescription = ServiceDe
|
|
|
148
159
|
|
|
149
160
|
get #txtValues() {
|
|
150
161
|
const values: Record<string, unknown> = {
|
|
151
|
-
SII: this.description.
|
|
152
|
-
SAI: this.description.
|
|
153
|
-
SAT: this.description.
|
|
162
|
+
SII: this.description.idleInterval /* Session Idle Interval */,
|
|
163
|
+
SAI: this.description.activeInterval /* Session Active Interval */,
|
|
164
|
+
SAT: this.description.activeThreshold /* Session Active Threshold */,
|
|
154
165
|
...this.txtValues,
|
|
155
166
|
};
|
|
156
167
|
|
|
@@ -6,10 +6,20 @@
|
|
|
6
6
|
|
|
7
7
|
import { Advertiser } from "#advertisement/Advertiser.js";
|
|
8
8
|
import { ServiceDescription } from "#advertisement/ServiceDescription.js";
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
Bytes,
|
|
11
|
+
Crypto,
|
|
12
|
+
Duration,
|
|
13
|
+
ImplementationError,
|
|
14
|
+
Instant,
|
|
15
|
+
InternalError,
|
|
16
|
+
RetrySchedule,
|
|
17
|
+
Seconds,
|
|
18
|
+
STANDARD_MATTER_PORT,
|
|
19
|
+
} from "#general";
|
|
10
20
|
import type { MdnsServer } from "#mdns/MdnsServer.js";
|
|
11
21
|
import { DatatypeModel, FieldElement } from "#model";
|
|
12
|
-
import {
|
|
22
|
+
import { MAXIMUM_COMMISSIONING_TIMEOUT } from "#types";
|
|
13
23
|
import { CommissionableMdnsAdvertisement } from "./CommissionableMdnsAdvertisement.js";
|
|
14
24
|
import { CommissionerMdnsAdvertisement } from "./CommissionerMdnsAdvertisement.js";
|
|
15
25
|
import type { MdnsAdvertisement } from "./MdnsAdvertisement.js";
|
|
@@ -188,7 +198,7 @@ export namespace MdnsAdvertiser {
|
|
|
188
198
|
* Set to zero to terminate broadcast immediately after connection. If undefined broadcasts will continue until
|
|
189
199
|
* terminated by {@link timeout} or {@link maximumCount}.
|
|
190
200
|
*/
|
|
191
|
-
readonly broadcastAfterConnection?:
|
|
201
|
+
readonly broadcastAfterConnection?: Duration;
|
|
192
202
|
}
|
|
193
203
|
|
|
194
204
|
/**
|
|
@@ -196,23 +206,23 @@ export namespace MdnsAdvertiser {
|
|
|
196
206
|
*/
|
|
197
207
|
export const DefaultBroadcastSchedule: BroadcastSchedule = {
|
|
198
208
|
// Mandated by MDNS specification
|
|
199
|
-
initialInterval:
|
|
209
|
+
initialInterval: Seconds.one,
|
|
200
210
|
|
|
201
211
|
// Maximum commissioning timeout per Matter specification 5.4.2.3.1, although
|
|
202
|
-
timeout:
|
|
212
|
+
timeout: MAXIMUM_COMMISSIONING_TIMEOUT,
|
|
203
213
|
|
|
204
214
|
// Minimum per MDNS specification
|
|
205
215
|
backoffFactor: 2,
|
|
206
216
|
|
|
207
217
|
// Technically this may result in us emitting more than 8 packets which is the maximum per the MDNS
|
|
208
218
|
// specification but extra packets will only come every 90 seconds
|
|
209
|
-
maximumInterval:
|
|
219
|
+
maximumInterval: Seconds(90),
|
|
210
220
|
|
|
211
221
|
// Not in any specification AFAIK but common sense to reduce thundering herd
|
|
212
222
|
jitterFactor: 0.25,
|
|
213
223
|
|
|
214
224
|
// Generally operational broadcast is unnecessary once an operational connection is established
|
|
215
|
-
broadcastAfterConnection:
|
|
225
|
+
broadcastAfterConnection: Instant,
|
|
216
226
|
};
|
|
217
227
|
|
|
218
228
|
/**
|
package/src/ble/Ble.ts
CHANGED
|
@@ -4,7 +4,16 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
Bytes,
|
|
9
|
+
Channel,
|
|
10
|
+
ChannelType,
|
|
11
|
+
Duration,
|
|
12
|
+
MatterError,
|
|
13
|
+
NetInterface,
|
|
14
|
+
NoProviderError,
|
|
15
|
+
TransportInterface,
|
|
16
|
+
} from "#general";
|
|
8
17
|
import { Scanner } from "../common/Scanner.js";
|
|
9
18
|
import { BLE_MAX_MATTER_PAYLOAD_SIZE } from "./BleConsts.js";
|
|
10
19
|
|
|
@@ -28,7 +37,7 @@ export abstract class Ble {
|
|
|
28
37
|
}
|
|
29
38
|
|
|
30
39
|
export interface BlePeripheralInterface extends TransportInterface {
|
|
31
|
-
advertise(advertiseData: Bytes, additionalAdvertisementData?: Bytes,
|
|
40
|
+
advertise(advertiseData: Bytes, additionalAdvertisementData?: Bytes, interval?: Duration): Promise<void>;
|
|
32
41
|
stopAdvertising(): Promise<void>;
|
|
33
42
|
}
|
|
34
43
|
|
package/src/ble/BleConsts.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { MAX_UDP_MESSAGE_SIZE } from "#general";
|
|
7
|
+
import { MAX_UDP_MESSAGE_SIZE, Millis, Seconds } from "#general";
|
|
8
8
|
|
|
9
9
|
/** @see {@link MatterSpecification.v11.Core} § 4.17.3.2 */
|
|
10
10
|
export const BLE_MATTER_SERVICE_UUID_SHORT = "fff6";
|
|
@@ -22,18 +22,18 @@ export const BTP_MAXIMUM_WINDOW_SIZE = 255; // Server maximum window size
|
|
|
22
22
|
* The maximum amount of time after sending a BTP Session Handshake request to wait for a BTP Session Handshake response
|
|
23
23
|
* before closing the connection.
|
|
24
24
|
*/
|
|
25
|
-
export const
|
|
25
|
+
export const BTP_CONN_RSP_TIMEOUT = Seconds(5); // timer starts when receives handshake request & waits for a subscription request on c2
|
|
26
26
|
|
|
27
27
|
/** The maximum amount of time after receipt of a segment before a stand-alone ACK must be sent. */
|
|
28
|
-
export const
|
|
28
|
+
export const BTP_ACK_TIMEOUT = Seconds(15); // timer in ms before ack should be sent for a segment
|
|
29
29
|
|
|
30
|
-
export const
|
|
30
|
+
export const BTP_SEND_ACK_TIMEOUT = Millis(BTP_ACK_TIMEOUT / 3); // timer starts when we receive a packet and stops when we sends its ack
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* The maximum amount of time no unique data has been sent over a BTP session before the Central Device must close the
|
|
34
34
|
* BTP session.
|
|
35
35
|
*/
|
|
36
|
-
export const BTP_CONN_IDLE_TIMEOUT =
|
|
36
|
+
export const BTP_CONN_IDLE_TIMEOUT = Seconds(30);
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* The maximum message size that can be transported in a Matter message via BTP.
|
|
@@ -9,10 +9,10 @@ import { BtpCodec } from "../codec/BtpCodec.js";
|
|
|
9
9
|
import {
|
|
10
10
|
BLE_MAXIMUM_BTP_MTU,
|
|
11
11
|
BLE_MINIMUM_ATT_MTU,
|
|
12
|
-
|
|
12
|
+
BTP_ACK_TIMEOUT,
|
|
13
13
|
BTP_CONN_IDLE_TIMEOUT,
|
|
14
14
|
BTP_MAXIMUM_WINDOW_SIZE,
|
|
15
|
-
|
|
15
|
+
BTP_SEND_ACK_TIMEOUT,
|
|
16
16
|
} from "./BleConsts.js";
|
|
17
17
|
|
|
18
18
|
export class BtpMatterError extends MatterError {}
|
|
@@ -29,7 +29,7 @@ export class BtpSessionHandler {
|
|
|
29
29
|
private currentIncomingSegmentedPayload: Bytes | undefined;
|
|
30
30
|
private prevIncomingSequenceNumber = 255; // Incoming Sequence Number received. Set to 255 to start at 0
|
|
31
31
|
private prevIncomingAckNumber = -1; // Previous ackNumber received
|
|
32
|
-
private readonly ackReceiveTimer = Time.getTimer("BTP ack timeout",
|
|
32
|
+
private readonly ackReceiveTimer = Time.getTimer("BTP ack timeout", BTP_ACK_TIMEOUT, () =>
|
|
33
33
|
this.btpAckTimeoutTriggered(),
|
|
34
34
|
);
|
|
35
35
|
|
|
@@ -37,7 +37,7 @@ export class BtpSessionHandler {
|
|
|
37
37
|
private prevAckedSequenceNumber = -1; // Previous (outgoing) Acked Sequence Number
|
|
38
38
|
private readonly queuedOutgoingMatterMessages = new Array<DataReader<Endian.Little>>();
|
|
39
39
|
private sendInProgress = false;
|
|
40
|
-
private readonly sendAckTimer = Time.getTimer("BTP send timeout",
|
|
40
|
+
private readonly sendAckTimer = Time.getTimer("BTP send timeout", BTP_SEND_ACK_TIMEOUT, () =>
|
|
41
41
|
this.btpSendAckTimeoutTriggered(),
|
|
42
42
|
);
|
|
43
43
|
private isActive = true;
|
|
@@ -76,7 +76,7 @@ export class AttestationCertificateManager {
|
|
|
76
76
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
77
77
|
// @ts-ignore
|
|
78
78
|
private async generatePAACert(vendorId?: VendorId) {
|
|
79
|
-
const now = Time.
|
|
79
|
+
const now = Time.now;
|
|
80
80
|
const cert = new Paa({
|
|
81
81
|
serialNumber: Bytes.fromHex(toHex(this.paaCertId)),
|
|
82
82
|
signatureAlgorithm: 1 /* EcdsaWithSHA256 */,
|
|
@@ -111,7 +111,7 @@ export class AttestationCertificateManager {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
private async generatePAICert(vendorId: VendorId, productId?: number) {
|
|
114
|
-
const now = Time.
|
|
114
|
+
const now = Time.now;
|
|
115
115
|
const cert = new Pai({
|
|
116
116
|
serialNumber: Bytes.fromHex(toHex(this.#paiCertId)),
|
|
117
117
|
signatureAlgorithm: 1 /* EcdsaWithSHA256 */,
|
|
@@ -146,7 +146,7 @@ export class AttestationCertificateManager {
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
async generateDaCert(publicKey: Bytes, vendorId: VendorId, productId: number) {
|
|
149
|
-
const now = Time.
|
|
149
|
+
const now = Time.now;
|
|
150
150
|
const certId = this.#nextCertificateId++;
|
|
151
151
|
const cert = new Dac({
|
|
152
152
|
serialNumber: Bytes.fromHex(toHex(certId)),
|
|
@@ -117,7 +117,7 @@ export class CertificateAuthority {
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
async #generateRootCert() {
|
|
120
|
-
const now = Time.
|
|
120
|
+
const now = Time.now;
|
|
121
121
|
const cert = new Rcac({
|
|
122
122
|
serialNumber: Bytes.fromHex(toHex(this.#rootCertId)),
|
|
123
123
|
signatureAlgorithm: 1 /* EcdsaWithSHA256 */,
|
|
@@ -148,7 +148,7 @@ export class CertificateAuthority {
|
|
|
148
148
|
nodeId: NodeId,
|
|
149
149
|
caseAuthenticatedTags?: CaseAuthenticatedTag[],
|
|
150
150
|
) {
|
|
151
|
-
const now = Time.
|
|
151
|
+
const now = Time.now;
|
|
152
152
|
const certId = this.#nextCertificateId++;
|
|
153
153
|
const cert = new Noc({
|
|
154
154
|
serialNumber: Bytes.fromHex(toHex(certId)),
|
|
@@ -62,10 +62,10 @@ export abstract class OperationalBase<CT extends X509Certificate> extends X509Ba
|
|
|
62
62
|
|
|
63
63
|
// notBefore date should be already reached, notAfter is not checked right now
|
|
64
64
|
// TODO: implement real checks when we add "Last known Good UTC time"
|
|
65
|
-
if (cert.notBefore * 1000 > Time.nowMs
|
|
66
|
-
logger.warn(`Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs
|
|
65
|
+
if (cert.notBefore * 1000 > Time.nowMs) {
|
|
66
|
+
logger.warn(`Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs}`);
|
|
67
67
|
/*throw new CertificateError(
|
|
68
|
-
`Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs
|
|
68
|
+
`Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs}`,
|
|
69
69
|
);*/
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { capitalize, Diagnostic, ImplementationError, Logger, Merge } from "#general";
|
|
7
|
+
import { capitalize, Diagnostic, Duration, ImplementationError, Logger, Merge } from "#general";
|
|
8
8
|
import {
|
|
9
9
|
Attribute,
|
|
10
10
|
AttributeId,
|
|
@@ -387,16 +387,16 @@ export function ClusterClient<const T extends ClusterType>(
|
|
|
387
387
|
request: RequestT,
|
|
388
388
|
options: {
|
|
389
389
|
asTimedRequest?: boolean;
|
|
390
|
-
|
|
391
|
-
|
|
390
|
+
timedRequestTimeout?: Duration;
|
|
391
|
+
expectedProcessingTime?: Duration;
|
|
392
392
|
useExtendedFailSafeMessageResponseTimeout?: boolean;
|
|
393
393
|
} = {},
|
|
394
394
|
) => {
|
|
395
395
|
const {
|
|
396
396
|
asTimedRequest,
|
|
397
|
-
|
|
397
|
+
timedRequestTimeout,
|
|
398
398
|
useExtendedFailSafeMessageResponseTimeout,
|
|
399
|
-
|
|
399
|
+
expectedProcessingTime,
|
|
400
400
|
} = options;
|
|
401
401
|
if (isGroupAddress) {
|
|
402
402
|
return interactionClient.invokeWithSuppressedResponse<Command<RequestT, ResponseT, any>>({
|
|
@@ -404,7 +404,7 @@ export function ClusterClient<const T extends ClusterType>(
|
|
|
404
404
|
command: commandDef[commandName],
|
|
405
405
|
request,
|
|
406
406
|
asTimedRequest,
|
|
407
|
-
|
|
407
|
+
timedRequestTimeout,
|
|
408
408
|
});
|
|
409
409
|
}
|
|
410
410
|
return interactionClient.invoke<Command<RequestT, ResponseT, any>>({
|
|
@@ -413,8 +413,8 @@ export function ClusterClient<const T extends ClusterType>(
|
|
|
413
413
|
command: commandDef[commandName],
|
|
414
414
|
request,
|
|
415
415
|
asTimedRequest,
|
|
416
|
-
|
|
417
|
-
|
|
416
|
+
timedRequestTimeout,
|
|
417
|
+
expectedProcessingTime,
|
|
418
418
|
useExtendedFailSafeMessageResponseTimeout,
|
|
419
419
|
});
|
|
420
420
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { Merge } from "#general";
|
|
6
|
+
import { Duration, Merge } from "#general";
|
|
7
7
|
import {
|
|
8
8
|
Attribute,
|
|
9
9
|
AttributeId,
|
|
@@ -63,13 +63,13 @@ export type SignatureFromCommandSpec<C extends Command<any, any, any>> = (
|
|
|
63
63
|
asTimedRequest?: boolean;
|
|
64
64
|
|
|
65
65
|
/** Override the request timeout when the command is sent as times request. Default are 10s. */
|
|
66
|
-
|
|
66
|
+
timedRequestTimeout?: Duration;
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
69
|
* Expected processing time on the device side for this command.
|
|
70
70
|
* useExtendedFailSafeMessageResponseTimeout is ignored if this value is set.
|
|
71
71
|
*/
|
|
72
|
-
|
|
72
|
+
expectedProcessingTime?: Duration;
|
|
73
73
|
|
|
74
74
|
/**
|
|
75
75
|
* Use the extended fail-safe message response timeout of 30 seconds. Use this for all commands
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { ImplementationError } from "#general";
|
|
7
|
+
import { Duration, ImplementationError } from "#general";
|
|
8
8
|
import { ClusterId, EndpointNumber, Event, EventId, EventNumber } from "#types";
|
|
9
9
|
import { DecodedEventData } from "../../interaction/EventDataDecoder.js";
|
|
10
10
|
import { InteractionClient } from "../../interaction/InteractionClient.js";
|
|
@@ -58,8 +58,8 @@ export class EventClient<T> {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
async subscribe(
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
minIntervalFloor: Duration,
|
|
62
|
+
maxIntervalCeiling: Duration,
|
|
63
63
|
isUrgent = true,
|
|
64
64
|
minimumEventNumber?: EventNumber,
|
|
65
65
|
isFabricFiltered?: boolean,
|
|
@@ -71,8 +71,8 @@ export class EventClient<T> {
|
|
|
71
71
|
endpointId: this.endpointId,
|
|
72
72
|
clusterId: this.clusterId,
|
|
73
73
|
event: this.event,
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
minIntervalFloor,
|
|
75
|
+
maxIntervalCeiling,
|
|
76
76
|
isUrgent,
|
|
77
77
|
minimumEventNumber,
|
|
78
78
|
isFabricFiltered,
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
AsyncObservable,
|
|
9
9
|
Bytes,
|
|
10
10
|
Construction,
|
|
11
|
+
Duration,
|
|
11
12
|
Logger,
|
|
12
13
|
MatterFlowError,
|
|
13
14
|
UnexpectedDataError,
|
|
@@ -46,7 +47,7 @@ export abstract class FailsafeContext {
|
|
|
46
47
|
#commissioned = AsyncObservable<[], void>();
|
|
47
48
|
|
|
48
49
|
constructor(options: FailsafeContext.Options) {
|
|
49
|
-
const {
|
|
50
|
+
const { expiryLength, associatedFabric, maxCumulativeFailsafe } = options;
|
|
50
51
|
|
|
51
52
|
this.#sessions = options.sessions;
|
|
52
53
|
this.#fabrics = options.fabrics;
|
|
@@ -61,21 +62,18 @@ export abstract class FailsafeContext {
|
|
|
61
62
|
|
|
62
63
|
// If ExpiryLengthSeconds is non-zero and the fail-safe timer was not currently armed, then the fail-safe
|
|
63
64
|
// timer SHALL be armed for that duration.
|
|
64
|
-
this.#failsafe = new FailsafeTimer(
|
|
65
|
-
|
|
66
|
-
expiryLengthSeconds,
|
|
67
|
-
maxCumulativeFailsafeSeconds,
|
|
68
|
-
() => this.#failSafeExpired(),
|
|
65
|
+
this.#failsafe = new FailsafeTimer(associatedFabric, expiryLength, maxCumulativeFailsafe, () =>
|
|
66
|
+
this.#failSafeExpired(),
|
|
69
67
|
);
|
|
70
|
-
logger.debug(`Arm failSafe timer for ${
|
|
68
|
+
logger.debug(`Arm failSafe timer for ${Duration.format(expiryLength)}`);
|
|
71
69
|
});
|
|
72
70
|
}
|
|
73
71
|
|
|
74
|
-
async extend(fabric: Fabric | undefined,
|
|
72
|
+
async extend(fabric: Fabric | undefined, expiryLength: Duration) {
|
|
75
73
|
await this.#construction;
|
|
76
|
-
await this.#failsafe?.reArm(fabric,
|
|
77
|
-
if (
|
|
78
|
-
logger.debug(`Extend failSafe timer for ${
|
|
74
|
+
await this.#failsafe?.reArm(fabric, expiryLength);
|
|
75
|
+
if (expiryLength > 0) {
|
|
76
|
+
logger.debug(`Extend failSafe timer for ${Duration.format(expiryLength)}`);
|
|
79
77
|
}
|
|
80
78
|
}
|
|
81
79
|
|
|
@@ -341,8 +339,8 @@ export namespace FailsafeContext {
|
|
|
341
339
|
export interface Options {
|
|
342
340
|
sessions: SessionManager;
|
|
343
341
|
fabrics: FabricManager;
|
|
344
|
-
|
|
345
|
-
|
|
342
|
+
expiryLength: Duration;
|
|
343
|
+
maxCumulativeFailsafe: Duration;
|
|
346
344
|
associatedFabric: Fabric | undefined;
|
|
347
345
|
}
|
|
348
346
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Logger, MatterFlowError, Time, Timer } from "#general";
|
|
7
|
+
import { Duration, Logger, MatterFlowError, Time, Timer } from "#general";
|
|
8
8
|
import { Fabric } from "../fabric/Fabric.js";
|
|
9
9
|
import type { FailsafeContext } from "./FailsafeContext.js";
|
|
10
10
|
|
|
@@ -22,16 +22,14 @@ export class FailsafeTimer {
|
|
|
22
22
|
|
|
23
23
|
constructor(
|
|
24
24
|
public associatedFabric: Fabric | undefined,
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
expiryLength: Duration,
|
|
26
|
+
maxCumulativeFailsafe: Duration,
|
|
27
27
|
expiryCallback: () => Promise<void>,
|
|
28
28
|
) {
|
|
29
29
|
this.#expiryCallback = expiryCallback;
|
|
30
|
-
this.#failsafeTimer = this.#startFailsafeTimer(
|
|
31
|
-
this.#maxCumulativeFailsafeTimer = Time.getTimer(
|
|
32
|
-
|
|
33
|
-
maxCumulativeFailsafeSeconds * 1000,
|
|
34
|
-
() => this.expire(),
|
|
30
|
+
this.#failsafeTimer = this.#startFailsafeTimer(expiryLength);
|
|
31
|
+
this.#maxCumulativeFailsafeTimer = Time.getTimer("Max cumulative failsafe", maxCumulativeFailsafe, () =>
|
|
32
|
+
this.expire(),
|
|
35
33
|
).start();
|
|
36
34
|
}
|
|
37
35
|
|
|
@@ -45,7 +43,7 @@ export class FailsafeTimer {
|
|
|
45
43
|
}
|
|
46
44
|
|
|
47
45
|
/** Handle "Re-Arming" an existing FailSafe context to extend the timer, expire or fail if not allowed. */
|
|
48
|
-
async reArm(associatedFabric: Fabric | undefined,
|
|
46
|
+
async reArm(associatedFabric: Fabric | undefined, expiry: Duration) {
|
|
49
47
|
if (!this.#failsafeTimer.isRunning) {
|
|
50
48
|
throw new MatterFlowError("FailSafe already expired.");
|
|
51
49
|
}
|
|
@@ -58,7 +56,7 @@ export class FailsafeTimer {
|
|
|
58
56
|
|
|
59
57
|
this.#failsafeTimer.stop();
|
|
60
58
|
|
|
61
|
-
if (
|
|
59
|
+
if (expiry === 0) {
|
|
62
60
|
// If ExpiryLengthSeconds is 0 and the fail-safe timer was already armed and the accessing fabric matches
|
|
63
61
|
// the Fabric currently associated with the fail-safe context, then the fail-safe timer SHALL be
|
|
64
62
|
// immediately expired (see further below for side-effects of expiration).
|
|
@@ -67,7 +65,7 @@ export class FailsafeTimer {
|
|
|
67
65
|
// If ExpiryLengthSeconds is non-zero and the fail-safe timer was currently armed, and the accessing Fabric
|
|
68
66
|
// matches the fail-safe context’s associated Fabric, then the fail-safe timer SHALL be re- armed to expire
|
|
69
67
|
// in ExpiryLengthSeconds.
|
|
70
|
-
this.#failsafeTimer = this.#startFailsafeTimer(
|
|
68
|
+
this.#failsafeTimer = this.#startFailsafeTimer(expiry);
|
|
71
69
|
}
|
|
72
70
|
}
|
|
73
71
|
|
|
@@ -83,8 +81,8 @@ export class FailsafeTimer {
|
|
|
83
81
|
this.#maxCumulativeFailsafeTimer.stop();
|
|
84
82
|
}
|
|
85
83
|
|
|
86
|
-
#startFailsafeTimer(
|
|
87
|
-
return Time.getTimer("Failsafe expiration",
|
|
84
|
+
#startFailsafeTimer(expiry: Duration) {
|
|
85
|
+
return Time.getTimer("Failsafe expiration", expiry, () =>
|
|
88
86
|
this.expire().catch(e => logger.error("Error during failsafe expiration", e)),
|
|
89
87
|
).start();
|
|
90
88
|
}
|
package/src/common/Scanner.ts
CHANGED
|
@@ -4,7 +4,16 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
BasicSet,
|
|
9
|
+
ChannelType,
|
|
10
|
+
Duration,
|
|
11
|
+
Environment,
|
|
12
|
+
Environmental,
|
|
13
|
+
Lifespan,
|
|
14
|
+
ServerAddress,
|
|
15
|
+
ServerAddressIp,
|
|
16
|
+
} from "#general";
|
|
8
17
|
import { DiscoveryCapabilitiesBitmap, NodeId, TypeFromPartialBitSchema, VendorId } from "#types";
|
|
9
18
|
import { Fabric } from "../fabric/Fabric.js";
|
|
10
19
|
|
|
@@ -32,13 +41,13 @@ export type DiscoveryData = {
|
|
|
32
41
|
PI?: string;
|
|
33
42
|
|
|
34
43
|
/** Sleep Idle Interval */
|
|
35
|
-
SII?:
|
|
44
|
+
SII?: Duration;
|
|
36
45
|
|
|
37
46
|
/** Sleep Active Interval */
|
|
38
|
-
SAI?:
|
|
47
|
+
SAI?: Duration;
|
|
39
48
|
|
|
40
49
|
/** Session active threshold */
|
|
41
|
-
SAT?:
|
|
50
|
+
SAT?: Duration;
|
|
42
51
|
|
|
43
52
|
/** TCP supported */
|
|
44
53
|
T?: number; // SupportedTransportsBitmap but comes in as number, so converted on usage
|
|
@@ -116,7 +125,7 @@ export interface Scanner {
|
|
|
116
125
|
findOperationalDevice(
|
|
117
126
|
fabric: Fabric,
|
|
118
127
|
nodeId: NodeId,
|
|
119
|
-
|
|
128
|
+
timeout?: Duration,
|
|
120
129
|
ignoreExistingRecords?: boolean,
|
|
121
130
|
): Promise<OperationalDevice | undefined>;
|
|
122
131
|
|
|
@@ -132,7 +141,7 @@ export interface Scanner {
|
|
|
132
141
|
*/
|
|
133
142
|
findCommissionableDevices(
|
|
134
143
|
identifier: CommissionableDeviceIdentifiers,
|
|
135
|
-
|
|
144
|
+
timeout?: Duration,
|
|
136
145
|
ignoreExistingRecords?: boolean,
|
|
137
146
|
): Promise<CommissionableDevice[]>;
|
|
138
147
|
|
|
@@ -144,7 +153,7 @@ export interface Scanner {
|
|
|
144
153
|
findCommissionableDevicesContinuously(
|
|
145
154
|
identifier: CommissionableDeviceIdentifiers,
|
|
146
155
|
callback: (device: CommissionableDevice) => void,
|
|
147
|
-
|
|
156
|
+
timeout?: Duration,
|
|
148
157
|
cancelSignal?: Promise<void>,
|
|
149
158
|
): Promise<CommissionableDevice[]>;
|
|
150
159
|
|
|
@@ -277,7 +277,7 @@ export class OccurrenceManager {
|
|
|
277
277
|
|
|
278
278
|
add(occurrence: Occurrence): MaybePromise<NumberedOccurrence> {
|
|
279
279
|
return MaybePromise.then(this.#store.add(occurrence), entry => {
|
|
280
|
-
logger.debug(`Recorded event #${entry.number}
|
|
280
|
+
logger.debug(`Recorded event #${entry.number}`, Diagnostic.dict(occurrence));
|
|
281
281
|
this.#occurrences.push(entry);
|
|
282
282
|
if (this.#occurrences.length > this.#bufferConfig.maxEventAllowance) {
|
|
283
283
|
this.#startCull();
|
|
@@ -96,7 +96,7 @@ export class FabricGroups {
|
|
|
96
96
|
|
|
97
97
|
/*
|
|
98
98
|
TODO for Controller to generate new epochs
|
|
99
|
-
addGroupEpoch(groupKeySetId: number, startTimeMs = Time.nowMs
|
|
99
|
+
addGroupEpoch(groupKeySetId: number, startTimeMs = Time.nowMs) {
|
|
100
100
|
// TODO for Controller to generate new epochs
|
|
101
101
|
const epochKey = Crypto.getRandomData(CRYPTO_SYMMETRIC_KEY_LENGTH);
|
|
102
102
|
const operationalEpochKey = Crypto.hkdf(epochKey, this.#fabric.operationalId, GROUP_SECURITY_INFO);
|