@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
@@ -1,451 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- import {
8
- AAAARecord,
9
- ARecord,
10
- BasicSet,
11
- Bytes,
12
- Crypto,
13
- Diagnostic,
14
- DnsRecord,
15
- ImplementationError,
16
- Logger,
17
- MatterAggregateError,
18
- Network,
19
- PtrRecord,
20
- SrvRecord,
21
- TxtRecord,
22
- isIPv4,
23
- isIPv6,
24
- } from "#general";
25
- import { FabricIndex, NodeId, TypeFromPartialBitSchema } from "#types";
26
- import {
27
- CommissionerInstanceData,
28
- CommissioningModeInstanceData,
29
- OperationalInstanceData,
30
- PairingHintBitmap,
31
- PairingHintBitmapSchema,
32
- } from "../common/InstanceBroadcaster.js";
33
- import { Fabric } from "../fabric/Fabric.js";
34
- import {
35
- SESSION_ACTIVE_INTERVAL_MS,
36
- SESSION_ACTIVE_THRESHOLD_MS,
37
- SESSION_IDLE_INTERVAL_MS,
38
- } from "../session/Session.js";
39
- import {
40
- MATTER_COMMISSIONER_SERVICE_QNAME,
41
- MATTER_COMMISSION_SERVICE_QNAME,
42
- MATTER_SERVICE_QNAME,
43
- SERVICE_DISCOVERY_QNAME,
44
- getCommissioningModeQname,
45
- getDeviceInstanceQname,
46
- getDeviceMatterQname,
47
- getDeviceTypeQname,
48
- getFabricQname,
49
- getLongDiscriminatorQname,
50
- getShortDiscriminatorQname,
51
- getVendorQname,
52
- } from "./MdnsConsts.js";
53
- import { MdnsInstanceBroadcaster } from "./MdnsInstanceBroadcaster.js";
54
- import { AnnouncementType, MdnsServer } from "./MdnsServer.js";
55
-
56
- const logger = Logger.get("MdnsBroadcaster");
57
-
58
- //const TCP_SUPPORTED = 0;
59
- //const ICD_SUPPORTED = 0; // TODO: Implement ICD later
60
- const DEFAULT_PAIRING_HINT = {
61
- powerCycle: true,
62
- deviceManual: true,
63
- };
64
-
65
- /**
66
- * This class is handing MDNS Announcements for multiple instances/devices
67
- */
68
- export class MdnsBroadcaster {
69
- readonly #activeCommissioningAnnouncements = new Set<number>();
70
- readonly #activeOperationalAnnouncements = new Map<number, { fabricIndex: FabricIndex; forInstance: string }[]>();
71
- readonly #crypto: Crypto;
72
- readonly #network: Network;
73
- readonly #mdnsServer: MdnsServer;
74
- readonly #enableIpv4?: boolean;
75
- readonly #instances = new BasicSet<MdnsInstanceBroadcaster>();
76
-
77
- static async create(
78
- crypto: Crypto,
79
- network: Network,
80
- options?: { enableIpv4?: boolean; multicastInterface?: string },
81
- ) {
82
- const { enableIpv4, multicastInterface } = options ?? {};
83
- return new MdnsBroadcaster(
84
- crypto,
85
- network,
86
- await MdnsServer.create(network, { enableIpv4, netInterface: multicastInterface }),
87
- enableIpv4,
88
- );
89
- }
90
-
91
- constructor(crypto: Crypto, network: Network, mdnsServer: MdnsServer, enableIpv4?: boolean) {
92
- this.#crypto = crypto;
93
- this.#network = network;
94
- this.#mdnsServer = mdnsServer;
95
- this.#enableIpv4 = enableIpv4;
96
- }
97
-
98
- createInstanceBroadcaster(port: number) {
99
- const instance = new MdnsInstanceBroadcaster(port, this, () => {
100
- this.#instances.delete(instance);
101
- });
102
- this.#instances.add(instance);
103
-
104
- return instance;
105
- }
106
-
107
- #validateCommissioningData(data: CommissioningModeInstanceData) {
108
- const { sessionIdleInterval, sessionActiveInterval, sessionActiveThreshold } = data;
109
-
110
- if (sessionIdleInterval !== undefined && sessionIdleInterval > 3_600_000) {
111
- throw new ImplementationError("Session Idle Interval must be less than 1 hour");
112
- }
113
- if (sessionActiveInterval !== undefined && sessionActiveInterval > 3_600_000) {
114
- throw new ImplementationError("Session Active Interval must be less than 1 hour");
115
- }
116
- if (sessionActiveThreshold !== undefined && sessionActiveThreshold > 65_535) {
117
- throw new ImplementationError("Session Active Threshold must be less than 65535 seconds");
118
- }
119
- }
120
-
121
- #validatePairingInstructions(
122
- pairingHint: TypeFromPartialBitSchema<typeof PairingHintBitmap>,
123
- pairingInstructions: string,
124
- ) {
125
- const needsInstructions = [
126
- "customInstruction",
127
- "pressRestButtonForNumberOfSeconds",
128
- "pressResetButtonUntilLightBlinks",
129
- "pressResetButtonForNumberOfSecondsWithApplicationOfPower",
130
- "pressResetButtonUntilLightBlinksWithApplicationOfPower",
131
- "pressResetButtonNumberOfTimes",
132
- "pressSetupButtonForNumberOfSeconds",
133
- "pressSetupButtonUntilLightBlinks",
134
- "pressSetupButtonForNumberOfSecondsWithApplicationOfPower",
135
- "pressSetupButtonUntilLightBlinksWithApplicationOfPower",
136
- "pressSetupButtonNumberOfTimes",
137
- ].find(hint => (pairingHint as any)[hint] === true);
138
- if (needsInstructions && pairingInstructions.length === 0) {
139
- throw new ImplementationError(
140
- `Pairing instructions required for Pairing Hint of type "${needsInstructions}"`,
141
- );
142
- }
143
- }
144
-
145
- #getIpRecords(hostname: string, ips: string[]) {
146
- const records = new Array<DnsRecord<any>>();
147
- ips.forEach(ip => {
148
- if (isIPv6(ip)) {
149
- records.push(AAAARecord(hostname, ip));
150
- } else if (isIPv4(ip)) {
151
- if (this.#enableIpv4) {
152
- records.push(ARecord(hostname, ip));
153
- }
154
- } else {
155
- logger.warn(`Unknown IP address type: ${ip}`);
156
- }
157
- });
158
- return records;
159
- }
160
-
161
- /** Set the Broadcaster data to announce a device ready for commissioning in a special mode */
162
- async setCommissionMode(
163
- announcedNetPort: number,
164
- mode: number,
165
- commissioningModeData: CommissioningModeInstanceData,
166
- ) {
167
- this.#validateCommissioningData(commissioningModeData); // Throws error if invalid!
168
-
169
- const {
170
- name: deviceName,
171
- deviceType,
172
- vendorId,
173
- productId,
174
- discriminator,
175
- sessionIdleInterval = SESSION_IDLE_INTERVAL_MS,
176
- sessionActiveInterval = SESSION_ACTIVE_INTERVAL_MS,
177
- sessionActiveThreshold = SESSION_ACTIVE_THRESHOLD_MS,
178
- pairingHint = DEFAULT_PAIRING_HINT,
179
- pairingInstructions = "",
180
- } = commissioningModeData;
181
- this.#validatePairingInstructions(pairingHint, pairingInstructions); // Throws error if invalid!
182
-
183
- // When doing a commission announcement, we need to expire any previous commissioning announcements
184
- await this.expireCommissioningAnnouncement(announcedNetPort);
185
-
186
- logger.debug(
187
- `Announce commissioning mode ${mode} ${deviceName} ${deviceType} ${vendorId} ${productId} ${discriminator} ${announcedNetPort}`,
188
- );
189
- this.#activeCommissioningAnnouncements.add(announcedNetPort);
190
-
191
- const shortDiscriminator = (discriminator >> 8) & 0x0f;
192
- const instanceId = Bytes.toHex(this.#crypto.randomBytes(8)).toUpperCase();
193
- const vendorQname = getVendorQname(vendorId);
194
- const deviceTypeQname = getDeviceTypeQname(deviceType);
195
- const shortDiscriminatorQname = getShortDiscriminatorQname(shortDiscriminator);
196
- const longDiscriminatorQname = getLongDiscriminatorQname(discriminator);
197
- const commissionModeQname = getCommissioningModeQname();
198
- const deviceQname = getDeviceInstanceQname(instanceId);
199
-
200
- await this.#mdnsServer.setRecordsGenerator(
201
- announcedNetPort,
202
- AnnouncementType.Commissionable,
203
- async netInterface => {
204
- const ipMac = await this.#network.getIpMac(netInterface);
205
-
206
- if (ipMac === undefined) return [];
207
- const { mac, ipV4, ipV6 } = ipMac;
208
- const hostname = mac.replace(/:/g, "").toUpperCase() + "0000.local";
209
-
210
- logger.debug(
211
- "Announcement Generator: Commission mode ",
212
- Diagnostic.dict({
213
- mode,
214
- qname: deviceQname,
215
- port: announcedNetPort,
216
- interface: netInterface,
217
- }),
218
- );
219
-
220
- const records = [
221
- PtrRecord(SERVICE_DISCOVERY_QNAME, MATTER_COMMISSION_SERVICE_QNAME),
222
- PtrRecord(SERVICE_DISCOVERY_QNAME, vendorQname),
223
- PtrRecord(SERVICE_DISCOVERY_QNAME, deviceTypeQname),
224
- PtrRecord(SERVICE_DISCOVERY_QNAME, shortDiscriminatorQname),
225
- PtrRecord(SERVICE_DISCOVERY_QNAME, longDiscriminatorQname),
226
- PtrRecord(SERVICE_DISCOVERY_QNAME, commissionModeQname),
227
- PtrRecord(MATTER_COMMISSION_SERVICE_QNAME, deviceQname),
228
- PtrRecord(vendorQname, deviceQname),
229
- PtrRecord(deviceTypeQname, deviceQname),
230
- PtrRecord(shortDiscriminatorQname, deviceQname),
231
- PtrRecord(longDiscriminatorQname, deviceQname),
232
- PtrRecord(commissionModeQname, deviceQname),
233
- SrvRecord(deviceQname, { priority: 0, weight: 0, port: announcedNetPort, target: hostname }),
234
- TxtRecord(deviceQname, [
235
- `VP=${vendorId}+${productId}` /* Vendor / Product */,
236
- `DT=${deviceType}` /* Device Type */,
237
- `DN=${deviceName}` /* Device Name */,
238
- `SII=${sessionIdleInterval}` /* Session Idle Interval */,
239
- `SAI=${sessionActiveInterval}` /* Session Active Interval */,
240
- `SAT=${sessionActiveThreshold}` /* Session Active Threshold */,
241
- //`T=${TCP_SUPPORTED}` /* TODO TCP not supported */,
242
- `D=${discriminator}` /* Discriminator */,
243
- `CM=${mode}` /* Commission Mode */,
244
- `PH=${PairingHintBitmapSchema.encode(pairingHint)}` /* Pairing Hint */,
245
- `PI=${pairingInstructions}` /* Pairing Instruction */,
246
- //`ICD=${ICD_SUPPORTED}` /* ICD not supported */,
247
- ]),
248
- ];
249
- records.push(...this.#getIpRecords(hostname, [...ipV6, ...ipV4]));
250
- return records;
251
- },
252
- );
253
- }
254
-
255
- /** Set the Broadcaster Data to announce a device for operative discovery (aka "already paired") */
256
- async setFabrics(
257
- announcedNetPort: number,
258
- fabrics: Fabric[],
259
- {
260
- sessionIdleInterval = SESSION_IDLE_INTERVAL_MS,
261
- sessionActiveInterval = SESSION_ACTIVE_INTERVAL_MS,
262
- sessionActiveThreshold = SESSION_ACTIVE_THRESHOLD_MS,
263
- }: OperationalInstanceData = {},
264
- ) {
265
- const currentOperationalFabrics = this.#activeOperationalAnnouncements.get(announcedNetPort);
266
-
267
- this.#activeOperationalAnnouncements.set(
268
- announcedNetPort,
269
- fabrics.map(f => ({
270
- fabricIndex: f.fabricIndex,
271
- forInstance: getDeviceMatterQname(
272
- Bytes.toHex(f.operationalId).toUpperCase(),
273
- NodeId.toHexString(f.nodeId),
274
- ),
275
- })),
276
- );
277
-
278
- const expires = new Array<Promise<void>>();
279
-
280
- if (currentOperationalFabrics !== undefined) {
281
- const fabricIndexesSet = new Set(fabrics.map(f => f.fabricIndex));
282
-
283
- // Expire Fabric announcements for instances that got removed
284
- for (const { fabricIndex, forInstance } of currentOperationalFabrics) {
285
- if (!fabricIndexesSet.has(fabricIndex)) {
286
- expires.push(
287
- this.#mdnsServer.expireAnnouncements({
288
- announcedNetPort,
289
- type: AnnouncementType.Operative,
290
- forInstance,
291
- }),
292
- );
293
- }
294
- }
295
- }
296
-
297
- await this.#mdnsServer.setRecordsGenerator(announcedNetPort, AnnouncementType.Operative, async netInterface => {
298
- const ipMac = await this.#network.getIpMac(netInterface);
299
- if (ipMac === undefined) return [];
300
- const { mac, ipV4, ipV6 } = ipMac;
301
- const hostname = mac.replace(/:/g, "").toUpperCase() + "0000.local";
302
-
303
- const records: DnsRecord<any>[] = [PtrRecord(SERVICE_DISCOVERY_QNAME, MATTER_SERVICE_QNAME)];
304
- fabrics.forEach(fabric => {
305
- const { operationalId, nodeId } = fabric;
306
- const operationalIdString = Bytes.toHex(operationalId).toUpperCase();
307
- const fabricQname = getFabricQname(operationalIdString);
308
- const deviceMatterQname = getDeviceMatterQname(operationalIdString, NodeId.toHexString(nodeId));
309
-
310
- logger.debug(
311
- "Announcement Generator: Fabric",
312
- Diagnostic.dict({
313
- id: `${operationalIdString}-${NodeId.toHexString(nodeId)}`,
314
- qname: deviceMatterQname,
315
- port: announcedNetPort,
316
- interface: netInterface,
317
- }),
318
- );
319
- const fabricRecords = [
320
- PtrRecord(SERVICE_DISCOVERY_QNAME, fabricQname, deviceMatterQname),
321
- PtrRecord(MATTER_SERVICE_QNAME, deviceMatterQname, deviceMatterQname),
322
- PtrRecord(fabricQname, deviceMatterQname, deviceMatterQname),
323
- SrvRecord(
324
- deviceMatterQname,
325
- { priority: 0, weight: 0, port: announcedNetPort, target: hostname },
326
- deviceMatterQname,
327
- ),
328
- TxtRecord(
329
- deviceMatterQname,
330
- [
331
- `SII=${sessionIdleInterval}` /* Session Idle Interval */,
332
- `SAI=${sessionActiveInterval}` /* Session Active Interval */,
333
- `SAT=${sessionActiveThreshold}` /* Session Active Threshold */,
334
- //`T=${TCP_SUPPORTED}` /* TODO TCP not supported */,
335
- //`ICD=${ICD_SUPPORTED}` /* ICD not supported */,
336
- ],
337
- deviceMatterQname,
338
- ),
339
- ];
340
- records.push(...fabricRecords);
341
- });
342
- records.push(...this.#getIpRecords(hostname, [...ipV6, ...ipV4]));
343
- return records;
344
- });
345
-
346
- await MatterAggregateError.allSettled(expires);
347
- }
348
-
349
- /** Set the Broadcaster data to announce a Commissioner (aka Commissioner discovery) */
350
- async setCommissionerInfo(
351
- announcedNetPort: number,
352
- {
353
- deviceName,
354
- deviceType,
355
- vendorId,
356
- productId,
357
- sessionIdleInterval = SESSION_IDLE_INTERVAL_MS,
358
- sessionActiveInterval = SESSION_ACTIVE_INTERVAL_MS,
359
- sessionActiveThreshold = SESSION_ACTIVE_THRESHOLD_MS,
360
- }: CommissionerInstanceData,
361
- ) {
362
- logger.debug(
363
- "Announcement: Commissioner",
364
- Diagnostic.dict({
365
- port: announcedNetPort,
366
- deviceType,
367
- }),
368
- );
369
-
370
- const instanceId = Bytes.toHex(this.#crypto.randomBytes(8)).toUpperCase();
371
- const deviceTypeQname = `_T${deviceType}._sub.${MATTER_COMMISSIONER_SERVICE_QNAME}`;
372
- const vendorQname = `_V${vendorId}._sub.${MATTER_COMMISSIONER_SERVICE_QNAME}`;
373
- const deviceQname = `${instanceId}.${MATTER_COMMISSIONER_SERVICE_QNAME}`;
374
-
375
- this.#activeCommissioningAnnouncements.add(announcedNetPort);
376
-
377
- await this.#mdnsServer.setRecordsGenerator(
378
- announcedNetPort,
379
- AnnouncementType.Commissionable,
380
- async netInterface => {
381
- const ipMac = await this.#network.getIpMac(netInterface);
382
- if (ipMac === undefined) return [];
383
- const { mac, ipV4, ipV6 } = ipMac;
384
- const hostname = mac.replace(/:/g, "").toUpperCase() + "0000.local";
385
- const records = [
386
- PtrRecord(SERVICE_DISCOVERY_QNAME, MATTER_COMMISSIONER_SERVICE_QNAME),
387
- PtrRecord(MATTER_COMMISSIONER_SERVICE_QNAME, vendorQname),
388
- PtrRecord(vendorQname, deviceQname),
389
- SrvRecord(deviceQname, { priority: 0, weight: 0, port: announcedNetPort, target: hostname }),
390
- TxtRecord(deviceQname, [
391
- `VP=${vendorId}+${productId}` /* Vendor / Product */,
392
- `DT=${deviceType}` /* Device Type */,
393
- `DN=${deviceName}` /* Device Name */,
394
- `SII=${sessionIdleInterval}` /* Session Idle Interval */,
395
- `SAI=${sessionActiveInterval}` /* Session Active Interval */,
396
- `SAT=${sessionActiveThreshold}` /* Session Active Threshold */,
397
- //`T=${TCP_SUPPORTED}` /* TODO TCP not supported */,
398
- //`ICD=${ICD_SUPPORTED}` /* ICD not supported */,
399
- ]),
400
- ];
401
- if (deviceType !== undefined) {
402
- records.push(PtrRecord(SERVICE_DISCOVERY_QNAME, deviceTypeQname));
403
- records.push(PtrRecord(deviceTypeQname, deviceQname));
404
- }
405
-
406
- records.push(...this.#getIpRecords(hostname, [...ipV6, ...ipV4]));
407
- return records;
408
- },
409
- );
410
- }
411
-
412
- async announce(announcementPort: number) {
413
- this.#mdnsServer.announce(announcementPort).catch(error => logger.error(error));
414
- }
415
-
416
- async expireFabricAnnouncement(announcedNetPort: number) {
417
- if (this.#activeOperationalAnnouncements.has(announcedNetPort)) {
418
- await this.#mdnsServer.expireAnnouncements({ announcedNetPort, type: AnnouncementType.Operative });
419
- this.#activeOperationalAnnouncements.delete(announcedNetPort);
420
- }
421
- }
422
-
423
- async expireCommissioningAnnouncement(announcedNetPort: number) {
424
- if (this.#activeCommissioningAnnouncements.has(announcedNetPort)) {
425
- await this.#mdnsServer.expireAnnouncements({ announcedNetPort, type: AnnouncementType.Commissionable });
426
- this.#activeCommissioningAnnouncements.delete(announcedNetPort);
427
- }
428
- }
429
-
430
- async expireAllAnnouncements(announcedNetPort: number) {
431
- if (
432
- !this.#activeCommissioningAnnouncements.has(announcedNetPort) &&
433
- !this.#activeOperationalAnnouncements.has(announcedNetPort)
434
- )
435
- return;
436
- await this.#mdnsServer.expireAnnouncements({ announcedNetPort });
437
- this.#activeCommissioningAnnouncements.delete(announcedNetPort);
438
- this.#activeOperationalAnnouncements.delete(announcedNetPort);
439
- }
440
-
441
- async close() {
442
- while (this.#instances.size) {
443
- await this.#instances.deleted;
444
- }
445
-
446
- await this.#mdnsServer.expireAnnouncements();
447
- this.#activeCommissioningAnnouncements.clear();
448
- this.#activeOperationalAnnouncements.clear();
449
- await this.#mdnsServer.close();
450
- }
451
- }
@@ -1,88 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- import { ImplementationError } from "#general";
8
- import {
9
- CommissionerInstanceData,
10
- CommissioningModeInstanceData,
11
- InstanceBroadcaster,
12
- } from "../common/InstanceBroadcaster.js";
13
- import { Fabric } from "../fabric/Fabric.js";
14
- import type { MdnsBroadcaster } from "./MdnsBroadcaster.js";
15
-
16
- /**
17
- * This class is handing MDNS Announcements for one instance of a device aka "port".
18
- *
19
- * Obtain an instance via {@link MdnsBroadcaster.createInstanceBroadcaster}.
20
- */
21
- export class MdnsInstanceBroadcaster implements InstanceBroadcaster {
22
- readonly #instancePort: number;
23
- readonly #mdnsBroadcaster: MdnsBroadcaster;
24
- readonly #onclose: () => void;
25
- #isClosed = false;
26
-
27
- constructor(instancePort: number, mdnsBroadcaster: MdnsBroadcaster, onclose: () => void) {
28
- this.#instancePort = instancePort;
29
- this.#mdnsBroadcaster = mdnsBroadcaster;
30
- this.#onclose = onclose;
31
- }
32
-
33
- async close() {
34
- if (this.#isClosed) {
35
- return;
36
- }
37
- this.#isClosed = true;
38
-
39
- await this.#mdnsBroadcaster.expireAllAnnouncements(this.#instancePort);
40
- this.#onclose();
41
- }
42
-
43
- async setCommissionMode(mode: number, deviceData: CommissioningModeInstanceData) {
44
- this.#assertOpen();
45
- await this.#mdnsBroadcaster.setCommissionMode(this.#instancePort, mode, deviceData);
46
- }
47
-
48
- /** Set the Broadcaster Data to announce a device for operative discovery (aka "already paired") */
49
- async setFabrics(fabrics: Fabric[], expireCommissioningAnnouncements = false) {
50
- this.#assertOpen();
51
- if (expireCommissioningAnnouncements) {
52
- await this.#mdnsBroadcaster.expireCommissioningAnnouncement(this.#instancePort);
53
- }
54
- await this.#mdnsBroadcaster.setFabrics(this.#instancePort, fabrics);
55
- }
56
-
57
- /** Set the Broadcaster data to announce a Commissioner (aka Commissioner discovery) */
58
- async setCommissionerInfo(commissionerData: CommissionerInstanceData) {
59
- this.#assertOpen();
60
- await this.#mdnsBroadcaster.setCommissionerInfo(this.#instancePort, commissionerData);
61
- }
62
-
63
- async announce() {
64
- this.#assertOpen();
65
- await this.#mdnsBroadcaster.announce(this.#instancePort);
66
- }
67
-
68
- async expireFabricAnnouncement() {
69
- this.#assertOpen();
70
- await this.#mdnsBroadcaster.expireFabricAnnouncement(this.#instancePort);
71
- }
72
-
73
- async expireCommissioningAnnouncement() {
74
- this.#assertOpen();
75
- await this.#mdnsBroadcaster.expireCommissioningAnnouncement(this.#instancePort);
76
- }
77
-
78
- async expireAllAnnouncements() {
79
- this.#assertOpen();
80
- await this.#mdnsBroadcaster.expireAllAnnouncements(this.#instancePort);
81
- }
82
-
83
- #assertOpen() {
84
- if (this.#isClosed) {
85
- throw new ImplementationError("Illegal operation on closed MdnsInstanceBroadcaster");
86
- }
87
- }
88
- }