mirror of
https://github.com/home-assistant/core.git
synced 2025-07-28 07:37:34 +00:00
Combine Bluetooth update coordinator subscriptions to reduce code duplication (#97503)
This commit is contained in:
parent
5c4e47c127
commit
37cdd51183
@ -41,8 +41,7 @@ class BasePassiveBluetoothCoordinator(ABC):
|
|||||||
self.logger = logger
|
self.logger = logger
|
||||||
self.address = address
|
self.address = address
|
||||||
self.connectable = connectable
|
self.connectable = connectable
|
||||||
self._cancel_track_unavailable: CALLBACK_TYPE | None = None
|
self._on_stop: list[CALLBACK_TYPE] = []
|
||||||
self._cancel_bluetooth_advertisements: CALLBACK_TYPE | None = None
|
|
||||||
self.mode = mode
|
self.mode = mode
|
||||||
self._last_unavailable_time = 0.0
|
self._last_unavailable_time = 0.0
|
||||||
self._last_name = address
|
self._last_name = address
|
||||||
@ -97,27 +96,31 @@ class BasePassiveBluetoothCoordinator(ABC):
|
|||||||
@callback
|
@callback
|
||||||
def _async_start(self) -> None:
|
def _async_start(self) -> None:
|
||||||
"""Start the callbacks."""
|
"""Start the callbacks."""
|
||||||
self._cancel_bluetooth_advertisements = async_register_callback(
|
self._on_stop.append(
|
||||||
self.hass,
|
async_register_callback(
|
||||||
self._async_handle_bluetooth_event,
|
self.hass,
|
||||||
BluetoothCallbackMatcher(
|
self._async_handle_bluetooth_event,
|
||||||
address=self.address, connectable=self.connectable
|
BluetoothCallbackMatcher(
|
||||||
),
|
address=self.address, connectable=self.connectable
|
||||||
self.mode,
|
),
|
||||||
|
self.mode,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
self._cancel_track_unavailable = async_track_unavailable(
|
self._on_stop.append(
|
||||||
self.hass, self._async_handle_unavailable, self.address, self.connectable
|
async_track_unavailable(
|
||||||
|
self.hass,
|
||||||
|
self._async_handle_unavailable,
|
||||||
|
self.address,
|
||||||
|
self.connectable,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _async_stop(self) -> None:
|
def _async_stop(self) -> None:
|
||||||
"""Stop the callbacks."""
|
"""Stop the callbacks."""
|
||||||
if self._cancel_bluetooth_advertisements is not None:
|
for unsub in self._on_stop:
|
||||||
self._cancel_bluetooth_advertisements()
|
unsub()
|
||||||
self._cancel_bluetooth_advertisements = None
|
self._on_stop.clear()
|
||||||
if self._cancel_track_unavailable is not None:
|
|
||||||
self._cancel_track_unavailable()
|
|
||||||
self._cancel_track_unavailable = None
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _async_handle_unavailable(
|
def _async_handle_unavailable(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user