@@ -62,6 +62,7 @@ def __init__(self, database: DeviceDatabase, server: LocalServer, bleak_mapping:
6262 self ._server = server
6363 self ._mapping = bleak_mapping
6464 self ._queues : dict [int , asyncio .Queue ] = {}
65+ self ._tasks : dict [int , asyncio .Task ] = {}
6566
6667 def notification_handler (self , _characteristic : BleakGATTCharacteristic , data : bytearray ):
6768 hdr , decr = CtypeBtGattFrame .decrypt (self ._db , None , bytes (data ))
@@ -140,6 +141,7 @@ async def create_connection(self, request: GatewayRequestConnectionRequest, dev:
140141
141142 # Queue no longer being handled
142143 self ._queues .pop (request .infuse_id )
144+ self ._tasks .pop (request .infuse_id )
143145 Console .log_info (f"{ dev } : Terminating connection" )
144146
145147 def datagram_received (self , data : bytes , addr : tuple [str | Any , int ]):
@@ -168,7 +170,7 @@ def datagram_received(self, data: bytes, addr: tuple[str | Any, int]):
168170 q = asyncio .Queue ()
169171 self ._queues [request .infuse_id ] = q
170172 # Create task to handle the connection
171- loop .create_task (self .create_connection (request , ble_dev , q ))
173+ self . _tasks [ request . infuse_id ] = loop .create_task (self .create_connection (request , ble_dev , q ))
172174
173175 def error_received (self , exc ):
174176 Console .log_error (f"Error received: { exc } " )
@@ -234,15 +236,14 @@ def simple_callback(self, device: BLEDevice, data: AdvertisementData):
234236
235237 async def async_bt_receiver (self ):
236238 loop = asyncio .get_event_loop ()
237- loop .create_task (self .server_handler ())
239+ handler = loop .create_task (self .server_handler ())
238240
239241 scanner = BleakScanner (self .simple_callback , [str (InfuseBluetoothUUID .SERVICE_UUID )], cb = dict (use_bdaddr = True ))
240242
241243 while True :
242244 Console .log_info ("Starting scanner" )
243245 async with scanner :
244- # Run the scanner forever
245- await asyncio .Future ()
246+ await handler
246247
247248 def sync_request_handler (self ):
248249 # Loop while there are packets to send
0 commit comments