3030from Crypto .Util .Padding import pad , unpad
3131
3232from roborock import RoborockException
33- from roborock .roborock_future import RoborockFuture
3433from roborock .roborock_message import RoborockMessage
3534
3635_LOGGER = logging .getLogger (__name__ )
@@ -44,20 +43,20 @@ class RoborockProtocol(asyncio.DatagramProtocol):
4443 def __init__ (self , timeout : int = 5 ):
4544 self .timeout = timeout
4645 self .transport : BaseTransport | None = None
47- self .queue = RoborockFuture ( 0 )
46+ self .devices_found : list [ dict ] = []
4847
4948 def datagram_received (self , data , _ ):
5049 [broadcast_message ], _ = BroadcastParser .parse (data )
51- self .queue .resolve ((json .loads (broadcast_message .payload ), None ))
52- self .close ()
50+ self .devices_found .append (json .loads (broadcast_message .payload ))
5351
5452 async def discover (self ):
5553 loop = asyncio .get_event_loop ()
5654 self .transport , _ = await loop .create_datagram_endpoint (lambda : self , local_addr = ("0.0.0.0" , 58866 ))
57- (response , exception ) = await self .queue .async_get (self .timeout )
58- if exception is not None :
59- raise exception
60- return response
55+ await asyncio .sleep (self .timeout )
56+ self .transport .close ()
57+ devices_found = self .devices_found
58+ self .devices_found = []
59+ return devices_found
6160
6261 def close (self ):
6362 self .transport .close () if self .transport else None
0 commit comments