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!')
24 # Pin.ft232h_gpio = self._i2c.get_gpio()
30 for i in range(8, 121):
31 result = self._nova.scanAddrI2C(0, i<<1)
33 resp = result.split(" ")
40 def writeto(self, address, buffer, *, start=0, end=None, stop=True):
42 end = end if end else len(buffer)
44 self._nova.startI2C(0, address)
46 for i in range(start, end):
47 self._nova.writeByteI2C(0, buffer[i])
52 self._nova.endI2C(0, True)
54 def readfrom_into(self, address, buffer, *, start=0, end=None, stop=True):
56 end = end if end else len(buffer)
58 result = self._nova.readBytesI2C(0, address, len(buffer[start:end]))
59 resp = result.split(" ")
61 for i in range(len(buffer[start:end])):
62 buffer[start+i] = resp[2+i]
64 def writeto_then_readfrom(self, address, buffer_out, buffer_in, *,
65 out_start=0, out_end=None,
66 in_start=0, in_end=None, stop=False):
68 out_end = out_end if out_end else len(buffer_out)
69 in_end = in_end if in_end else len(buffer_in)
71 self._nova.startI2C(0, address)
73 for i in range(out_start, out_end):
74 self._nova.writeByteI2C(0, buffer_out[i])
76 self._nova.endI2C(0, True)
78 result = self._nova.readBytesI2C(0, address, len(buffer_in[in_start:in_end]))
79 resp = result.split(" ")
81 for i in range(len(buffer_in[in_start:in_end])):
82 buffer_in[in_start+i] = resp[2+i]