libftdi: (tomj) added ftdi_usb_purge_buffers by request
authorThomas Jarosch <opensource@intra2net.com>
Fri, 23 Jan 2004 18:10:51 +0000 (18:10 +0000)
committerThomas Jarosch <opensource@intra2net.com>
Fri, 23 Jan 2004 18:10:51 +0000 (18:10 +0000)
ftdi/ftdi.c
ftdi/ftdi.h

index fb2adbf..defd278 100644 (file)
@@ -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
index 9e8615a..d254abe 100644 (file)
@@ -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);