/* ftdi_init return codes:
0: all fine
- -1: couldn't allocate (64 byte) read buffer
+ -1: couldn't allocate read buffer
*/
int ftdi_init(struct ftdi_context *ftdi) {
ftdi->usb_dev = NULL;
return -1;
}
+ ftdi->readbuffer_offset = 0;
+ ftdi->readbuffer_remaining = 0;
+
return 0;
}
ftdi->error_str = "FTDI purge of RX buffer failed";
return -1;
}
+
+ ftdi->readbuffer_offset = 0;
+ ftdi->readbuffer_remaining = 0;
if (usb_control_msg(ftdi->usb_dev, 0x40, 0, 2, 0, NULL, 0, ftdi->usb_timeout) != 0) {
ftdi->error_str = "FTDI purge of TX buffer failed";
// printf("Got bytes from buffer: %d\n", ftdi->readbuffer_remaining);
- // Fix offsets
+ // Fix offset
offset += ftdi->readbuffer_remaining;
- ftdi->readbuffer_remaining = 0;
- ftdi->readbuffer_offset = 0;
}
// do the actual USB read
ftdi->readbuffer_offset += part_size;
ftdi->readbuffer_remaining = ret-part_size;
+ offset += part_size;
// printf("Returning part: %d - size: %d - offset: %d - ret: %d - remaining: %d\n", part_size, size, offset, ret, ftdi->readbuffer_remaining);
- return part_size;
+ return offset;
}
}
}