1 #from adafruit_blinka.microcontroller.nova.pin import Pin
6 # change GPIO controller to I2C
7 from binhoHostAdapter import binhoHostAdapter
8 from binhoHostAdapter import binhoUtilities
10 utilities = binhoUtilities.binhoUtilities()
11 devices = utilities.listAvailableDevices()
15 self._nova = binhoHostAdapter.binhoHostAdapter(devices[0])
16 self._nova.setNumericalBase(10)
17 self._nova.setOperationMode(0, "I2C")
18 self._nova.setPullUpStateI2C(0, "EN")
19 self._nova.setClockI2C(0, 400000)
22 raise RuntimeError('No Binho host adapter found!')
28 for i in range(8, 121):
29 result = self._nova.scanAddrI2C(0, i<<1)
31 resp = result.split(" ")
38 def writeto(self, address, buffer, *, start=0, end=None, stop=True):
40 end = end if end else len(buffer)
42 self._nova.startI2C(0, address)
44 for i in range(start, end):
45 self._nova.writeByteI2C(0, buffer[i])
50 self._nova.endI2C(0, True)
52 def readfrom_into(self, address, buffer, *, start=0, end=None, stop=True):
54 end = end if end else len(buffer)
56 result = self._nova.readBytesI2C(0, address, len(buffer[start:end]))
57 resp = result.split(" ")
59 for i in range(len(buffer[start:end])):
60 buffer[start+i] = resp[2+i]
62 def writeto_then_readfrom(self, address, buffer_out, buffer_in, *,
63 out_start=0, out_end=None,
64 in_start=0, in_end=None, stop=False):
66 out_end = out_end if out_end else len(buffer_out)
67 in_end = in_end if in_end else len(buffer_in)
69 self._nova.startI2C(0, address)
71 for i in range(out_start, out_end):
72 self._nova.writeByteI2C(0, buffer_out[i])
74 self._nova.endI2C(0, True)
76 result = self._nova.readBytesI2C(0, address, len(buffer_in[in_start:in_end]))
77 resp = result.split(" ")
79 for i in range(len(buffer_in[in_start:in_end])):
80 buffer_in[in_start+i] = resp[2+i]