- i = 0;
- while (i < writepos-writebuf) {
- i += ftdi_read_data(&ftdic, readbuf, sizeof(readbuf));
+ if ((combine-i)-1 > 0) {
+ ftdi_write_data(&ftdic, writebuf+i, (combine-i)-1);
+ i = combine-1;
+ }
+#endif
+
+ ftdi_write_data(&ftdic, writebuf+i, 1);
+
+ if (i > 0 && tr[i].cmdTrans == PP_WRITE && tr[i-1].cmdTrans == PP_READ)
+ ftdi_read_pins(&ftdic, readbuf+i);
+
+ if (i == (writepos-writebuf)-1 && tr[i].cmdTrans == PP_READ) {
+ ftdi_write_data(&ftdic, writebuf+i, 1);
+ ftdi_read_pins(&ftdic, readbuf+i+1);
+ }