@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
@@ -3,63 +3,65 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { CommissioningMode } from "#common/InstanceBroadcaster.js";
6
+ import { Advertisement } from "#advertisement/Advertisement.js";
7
+ import { ServiceDescription } from "#advertisement/ServiceDescription.js";
7
8
  import { FabricManager } from "#fabric/FabricManager.js";
8
- import {
9
- AsyncObservable,
10
- Diagnostic,
11
- Environmental,
12
- Logger,
13
- MatterAggregateError,
14
- Mutex,
15
- ObserverGroup,
16
- Time
17
- } from "#general";
9
+ import { Environmental, MatterAggregateError, ObserverGroup } from "#general";
18
10
  import { SessionManager } from "#session/SessionManager.js";
19
- import { DEVICE_ANNOUNCEMENT_DURATION_MS, DEVICE_ANNOUNCEMENT_INTERVAL_MS } from "#types";
20
- const logger = Logger.get("DeviceAdvertiser");
21
11
  class DeviceAdvertiser {
22
12
  #context;
23
- #broadcasters = /* @__PURE__ */ new Set();
24
- #timedOut = AsyncObservable();
25
- #operationalModeEnabled = new AsyncObservable();
26
- #operationalModeEnded = new AsyncObservable();
13
+ #advertisers = /* @__PURE__ */ new Set();
27
14
  #observers = new ObserverGroup();
28
- #interval;
29
- #startTime = null;
15
+ #isOperational = false;
30
16
  #isClosing = false;
31
- #commissioningMode = CommissioningMode.NotCommissioning;
32
- // Currently we do not put much effort into synchronizing announcements as it probably isn't really necessary. But
33
- // this mutex prevents automated announcements from piling up and allows us to ensure announcements are complete on
34
- // close
35
- #mutex = new Mutex(this);
17
+ #commissioningService;
36
18
  constructor(context) {
37
19
  this.#context = context;
38
- this.#interval = Time.getPeriodicTimer(
39
- "Server node announcement",
40
- DEVICE_ANNOUNCEMENT_INTERVAL_MS,
41
- () => (
42
- // Announcement needs to await a previous announcement because otherwise in testing at least announcement
43
- // may crash if started simultaneously
44
- this.#mutex.run(this.advertise.bind(this))
45
- )
46
- );
47
- this.#observers.on(this.#context.fabrics.events.deleted, () => {
48
- if (this.#context.fabrics.length === 0) {
49
- this.#mutex.run(this.#exitOperationalMode.bind(this));
50
- } else {
51
- this.#mutex.run(() => this.advertise(true));
20
+ const { fabrics, sessions } = this.#context;
21
+ this.#observers.on(fabrics.events.added, (fabric) => {
22
+ if (!this.#isOperational) {
23
+ return;
52
24
  }
25
+ this.#advertiseFabric(fabric, "startup");
53
26
  });
54
- this.#observers.on(this.#context.sessions.resubmissionStarted, (session) => {
55
- logger.debug(`Resubmission started, re-announce node ${session?.nodeId}`);
56
- this.#mutex.run(() => this.advertise(true));
27
+ this.#observers.on(fabrics.events.deleted, (fabric) => {
28
+ Advertisement.cancelAll(this.#advertisements((ad) => ad.isOperational() && ad.description.fabric === fabric));
29
+ });
30
+ this.#observers.on(sessions.sessions.added, (session) => {
31
+ const fabricIndex = session.fabric?.fabricIndex;
32
+ const fabric = fabricIndex ? fabrics.findByIndex(fabricIndex) : void 0;
33
+ if (!fabric) {
34
+ return;
35
+ }
36
+ for (const advertiser of this.#advertisers) {
37
+ const ad = advertiser.advertisementForFabric(fabric);
38
+ if (ad) {
39
+ ad.serviceConnected();
40
+ }
41
+ }
42
+ });
43
+ this.#observers.on(sessions.sessions.deleted, (session) => {
44
+ const fabricIndex = session.fabric?.fabricIndex;
45
+ const fabric = fabricIndex ? fabrics.findByIndex(fabricIndex) : void 0;
46
+ if (fabric) {
47
+ if (fabric.hasSessionForPeer(session.peerNodeId)) {
48
+ return;
49
+ }
50
+ for (const advertiser of this.#advertisers) {
51
+ const ad = advertiser.advertisementForFabric(fabric);
52
+ if (ad) {
53
+ ad.serviceDisconnected();
54
+ }
55
+ }
56
+ return;
57
+ }
58
+ this.#startCommissioningAdvertisement();
57
59
  });
