X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/887665d34a6e9133ef9b575952e82e50836b0e5d..f5900b85957d39c2897f0d3eb5da486cbb392550:/src/adafruit_blinka/microcontroller/mcp2221/mcp2221.py diff --git a/src/adafruit_blinka/microcontroller/mcp2221/mcp2221.py b/src/adafruit_blinka/microcontroller/mcp2221/mcp2221.py index bd44474..8247006 100644 --- a/src/adafruit_blinka/microcontroller/mcp2221/mcp2221.py +++ b/src/adafruit_blinka/microcontroller/mcp2221/mcp2221.py @@ -1,6 +1,10 @@ +import os import time import hid +# Small values seem to help on some Windows setups +MCP2221_HID_DELAY = float(os.environ.get('BLINKA_MCP2221_HID_DELAY', 0)) + # from the C driver # http://ww1.microchip.com/downloads/en/DeviceDoc/mcp2221_0_1.tar.gz # others (???) determined during driver developement @@ -51,6 +55,7 @@ class MCP2221: # remaing bytes = 64 byte report data # https://github.com/libusb/hidapi/blob/083223e77952e1ef57e6b77796536a3359c1b2a3/hidapi/hidapi.h#L185 self._hid.write(b'\0' + report + b'\0'*(64-len(report))) + time.sleep(MCP2221_HID_DELAY) if response: # return is 64 byte response report return self._hid.read(64) @@ -279,12 +284,12 @@ class MCP2221: found = [] for addr in range(start, end+1): # try a write - self.i2c_writeto(addr, b'\x00') + try: + self.i2c_writeto(addr, b'\x00') + except RuntimeError: # no reply! + continue # store if success - if self._i2c_status() == 0x00: - found.append(addr) - # cancel and continue - self._i2c_cancel() + found.append(addr) return found #----------------------------------------------------------------