+ def __exit__(self, exc_type, exc_value, traceback):
+ self.deinit()
+
+ def scan(self):
+ return self._i2c.scan()
+
+ 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)
+ buffer = memoryview(buffer)[start:end]
+ 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):
+ 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)
+ else:
+ 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.write_readinto(address, buffer_out, buffer_in, out_start, out_end, in_start, in_end, stop)