5 from adafruit_blinka.microcontroller.mcp2221.mcp2221 import mcp2221 as _mcp2221
 
   6 from adafruit_blinka.microcontroller.mcp2221.mcp2221 import MCP2221 as _MCP2221
 
   7 from adafruit_blinka.microcontroller.mcp2221.i2c import I2C as _MCP2221I2C
 
  13 class MCP2221(_MCP2221):  # pylint: disable=too-few-public-methods
 
  14     def __init__(self, address):
 
  15         self._hid = hid.device()
 
  16         self._hid.open_path(address)
 
  17         print("Connected to " + str(address))
 
  18         self._gp_config = [0x07] * 4  # "don't care" initial value
 
  20             self.gp_set_mode(pin, self.GP_GPIO)  # set to GPIO mode
 
  21             self.gpio_set_direction(pin, 1)  # set to INPUT
 
  24 class MCP2221I2C(_MCP2221I2C):  # pylint: disable=too-few-public-methods
 
  25     def __init__(self, mcp2221, *, frequency=100000):
 
  26         self._mcp2221 = mcp2221
 
  27         self._mcp2221.i2c_configure(frequency)
 
  30 class I2C(busio.I2C):  # pylint: disable=too-few-public-methods
 
  31     def __init__(self, mcp2221_i2c):
 
  32         self._i2c = mcp2221_i2c
 
  35 addresses = [mcp["path"] for mcp in hid.enumerate(0x04D8, 0x00DD)]
 
  38 i2c_devices.append(I2C(MCP2221I2C(_mcp2221)))
 
  40 for addr in addresses:
 
  42         i2c_device = I2C(MCP2221I2C(MCP2221(addr)))
 
  43         i2c_devices.append(i2c_device)
 
  45         print("Device path: " + str(addr) + " is used")
 
  49     for i2c in i2c_devices:
 
  50         addrbuf = bytearray(2)
 
  51         addrbuf[0] = ADDRID1 >> 8
 
  52         addrbuf[1] = ADDRID1 & 0xFF
 
  54         i2c.writeto_then_readfrom(MLXADDR, addrbuf, inbuf)
 
  55         print("Device " + str(i2c_devices.index(i2c)) + ": ")