Skip to content

Commit ada9e07

Browse files
fix: allow discovering multiple devices
1 parent 71f7f22 commit ada9e07

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

roborock/protocol.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
from Crypto.Util.Padding import pad, unpad
3131

3232
from roborock import RoborockException
33-
from roborock.roborock_future import RoborockFuture
3433
from 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

Comments
 (0)