receiver: check that device can retrieve host names before trying that

This commit is contained in:
Peter F. Patel-Schneider 2020-08-12 08:52:22 -04:00
parent b3cc4361e8
commit 330fadfbce
1 changed files with 12 additions and 11 deletions

View File

@ -898,17 +898,18 @@ def get_host_names(device):
state = feature_request(device, FEATURE.HOSTS_INFO, 0x00) state = feature_request(device, FEATURE.HOSTS_INFO, 0x00)
host_names = {} host_names = {}
if state: if state:
_ignore, _ignore, numHosts, currentHost = _unpack('!BBBB', state[:4]) capability_flags, _ignore, numHosts, currentHost = _unpack('!BBBB', state[:4])
for host in range(0, numHosts): if capability_flags & 0x01: # device can get host names
hostinfo = feature_request(device, FEATURE.HOSTS_INFO, 0x10, host) for host in range(0, numHosts):
_ignore, status, _ignore, numPages, nameLen, _ignore = _unpack('!BBBBBB', hostinfo[:6]) hostinfo = feature_request(device, FEATURE.HOSTS_INFO, 0x10, host)
name = '' _ignore, status, _ignore, numPages, nameLen, _ignore = _unpack('!BBBBBB', hostinfo[:6])
remaining = nameLen name = ''
while remaining > 0: remaining = nameLen
name_piece = feature_request(device, FEATURE.HOSTS_INFO, 0x30, host, nameLen - remaining) while remaining > 0:
name += name_piece[2:2 + min(remaining, 14)].decode() name_piece = feature_request(device, FEATURE.HOSTS_INFO, 0x30, host, nameLen - remaining)
remaining = max(0, remaining - 14) name += name_piece[2:2 + min(remaining, 14)].decode()
host_names[host] = (bool(status), name) remaining = max(0, remaining - 14)
host_names[host] = (bool(status), name)
return host_names return host_names