X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/56feca73d6ec6b79c9b030d8ab06cc00574d6013..64755adc8a8c0dbfd792d3eb60d02fd033be530e:/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 fb8193c..8e76cc7 100644 --- a/src/adafruit_blinka/microcontroller/mcp2221/mcp2221.py +++ b/src/adafruit_blinka/microcontroller/mcp2221/mcp2221.py @@ -1,8 +1,12 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT """Chip Definition for MCP2221""" import os import time import atexit + import hid # Here if you need it @@ -55,21 +59,14 @@ class MCP2221: # make sure the device gets closed before exit atexit.register(self.close) if MCP2221_RESET_DELAY >= 0: - try: - self._reset() - except OSError: - # this might fail on Linux with the hid_mcp2221 native - # driver and a short reset delay -- if it fails, - # close the device before reraising - self.close() - raise + self._reset() self._gp_config = [0x07] * 4 # "don't care" initial value for pin in range(4): self.gp_set_mode(pin, self.GP_GPIO) # set to GPIO mode self.gpio_set_direction(pin, 1) # set to INPUT def close(self): - """Close the device. Does nothing if the device is not open.""" + """Close the hid device. Does nothing if the device is not open.""" self._hid.close() def __del__(self): @@ -136,6 +133,7 @@ class MCP2221: def _reset(self): self._hid_xfer(b"\x70\xAB\xCD\xEF", response=False) + self._hid.close() time.sleep(MCP2221_RESET_DELAY) start = time.monotonic() while time.monotonic() - start < 5: @@ -250,7 +248,7 @@ class MCP2221: for _ in range(MCP2221_RETRY_MAX): status = self._i2c_status() if status[20] & MASK_ADDR_NACK: - raise RuntimeError("I2C slave address was NACK'd") + raise OSError("I2C slave address was NACK'd") usb_cmd_status = status[8] if usb_cmd_status == 0: break