4         from adafruit_blinka.microcontroller.nova import Connection
 
   5         self._nova = Connection.getInstance()
 
   6         self._nova.setNumericalBase(10)
 
   7         self._nova.setOperationMode(0, "I2C")
 
   8         self._nova.setPullUpStateI2C(0, "EN")
 
   9         self._nova.setClockI2C(0, 400000)
 
  15         for i in range(8, 121):
 
  16             result = self._nova.scanAddrI2C(0, i<<1)
 
  18             resp = result.split(" ")
 
  25     def writeto(self, address, buffer, *, start=0, end=None, stop=True):
 
  27         end = end if end else len(buffer)
 
  29         self._nova.startI2C(0, address<<1)
 
  31         for i in range(start, end): 
 
  32             self._nova.writeByteI2C(0, buffer[i])
 
  37             self._nova.endI2C(0, True)
 
  39     def readfrom_into(self, address, buffer, *, start=0, end=None, stop=True):
 
  41         end = end if end else len(buffer)
 
  43         result = self._nova.readBytesI2C(0, address<<1, len(buffer[start:end]))
 
  46             resp = result.split(" ")
 
  48             for i in range(len(buffer[start:end])):
 
  49                 buffer[start+i] = int(resp[2+i])
 
  51             raise RuntimeError("Received error response from Binho Nova, result = " + result)
 
  53     def writeto_then_readfrom(self, address, buffer_out, buffer_in, *,
 
  54                               out_start=0, out_end=None,
 
  55                               in_start=0, in_end=None, stop=False):
 
  57         out_end = out_end if out_end else len(buffer_out)
 
  58         in_end = in_end if in_end else len(buffer_in)
 
  60         self._nova.startI2C(0, address<<1)
 
  62         for i in range(out_start, out_end): 
 
  63             self._nova.writeByteI2C(0, buffer_out[i])
 
  65         self._nova.endI2C(0, True)
 
  67         result = self._nova.readBytesI2C(0, address<<1, len(buffer_in[in_start:in_end]))
 
  70             resp = result.split(" ")
 
  72             for i in range(len(buffer_in[in_start:in_end])):
 
  73                 buffer_in[in_start+i] = int(resp[2+i])
 
  75             raise RuntimeError("Received error response from Binho Nova, result = " + result)