58
- this.#observers.on(this.#context.sessions.subscriptionsChanged, (_session, subscription) => {
59
- if (subscription.isCanceledByPeer) {
60
- logger.debug(`Subscription canceled by peer, re-announce`);
61
- this.#mutex.run(this.startAdvertising.bind(this));
60
+ this.#observers.on(sessions.retry, (session) => {
61
+ if (!session.isSecure || !session.fabric) {
62
+ return;
62
63
  }
64
+ this.#advertiseFabric(session.associatedFabric, "retransmit");
63
65
  });
64
66
  }
65
67
  toString() {
@@ -74,125 +76,115 @@ class DeviceAdvertiser {
74
76
  return instance;
75
77
  }
76
78
  /**
77
- * Emitted when the advertising window closes with no response.
79
+ * Advertise the device as commissionable.
78
80
  */
79
- get timedOut() {
80
- return this.#timedOut;
81
+ enterCommissioningMode(description) {
82
+ this.#commissioningService = description;
83
+ this.#startCommissioningAdvertisement();
81
84
  }
82
85
  /**
83
- * Emitted when the device stops advertising due to decommissioning.
86
+ * Begin automatic broadcast for commissioning if in commissionable mode.
84
87
  */
85
- get operationalModeEnded() {
86
- return this.#operationalModeEnded;
88
+ #startCommissioningAdvertisement() {
89
+ if (this.#isClosing) {
90
+ return;
91
+ }
92
+ if (this.#commissioningService === void 0) {
93
+ return;
94
+ }
95
+ for (const advertiser of this.#advertisers) {
96
+ advertiser.advertise(this.#commissioningService, "startup");
97
+ }
87
98
  }
88
99
  /**
89
- * Emitted when the device starts advertising in operational mode.
100
+ * Cease advertising the device as commissionable.
90
101
  */
91
- get operationalModeEnabled() {
92
- return this.#operationalModeEnabled;
93
- }
94
- async enterCommissioningMode(mode, deviceData) {
95
- this.#commissioningMode = mode;
96
- for (const broadcaster of this.#broadcasters) {
97
- await broadcaster.setCommissionMode(mode, deviceData);
98
- }
99
- await this.startAdvertising();
100
- }
101
- async exitCommissioningMode() {
102
- this.#commissioningMode = CommissioningMode.NotCommissioning;
103
- this.#interval.stop();
104
- this.#startTime = null;
105
- for (const broadcaster of this.#broadcasters) {
106
- await broadcaster.expireCommissioningAnnouncement();
102
+ exitCommissioningMode() {
103
+ if (!this.#commissioningService) {
104
+ return;
107
105
  }
106
+ this.#commissioningService = void 0;
107
+ return Advertisement.closeAll(this.#advertisements((ad) => ad.isCommissioning()));
108
108
  }
109
- async startAdvertising() {
110
- if (this.#isClosing) return;
111
- if (this.#interval.isRunning) {
112
- this.#interval.stop();
109
+ /**
110
+ * Advertise the device as operational.
111
+ */
112
+ enterOperationalMode() {
113
+ if (this.#isOperational) {
114
+ return;
113
115
  }
114
- this.#startTime = Time.nowMs();
115
- this.#interval.start();
116
- await this.advertise();
117
- }
118
- async advertise(once = false) {
119
- if (!once) {
120
- if (this.#startTime !== null && Time.nowMs() - this.#startTime > DEVICE_ANNOUNCEMENT_DURATION_MS) {
121
- logger.debug("Announcement duration reached, stop announcing");
122
- await this.#timedOut.emit();
123
- return;
124
- }
125
- if (this.#commissioningMode !== CommissioningMode.NotCommissioning) {
126
- for (const broadcaster of this.#broadcasters) {
127
- await broadcaster.announce();
128
- }
129
- return;
130
- }
116
+ this.#isOperational = true;
117
+ this.#startOperationalAdvertisement();
118
+ }
119
+ /**
120
+ * Begin automatic broadcast for fabrics if in operational mode.
121
+ */
122
+ #startOperationalAdvertisement() {
123
+ if (!this.#isOperational) {
124
+ return;
131
125
  }
132
- const fabrics = this.#context.fabrics;
133
- if (fabrics.length) {
134
- let fabricsWithoutSessions = 0;
135
- for (const fabric of fabrics) {
136
- const session = this.#context.sessions.getSessionForNode(fabric.addressOf(fabric.rootNodeId));
137
- if (session === void 0 || !session.isSecure || session.subscriptions.size === 0) {
138
- fabricsWithoutSessions++;
139
- logger.debug(
140
- "Announcing",
141
- Diagnostic.dict({ fabricIndex: fabric.fabricIndex, fabricId: fabric.fabricId })
142
- );
143
- }
144
- }
145
- for (const broadcaster of this.#broadcasters) {
146
- await broadcaster.setFabrics(fabrics.fabrics);
147
- if (fabricsWithoutSessions > 0 || this.#commissioningMode !== CommissioningMode.NotCommissioning) {
148
- await broadcaster.announce();
149
- }
126
+ const fabricsAdvertised = new Set(
127
+ this.#advertisements((ad) => ad.isOperational()).map(
128
+ (ad) => ad.description.fabric
129
+ )
130
+ );
131
+ for (const fabric of this.#context.fabrics) {
132
+ if (!fabricsAdvertised.has(fabric)) {
133
+ this.#advertiseFabric(fabric, "startup");
150
134
  }
151
- } else {
152
- await this.#exitOperationalMode();
153
- await this.#operationalModeEnded.emit();
154
135
  }
155
136
  }
156
- async advertiseFabrics(fabrics, expireCommissioningAnnouncement = false) {
157
- if (expireCommissioningAnnouncement) {
158
- await this.#operationalModeEnabled.emit();
159
- }
160
- for (const broadcaster of this.#broadcasters) {
161
- await broadcaster.setFabrics(fabrics, expireCommissioningAnnouncement);
162
- await broadcaster.announce();
137
+ /**
138
+ * Cease advertising the device as operational.
139
+ */
140
+ exitOperationalMode() {
141
+ if (!this.#isOperational) {
142
+ return;
163
143
  }
144
+ this.#isOperational = false;
145
+ Advertisement.cancelAll(this.#advertisements((ad) => ad.isOperational()));
164
146
  }
165
- async #exitOperationalMode() {
166
- for (const broadcaster of this.#broadcasters) {
167
- await broadcaster.expireFabricAnnouncement();
168
- }
147
+ /**
148
+ * Reset automatic advertisement.
149
+ *
150
+ * This is useful when there is a network change.
151
+ */
152
+ restartAdvertisement() {
153
+ this.#startCommissioningAdvertisement();
154
+ this.#startOperationalAdvertisement();
169
155
  }
170
156
  async close() {
171
157
  this.#isClosing = true;
172
- await this.#mutex;
173
158
  this.#observers.close();
174
- this.#interval.stop();
175
- await this.clearBroadcasters();
159
+ await this.clearAdvertisers();
160
+ }
161
+ hasAdvertiser(advertiser) {
162
+ return this.#advertisers.has(advertiser);
163
+ }
164
+ addAdvertiser(advertiser) {
165
+ this.#advertisers.add(advertiser);
176
166
  }
177
- hasBroadcaster(broadcaster) {
178
- return this.#broadcasters.has(broadcaster);
167
+ async deleteAdvertiser(advertiser) {
168
+ this.#advertisers.delete(advertiser);
169
+ await advertiser.close();
179
170
  }
180
- addBroadcaster(broadcaster) {
181
- this.#broadcasters.add(broadcaster);
171
+ async clearAdvertisers() {
172
+ const advertisers = [...this.#advertisers];
173
+ this.#advertisers.clear();
174
+ await MatterAggregateError.allSettled(advertisers.map((advertiser) => advertiser.close()));
182
175
  }
183
- async deleteBroadcaster(broadcaster) {
184
- if (this.#broadcasters.delete(broadcaster)) {
185
- await broadcaster.expireAllAnnouncements();
176
+ #advertiseFabric(fabric, event) {
177
+ if (this.#isClosing) {
178
+ return;
179
+ }
180
+ for (const advertiser of this.#advertisers) {
181
+ advertiser.advertise(ServiceDescription.Operational({ fabric }), event);
186
182
  }
187
183
  }
188
- async clearBroadcasters() {
189
- const broadcasters = [...this.#broadcasters];
190
- const closed = MatterAggregateError.allSettled(
191
- broadcasters.map((b) => b.close()),
192
- "Error closing broadcasters"
193
- ).catch((error) => logger.error(error));
194
- this.#broadcasters.clear();
195
- await closed;
184
+ #advertisements(predicate) {
185
+ return [...this.#advertisers].flatMap(
186
+ (advertiser) => predicate ? advertiser.filter(predicate) : [...advertiser.advertisements]
187
+ );
196
188
  }
197
189
  }
198
190
  export {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/protocol/DeviceAdvertiser.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -43,7 +43,6 @@ export declare class DeviceCommissioner {
43
43
  beginTimed(failsafeContext: FailsafeContext): void;
44
44
  get isFailsafeArmed(): boolean;
45
45
  assertFailsafeArmed(message?: string): void;
46
- reactivateAdvertiser(): void;
47
46
  endCommissioning(): Promise<void>;
48
47
  close(): Promise<void>;
49
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceCommissioner.d.ts","sourceRoot":"","sources":["../../../src/protocol/DeviceCommissioner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAEH,WAAW,EACX,aAAa,EAKb,YAAY,EAEf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAmC,MAAM,QAAQ,CAAC;AAE/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAIzD;;GAEG;AACH,8BAAsB,2BAA2B;IAC7C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC,aAAa,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACtC,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,mBAAmB,EAAE,2BAA2B,CAAC;CACpD;AAED;;;;;GAKG;AACH,qBAAa,kBAAkB;;gBAQf,OAAO,EAAE,yBAAyB;IA+C9C,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAY9C,IAAI,eAAe,oBAGlB;IAEK,0BAA0B,CAC5B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,UAAU,EACtB,wBAAwB,EAAE,MAAM,YAAY;IAgB1C,uBAAuB,CAAC,wBAAwB,CAAC,EAAE,MAAM,YAAY;IAoB3E,UAAU,CAAC,eAAe,EAAE,eAAe;IAsB3C,IAAI,eAAe,YAElB;IAED,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM;IAQpC,oBAAoB;IAmDd,gBAAgB;IAsBhB,KAAK;CAQd"}
1
+ {"version":3,"file":"DeviceCommissioner.d.ts","sourceRoot":"","sources":["../../../src/protocol/DeviceCommissioner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACH,WAAW,EACX,aAAa,EAKb,YAAY,EAIf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAqE,MAAM,QAAQ,CAAC;AAEjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAIzD;;GAEG;AACH,8BAAsB,2BAA2B;IAC7C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC,aAAa,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACtC,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,mBAAmB,EAAE,2BAA2B,CAAC;CACpD;AAED;;;;;GAKG;AACH,qBAAa,kBAAkB;;gBASf,OAAO,EAAE,yBAAyB;IAU9C,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAY9C,IAAI,eAAe,oBAGlB;IAEK,0BAA0B,CAC5B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,UAAU,EACtB,wBAAwB,EAAE,MAAM,YAAY;IAgB1C,uBAAuB,CAAC,wBAAwB,CAAC,EAAE,MAAM,YAAY;IAoB3E,UAAU,CAAC,eAAe,EAAE,eAAe;IAY3C,IAAI,eAAe,YAElB;IAED,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM;IAmF9B,gBAAgB;IAsBhB,KAAK;CAkBd"}
@@ -3,22 +3,23 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { CommissioningMode } from "#advertisement/CommissioningMode.js";
7
+ import { ServiceDescription } from "#advertisement/ServiceDescription.js";
6
8
  import { AdministratorCommissioning } from "#clusters/administrator-commissioning";
7
- import { CommissioningMode } from "#common/InstanceBroadcaster.js";
8
9
  import { FabricManager } from "#fabric/FabricManager.js";
9
10
  import {
10
- Diagnostic,
11
11
  Environmental,
12
12
  InternalError,
13
13
  Lifecycle,
14
14
  Logger,
15
15
  MatterFlowError,
16
- ObserverGroup
16
+ ObserverGroup,
17
+ Time
17
18
  } from "#general";
18
19
  import { SecureChannelProtocol } from "#securechannel/SecureChannelProtocol.js";
19
20
  import { PaseServer } from "#session/pase/PaseServer.js";
20
21
  import { SessionManager } from "#session/SessionManager.js";
21
- import { StatusCode, StatusResponseError } from "#types";
22
+ import { STANDARD_COMMISSIONING_TIMEOUT_S, StatusCode, StatusResponseError } from "#types";
22
23
  import { DeviceAdvertiser } from "./DeviceAdvertiser.js";
23
24
  const logger = Logger.get("DeviceCommissioner");
24
25
  class CommissioningConfigProvider {
@@ -30,26 +31,13 @@ class DeviceCommissioner {
30
31
  #activeDiscriminator;
31
32
  #activeCommissioningEndCallback;
32
33
  #observers = new ObserverGroup(this);
34
+ #commissioningTimeout;
33
35
  constructor(context) {
34
36
  this.#context = context;
35
- this.#observers.on(this.#context.advertiser.timedOut, this.endCommissioning);
36
- this.#observers.on(this.#context.fabrics.events.deleted, async () => {
37
- if (this.#context.fabrics.length === 0 || this.#windowStatus !== AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {
38
- this.reactivateAdvertiser();
39
- }
40
- });
41
- this.#observers.on(this.#context.advertiser.operationalModeEnded, this.allowBasicCommissioning);
42
37
  this.#observers.on(this.#context.secureChannelProtocol.tooManyPaseErrors, async () => {
43
38
  logger.info("Maximum number of PASE pairing errors reached, canceling commissioning");
44
39
  await this.endCommissioning();
45
40
  });
46
- this.#observers.on(this.#context.sessions.sessions.deleted, (session) => {
47
- const currentFabricIndex = session.fabric?.fabricIndex;
48
- const existingSessionFabric = currentFabricIndex === void 0 ? void 0 : this.#context.fabrics.findByIndex(currentFabricIndex)?.fabricIndex;
49
- if (this.#context.fabrics.length > 0 || session.isPase || !existingSessionFabric) {
50
- this.#context.advertiser.startAdvertising().catch((error) => logger.warn(`Error while announcing`, error));
51
- }
52
- });
53
41
  }
54
42
  static [Environmental.create](env) {
55
43
  const instance = new DeviceCommissioner({
@@ -69,11 +57,11 @@ class DeviceCommissioner {
69
57
  async allowEnhancedCommissioning(discriminator, paseServer, commissioningEndCallback) {
70
58
  if (this.#windowStatus === AdministratorCommissioning.CommissioningWindowStatus.BasicWindowOpen) {
71
59
  throw new MatterFlowError(
72
- "Basic commissioning window is already open! Cannot set Enhanced commissioning mode."
60
+ "Basic commissioning window is already open! Cannot set enhanced commissioning mode."
73
61
  );
74
62
  }
75
63
  this.#context.secureChannelProtocol.setPaseCommissioner(paseServer);
76
- await this.#becomeCommissionable(
64
+ this.#becomeCommissionable(
77
65
  AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen,
78
66
  commissioningEndCallback,
79
67
  discriminator
@@ -82,7 +70,7 @@ class DeviceCommissioner {
82
70
  async allowBasicCommissioning(commissioningEndCallback) {
83
71
  if (this.#windowStatus === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen) {
84
72
  throw new MatterFlowError(
85
- "Enhanced commissioning window is already open! Cannot set Basic commissioning mode."
73
+ "Enhanced commissioning window is already open! Cannot set basic commissioning mode."
86
74
  );
87
75
  }
88
76
  this.#context.secureChannelProtocol.setPaseCommissioner(
@@ -91,20 +79,13 @@ class DeviceCommissioner {
91
79
  salt: this.#context.fabrics.crypto.randomBytes(32)
92
80
  })
93
81
  );
94
- await this.#becomeCommissionable(
82
+ this.#becomeCommissionable(
95
83
  AdministratorCommissioning.CommissioningWindowStatus.BasicWindowOpen,
96
84
  commissioningEndCallback
97
85
  );
98
86
  }
99
87
  beginTimed(failsafeContext) {
100
88
  this.#failsafeContext = failsafeContext;
101
- this.#context.fabrics.events.added.on((fabric) => {
102
- const fabrics = this.#context.fabrics.fabrics;
103
- this.#context.advertiser.advertiseFabrics(fabrics, true).catch(
104
- (error) => logger.warn(`Error sending Fabric announcement for Index ${fabric.fabricIndex}`, error)
105
- );
106
- logger.info("Announce done", Diagnostic.dict({ fabric: fabric.fabricId, fabricIndex: fabric.fabricIndex }));
107
- });
108
89
  failsafeContext.commissioned.on(async () => await this.endCommissioning());
109
90
  failsafeContext.construction.change.on((status) => {
110
91
  if (status === Lifecycle.Status.Destroyed) {
@@ -122,28 +103,39 @@ class DeviceCommissioner {
122
103
  StatusCode.FailsafeRequired
123
104
  );
124
105
  }
125
- reactivateAdvertiser() {
126
- if (this.#windowStatus === AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {
127
- return;
128
- }
129
- this.#enterCommissioningMode(this.#windowStatus, this.#activeDiscriminator).catch(
130
- (error) => logger.warn("Error sending announcement:", error)
131
- );
132
- }
133
- async #enterCommissioningMode(windowStatus, discriminator) {
106
+ #enterCommissioningMode(windowStatus, discriminator) {
107
+ this.#cancelTimeout();
134
108
  this.#windowStatus = windowStatus;
135
109
  const commissioningConfig = this.#context.commissioningConfig.values;
136
- await this.#context.advertiser.enterCommissioningMode(
137
- windowStatus === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen ? CommissioningMode.Enhanced : CommissioningMode.Basic,
138
- {
110
+ const advertisementWindowS = commissioningConfig.advertisementWindowS ?? STANDARD_COMMISSIONING_TIMEOUT_S;
111
+ const mode = windowStatus === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen ? CommissioningMode.Enhanced : CommissioningMode.Basic;
112
+ this.#context.advertiser.enterCommissioningMode(
113
+ ServiceDescription.Commissionable({
139
114
  ...commissioningConfig.productDescription,
115
+ mode,
140
116
  discriminator: discriminator ?? commissioningConfig.discriminator
141
- }
117
+ })
118
+ );
119
+ this.#commissioningTimeout = Time.getTimer(
120
+ "Commissioning timeout",
121
+ advertisementWindowS,
122
+ this.endCommissioning.bind(this)
142
123
  );
143
124
  }
144
- async #becomeCommissionable(windowStatus, activeCommissioningEndCallback, discriminator) {
125
+ #becomeCommissionable(windowStatus, activeCommissioningEndCallback, discriminator) {
126
+ if (this.#windowStatus !== AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {
127
+ if (this.#windowStatus !== windowStatus) {
128
+ throw new InternalError(
129
+ `Commissioning mode ${windowStatus} request but already in mode ${this.#windowStatus}`
130
+ );
131
+ }
132
+ if (this.#activeCommissioningEndCallback && this.#activeCommissioningEndCallback !== activeCommissioningEndCallback) {
133
+ throw new InternalError(`Already in commissioning mode with a different callback`);
134
+ }
135
+ }
145
136
  if (this.#windowStatus === windowStatus && (discriminator === void 0 || discriminator === this.#activeDiscriminator)) {
146
- return this.reactivateAdvertiser();
137
+ this.#enterCommissioningMode(this.#windowStatus, this.#activeDiscriminator);
138
+ return;
147
139
  }
148
140
  if (this.#windowStatus !== AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {
149
141
  throw new InternalError(`Commissioning window already open with different mode (${this.#windowStatus})!`);
@@ -153,13 +145,13 @@ class DeviceCommissioner {
153
145
  }
154
146
  this.#activeCommissioningEndCallback = activeCommissioningEndCallback;
155
147
  this.#activeDiscriminator = discriminator;
156
- await this.#enterCommissioningMode(windowStatus, discriminator);
148
+ this.#enterCommissioningMode(windowStatus, discriminator);
157
149
  }
158
150
  async endCommissioning() {
159
151
  if (this.#windowStatus === AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {
160
152
  return;
161
153
  }
162
- logger.debug("Commissioning mode ended, stop announcements.");
154
+ this.#cancelTimeout();
163
155
  this.#context.secureChannelProtocol.removePaseCommissioner();
164
156
  this.#windowStatus = AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen;
165
157
  if (this.#activeCommissioningEndCallback !== void 0) {
@@ -168,9 +160,10 @@ class DeviceCommissioner {
168
160
  await activeCommissioningEndCallback();
169
161
  }
170
162
  await this.#context.advertiser.exitCommissioningMode();
171
- logger.info("All commissioning announcements stopped");
163
+ logger.debug("No longer commissioning");
172
164
  }
173
165
  async close() {
166
+ this.#cancelTimeout();
174
167
  this.#observers.close();
175
168
  await this.endCommissioning();
176
169
  if (this.#failsafeContext) {
@@ -178,6 +171,13 @@ class DeviceCommissioner {
178
171
  this.#failsafeContext = void 0;
179
172
  }
180
173
  }
174
+ #cancelTimeout() {
175
+ if (!this.#commissioningTimeout) {
176
+ return;
177
+ }
178
+ this.#commissioningTimeout.stop();
179
+ this.#commissioningTimeout = void 0;
180
+ }
181
181
  }
182
182
  export {
183
183
  CommissioningConfigProvider,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/protocol/DeviceCommissioner.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -323,7 +323,7 @@ class ExchangeManager {
323
323
  return {
324
324
  channel,
325
325
  localSessionParameters: this.#sessionManager.sessionParameters,
326
- resubmissionStarted: () => this.#sessionManager.resubmissionStarted.emit(channel.session)
326
+ retry: (number) => this.#sessionManager.retry.emit(channel.session, number)
327
327
  };
328
328
  }
329
329
  #addListener(transportInterface) {