feat(3p/python/broadlink): Add max_devices discovery parameter

This makes it possible to terminate early if the number of devices on
the network is known.
This commit is contained in:
Vincent Ambo 2020-04-26 14:50:04 +01:00
parent 6644d0031d
commit 0d73739740

View file

@ -72,7 +72,7 @@ def gendevice(devtype, host, mac, name=None, cloud=None):
return device_class(host, mac, devtype, name=name, cloud=cloud) return device_class(host, mac, devtype, name=name, cloud=cloud)
def discover(timeout=None, local_ip_address=None, discover_ip_address='255.255.255.255'): def discover(timeout=None, local_ip_address=None, discover_ip_address='255.255.255.255', max_devices=100):
if local_ip_address is None: if local_ip_address is None:
local_ip_address = socket.gethostbyname(socket.gethostname()) local_ip_address = socket.gethostbyname(socket.gethostname())
if local_ip_address.startswith('127.'): if local_ip_address.startswith('127.'):
@ -140,7 +140,7 @@ def discover(timeout=None, local_ip_address=None, discover_ip_address='255.255.2
device = gendevice(devtype, host, mac, name=name, cloud=cloud) device = gendevice(devtype, host, mac, name=name, cloud=cloud)
return device return device
while (time.time() - starttime) < timeout: while ((time.time() - starttime) < timeout) and (len(devices) < max_devices):
cs.settimeout(timeout - (time.time() - starttime)) cs.settimeout(timeout - (time.time() - starttime))
try: try:
response = cs.recvfrom(1024) response = cs.recvfrom(1024)