import os
import time
+import atexit
+
import hid
# Here if you need it
def __init__(self):
self._hid = hid.device()
self._hid.open(MCP2221.VID, MCP2221.PID)
+ # make sure the device gets closed before exit
+ atexit.register(self.close)
if MCP2221_RESET_DELAY >= 0:
self._reset()
self._gp_config = [0x07] * 4 # "don't care" initial value
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 hid device. Does nothing if the device is not open."""
+ self._hid.close()
+
+ def __del__(self):
+ # try to close the device before destroying the instance
+ self.close()
+
def _hid_xfer(self, report, response=True):
"""Perform HID Transfer"""
# first byte is report ID, which =0 for 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: