forked from M-Labs/artiq
lda: filter reports when waiting for command response
This commit is contained in:
parent
075e540032
commit
81ab801fe4
|
@ -175,8 +175,6 @@ class Lda:
|
||||||
self.write(command, len(data), data)
|
self.write(command, len(data), data)
|
||||||
|
|
||||||
def get(self, command, length, timeout=1000):
|
def get(self, command, length, timeout=1000):
|
||||||
# FIXME: this can collide with the status reports that the
|
|
||||||
# device sends out by itself
|
|
||||||
"""Sends a GET command to read back some value of the Lab Brick device.
|
"""Sends a GET command to read back some value of the Lab Brick device.
|
||||||
|
|
||||||
:param int command: Command ID, most significant bit must be cleared.
|
:param int command: Command ID, most significant bit must be cleared.
|
||||||
|
@ -187,13 +185,15 @@ class Lda:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
assert not command & 0x80
|
assert not command & 0x80
|
||||||
|
status = None
|
||||||
self.write(command, length)
|
self.write(command, length)
|
||||||
buf = ctypes.create_string_buffer(8)
|
buf = ctypes.create_string_buffer(8)
|
||||||
res = self._check_error(hidapi.hid_read_timeout(self._dev,
|
while status != command:
|
||||||
buf, len(buf), timeout))
|
res = self._check_error(hidapi.hid_read_timeout(self._dev,
|
||||||
assert res == len(buf), res
|
buf, len(buf), timeout))
|
||||||
command, length, data = struct.unpack("BB6s", buf.raw)
|
assert res == len(buf), res
|
||||||
data = data[:length]
|
status, length, data = struct.unpack("BB6s", buf.raw)
|
||||||
|
data = data[:length]
|
||||||
logger.info("%s %s %r", command, length, data)
|
logger.info("%s %s %r", command, length, data)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue