@matter/protocol 0.16.0-alpha.0-20250807-37b08c9bb → 0.16.0-alpha.0-20250810-5c91a95d2

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