From a60be878a392a04dced55c413d449144c5d97171 Mon Sep 17 00:00:00 2001 From: Thomas Jarosch Date: Fri, 23 Jan 2004 18:10:51 +0000 Subject: [PATCH] libftdi: (tomj) added ftdi_usb_purge_buffers by request --- ftdi/ftdi.c | 13 +++++++++++++ ftdi/ftdi.h | 1 + 2 files changed, 14 insertions(+), 0 deletions(-) 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); -- 1.7.1