X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka.git/blobdiff_plain/f3bc592818f3a69012d99f69d3bbf30b629df012..98f4a4378478d11e514acd7ff22a9c674f3cbca3:/src/adafruit_blinka/microcontroller/nxp_lpc4330/i2c.py diff --git a/src/adafruit_blinka/microcontroller/nxp_lpc4330/i2c.py b/src/adafruit_blinka/microcontroller/nxp_lpc4330/i2c.py new file mode 100644 index 0000000..e37fae1 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/nxp_lpc4330/i2c.py @@ -0,0 +1,47 @@ +"""I2C Class for NXP LPC4330""" +from greatfet import GreatFET + + +class I2C: + """Custom I2C Class for NXP LPC4330""" + + def __init__(self, *, frequency=100000): + self._gf = GreatFET() + + def scan(self): + """Perform an I2C Device Scan""" + return [index for index, dev in enumerate(self._gf.i2c.scan()) if dev[0]] + + # pylint: disable=unused-argument + def writeto(self, address, buffer, *, start=0, end=None, stop=True): + """Write data from the buffer to an address""" + if end is None: + end = len(buffer) + self._gf.i2c.write(address, buffer[start: end]) + + def readfrom_into(self, address, buffer, *, start=0, end=None, stop=True): + """Read data from an address and into the buffer""" + if end is None: + end = len(buffer) + readin = self._gf.i2c.read(address, end - start) + for i in range(end - start): + buffer[i + start] = readin[i] + # pylint: enable=unused-argument + + def writeto_then_readfrom( + self, + address, + buffer_out, + buffer_in, + *, + out_start=0, + out_end=None, + in_start=0, + in_end=None, + stop=False + ): + """Write data from buffer_out to an address and then + read data from an address and into buffer_in + """ + self.writeto(address, buffer_out, start=out_start, end=out_end, stop=stop) + self.readfrom_into(address, buffer_in, start=in_start, end=in_end, stop=stop)