]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - src/adafruit_blinka/microcontroller/mcp2221/mcp2221.py
Untangle code and remove pylint disables
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / mcp2221 / mcp2221.py
index b6ca9337d89cbf316b124b5a036c23608052b962..2dcc5394718eb79efd25a5c0706b79187e015b97 100644 (file)
@@ -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
@@ -62,7 +66,7 @@ class MCP2221:
             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):
@@ -129,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:
@@ -243,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
@@ -355,7 +360,8 @@ class MCP2221:
             # try a write
             try:
                 self.i2c_writeto(addr, b"\x00")
-            except RuntimeError:  # no reply!
+            except OSError:  # no reply!
+                # We got a NACK, which could be correct
                 continue
             # store if success
             found.append(addr)