File tree Expand file tree Collapse file tree 5 files changed +37
-36
lines changed
Expand file tree Collapse file tree 5 files changed +37
-36
lines changed Original file line number Diff line number Diff line change @@ -13,13 +13,13 @@ cdef bint TYPE_CHECKING
1313cdef class BaseHaScanner:
1414
1515 cdef public str adapter
16- cdef public object connectable
16+ cdef public bint connectable
1717 cdef public str source
1818 cdef public object connector
1919 cdef public unsigned int _connecting
2020 cdef public str name
2121 cdef public bint scanning
22- cdef public object _last_detection
22+ cdef public double _last_detection
2323 cdef public object _start_time
2424 cdef public object _cancel_watchdog
2525 cdef public object _loop
@@ -45,19 +45,20 @@ cdef class BaseHaRemoteScanner(BaseHaScanner):
4545 has_service_data = bint,
4646 has_service_uuids = bint,
4747 prev_details = dict ,
48+ service_info = BluetoothServiceInfoBleak,
4849 prev_service_info = BluetoothServiceInfoBleak
4950 )
5051 cpdef void _async_on_advertisement(
5152 self ,
52- object address,
53- object rssi,
53+ str address,
54+ int rssi,
5455 str local_name,
5556 list service_uuids,
5657 dict service_data,
5758 dict manufacturer_data,
5859 object tx_power,
5960 dict details,
60- object advertisement_monotonic_time
61+ double advertisement_monotonic_time
6162 )
6263
6364 @ cython.locals (now = float , timestamp = float , service_info = BluetoothServiceInfoBleak)
Original file line number Diff line number Diff line change @@ -423,20 +423,19 @@ def _async_on_advertisement(
423423 # pylint: disable-next=protected-access
424424 device ._rssi = rssi # deprecated, will be removed in newer bleak
425425
426- service_info = BluetoothServiceInfoBleak (
427- local_name or address ,
428- address ,
429- rssi ,
430- manufacturer_data ,
431- service_data ,
432- service_uuids ,
433- self .source ,
434- device ,
435- None ,
436- self .connectable ,
437- advertisement_monotonic_time ,
438- tx_power ,
439- )
426+ service_info = BluetoothServiceInfoBleak .__new__ (BluetoothServiceInfoBleak )
427+ service_info .name = local_name or address
428+ service_info .address = address
429+ service_info .rssi = rssi
430+ service_info .manufacturer_data = manufacturer_data
431+ service_info .service_data = service_data
432+ service_info .service_uuids = service_uuids
433+ service_info .source = self .source
434+ service_info .device = device
435+ service_info ._advertisement = None
436+ service_info .connectable = self .connectable
437+ service_info .time = advertisement_monotonic_time
438+ service_info .tx_power = tx_power
440439 self ._previous_service_info [address ] = service_info
441440 self ._manager .scanner_adv_received (service_info )
442441
Original file line number Diff line number Diff line change @@ -25,7 +25,7 @@ cdef class BluetoothServiceInfoBleak(BluetoothServiceInfo):
2525 """ BluetoothServiceInfo with bleak data."""
2626
2727 cdef public object device
28- cdef public bint connectable
2928 cdef public object _advertisement
29+ cdef public bint connectable
3030 cdef public double time
3131 cdef public object tx_power
Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ cdef object BLEDevice
1010
1111cdef bint TYPE_CHECKING
1212
13+ cdef object _NEW_SERVICE_INFO
1314
1415cdef class HaScanner(BaseHaScanner):
1516
@@ -21,6 +22,7 @@ cdef class HaScanner(BaseHaScanner):
2122 cdef public object _start_future
2223 cdef public object current_mode
2324
25+ @ cython.locals (service_info = BluetoothServiceInfoBleak)
2426 cpdef void _async_detection_callback(
2527 self ,
2628 object device,
Original file line number Diff line number Diff line change 1+ # cython: profile=True
12"""A local bleak scanner."""
23
34from __future__ import annotations
@@ -259,22 +260,20 @@ def _async_detection_callback(
259260 tx_power = advertisement_data .tx_power
260261 if tx_power is not None and type (tx_power ) is not int :
261262 tx_power = int (tx_power )
262- self ._manager .scanner_adv_received (
263- BluetoothServiceInfoBleak (
264- name ,
265- address ,
266- advertisement_data .rssi ,
267- manufacturer_data ,
268- service_data ,
269- service_uuids ,
270- self .source ,
271- device ,
272- advertisement_data ,
273- True ,
274- callback_time ,
275- tx_power ,
276- )
277- )
263+ service_info = BluetoothServiceInfoBleak .__new__ (BluetoothServiceInfoBleak )
264+ service_info .name = name
265+ service_info .address = address
266+ service_info .rssi = advertisement_data .rssi
267+ service_info .manufacturer_data = manufacturer_data
268+ service_info .service_data = service_data
269+ service_info .service_uuids = service_uuids
270+ service_info .source = self .source
271+ service_info .device = device
272+ service_info ._advertisement = advertisement_data
273+ service_info .connectable = True
274+ service_info .time = callback_time
275+ service_info .tx_power = tx_power
276+ self ._manager .scanner_adv_received (service_info )
278277
279278 async def async_start (self ) -> None :
280279 """Start bluetooth scanner."""
You can’t perform that action at this time.
0 commit comments