+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
"""Chip Definition for MCP2221"""
import os
# bus release will need "a few hundred microseconds"
time.sleep(0.001)
- # pylint: disable=too-many-arguments
+ # pylint: disable=too-many-arguments,too-many-branches
def _i2c_write(self, cmd, address, buffer, start=0, end=None):
if self._i2c_state() != 0x00:
self._i2c_cancel()
length = end - start
retries = 0
- while (end - start) > 0:
+ while (end - start) > 0 or not buffer:
chunk = min(end - start, MCP2221_MAX_I2C_DATA_LEN)
# write out current chunk
resp = self._hid_xfer(
# yay chunk sent!
while self._i2c_state() == RESP_I2C_PARTIALDATA:
time.sleep(0.001)
+ if not buffer:
+ break
start += chunk
retries = 0
# pylint: enable=too-many-arguments
- def i2c_configure(self, baudrate=100000):
+ def _i2c_configure(self, baudrate=100000):
"""Configure I2C"""
self._hid_xfer(
bytes(
out_start=0,
out_end=None,
in_start=0,
- in_end=None
+ in_end=None,
):
"""Write data from buffer_out to an address and then
read data from an address and into buffer_in