int len;
DPRINTF("writing %d bytes due to %d following reads in %d chunks or full buffer\n", writepos-writebuf, nread, num);
- len = writepos-pos;
-
while (pos < writepos) {
+ len = writepos-pos;
+
if (len > usb_maxlen)
len = usb_maxlen;
DPRINTF("writing %d bytes\n", writepos-writebuf);
for (i=0; i<writepos-writebuf; i++) {
ftdi_write_data(&ftdic, writebuf+i, 1);
- ftdi_read_pins(&ftdic, readbuf+i);
+
+ if (i > 0 && tr[i].cmdTrans == PP_WRITE && tr[i-1].cmdTrans == PP_READ)
+ ftdi_read_pins(&ftdic, readbuf+i);
}
#ifdef DEBUG
}
readpos = readbuf;
- readpos += 0;
for (i = 0; i < num; i++) {
DPRINTF("dwPort: 0x%lx, cmdTrans: %lu, dwbytes: %ld, fautoinc: %ld, dwoptions: %ld\n",