From: Thomas Jarosch Date: Fri, 23 Jan 2004 18:10:51 +0000 (+0000) Subject: libftdi: (tomj) added ftdi_usb_purge_buffers by request X-Git-Tag: v0.3~6 X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=commitdiff_plain;h=a60be878a392a04dced55c413d449144c5d97171 libftdi: (tomj) added ftdi_usb_purge_buffers by request --- diff --git a/ftdi/ftdi.c b/ftdi/ftdi.c index fb2adbf..defd278 100644 --- a/ftdi/ftdi.c +++ b/ftdi/ftdi.c @@ -102,6 +102,19 @@ int ftdi_usb_reset(struct ftdi_context *ftdi) { return 0; } +int ftdi_usb_purge_buffers(struct ftdi_context *ftdi) { + if (usb_control_msg(ftdi->usb_dev, 0x40, 0, 1, 0, NULL, 0, ftdi->usb_timeout) != 0) { + ftdi->error_str = "FTDI purge of RX buffer failed"; + return -1; + } + + 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"; + return -1; + } + + return 0; +} /* ftdi_usb_close return codes 0: all fine diff --git a/ftdi/ftdi.h b/ftdi/ftdi.h index 9e8615a..d254abe 100644 --- a/ftdi/ftdi.h +++ b/ftdi/ftdi.h @@ -63,6 +63,7 @@ extern "C" { int ftdi_usb_open(struct ftdi_context *ftdi, int vendor, int product); int ftdi_usb_close(struct ftdi_context *ftdi); int ftdi_usb_reset(struct ftdi_context *ftdi); + int ftdi_usb_purge_buffers(struct ftdi_context *ftdi); int ftdi_set_baudrate(struct ftdi_context *ftdi, int baudrate); int ftdi_write_data(struct ftdi_context *ftdi, unsigned char *buf, int size);