X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka.git/blobdiff_plain/5ffe910b4390149bb627219ee5021e15dc1b4e1f..e9da21982d2d8c8802428c7c455e26620f825861:/src/busio.py diff --git a/src/busio.py b/src/busio.py index 3523acd..72f3c7a 100755 --- a/src/busio.py +++ b/src/busio.py @@ -44,7 +44,7 @@ class I2C(Lockable): def scan(self): return self._i2c.scan() - def readfrom_into(self, address, buffer, start=0, end=None): + def readfrom_into(self, address, buffer, *, start=0, end=None): if start is not 0 or end is not None: if end is None: end = len(buffer) @@ -52,7 +52,9 @@ class I2C(Lockable): stop = True # remove for efficiency later return self._i2c.readfrom_into(address, buffer, stop) - def writeto(self, address, buffer, start=0, end=None, stop=True): + def writeto(self, address, buffer, *, start=0, end=None, stop=True): + if isinstance(buffer, str): + buffer = bytes([ord(x) for x in buffer]) if start is not 0 or end is not None: if end is None: return self._i2c.writeto(address, memoryview(buffer)[start:], stop) @@ -60,6 +62,8 @@ class I2C(Lockable): return self._i2c.writeto(address, memoryview(buffer)[start:end], stop) return self._i2c.writeto(address, buffer, stop) + def writeto_then_readfrom(self, address, buffer_out, buffer_in, *, out_start=0, out_end=None, in_start=0, in_end=None, stop=False): + return self._i2c.writeto_then_readfrom(address, buffer_out, buffer_in, out_start, out_end, in_start, in_end, stop) class SPI(Lockable): def __init__(self, clock, MOSI=None, MISO=None): @@ -70,7 +74,9 @@ class SPI(Lockable): from machine import SPI as _SPI from microcontroller.pin import spiPorts for portId, portSck, portMosi, portMiso in spiPorts: - if clock == portSck and MOSI == portMosi and MISO == portMiso: + if ((clock == portSck) and # Clock is required! + (MOSI == portMosi or MOSI == None) and # But can do with just output + (MISO == portMiso or MISO == None)): # Or just input self._spi = _SPI(portId) self._pins = (portSck, portMosi, portMiso) break @@ -106,11 +112,11 @@ class SPI(Lockable): self._spi = None self._pinIds = None - def write(self, buf): - return self._spi.write(buf) + def write(self, buf, start=0, end=None): + return self._spi.write(buf, start, end) - def readinto(self, buf): - return self._spi.readinto(buf) + def readinto(self, buf, start=0, end=None, write_value=0): + return self._spi.readinto(buf, start, end) def write_readinto(self, buffer_out, buffer_in, out_start=0, out_end=None, in_start=0, in_end=None): return self._spi.write_readinto(buffer_out, buffer_in, out_start, out_end, in_start, in_end)