Skip to content

Commit a317532

Browse files
Coimbra1984Markus Proeller
andauthored
Add a method to unregister advertisement (#50)
Co-authored-by: Markus Proeller <markus.proeller@lytentec.com>
1 parent 2710a1d commit a317532

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

bluez_peripheral/advert.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ def __init__(
104104
self._duration = duration
105105
self.releaseCallback = releaseCallback
106106

107+
self._exportBus: Optional[MessageBus] = None
108+
self._exportPath: Optional[str] = None
109+
self._adapter: Optional[Adapter] = None
110+
107111
super().__init__(self._INTERFACE)
108112

109113
async def register(
@@ -135,10 +139,25 @@ async def register(
135139
if adapter is None:
136140
adapter = await Adapter.get_first(bus)
137141

142+
self._adapter = adapter
143+
138144
# Get the LEAdvertisingManager1 interface for the target adapter.
139145
interface = adapter._proxy.get_interface(self._MANAGER_INTERFACE)
140146
await interface.call_register_advertisement(path, {})
141147

148+
async def unregister(self):
149+
"""
150+
Unregister this advertisement from bluez to stop advertising.
151+
"""
152+
if not self._exportBus or not self._adapter or not self._exportPath:
153+
return
154+
155+
interface = self._adapter._proxy.get_interface(self._MANAGER_INTERFACE)
156+
157+
await interface.call_unregister_advertisement(self._exportPath)
158+
159+
self.Release()
160+
142161
@classmethod
143162
async def GetSupportedIncludes(cls, adapter: Adapter) -> AdvertisingIncludes:
144163
interface = adapter._proxy.get_interface(cls._MANAGER_INTERFACE)
@@ -154,6 +173,10 @@ async def GetSupportedIncludes(cls, adapter: Adapter) -> AdvertisingIncludes:
154173
def Release(self): # type: ignore
155174
self._exportBus.unexport(self._exportPath, self._INTERFACE)
156175

176+
self._exportBus = None
177+
self._adapter = None
178+
self._exportPath = None
179+
157180
if self.releaseCallback is not None:
158181
self.releaseCallback()
159182

0 commit comments

Comments
 (0)