- result = self._port.exchange(buffer_out[out_start:out_end],
- in_end-in_start, duplex=True)
- for i, b in enumerate(result):
- buffer_in[in_start+i] = b
+ readlen = in_end-in_start
+ writelen = out_end-out_start
+ if readlen > writelen:
+ # resize out and pad with 0's
+ tmp = bytearray(buffer_out)
+ tmp.extend([0] * (readlen - len(buffer_out)))
+ buffer_out = tmp
+ i = 0
+ self._nova.setIOpinValue(0, 'LOW')
+ for data_out in buffer_out:
+ data_in = int(self.getSpiReceivedData(self._nova.transferSPI(0, data_out)), 16)
+ if i < readlen:
+ buffer_in[in_start+i] = data_in
+ i += 1
+ self._nova.setIOpinValue(0, 'HIGH')