X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=blobdiff_plain;f=ftdipp%2Fftdi.cpp;h=bdd85f5ab81fb0db6e7802ce109acce987f53f65;hp=8eb2ec2651f9d4b08c73dbf9093d0bd8b27ee3af;hb=26537a2dec68c3be9d597ae903dc0ffde7d1a599;hpb=fb56d9cf14f34dda2d7b154f16a0c08ad8b639f9 diff --git a/ftdipp/ftdi.cpp b/ftdipp/ftdi.cpp index 8eb2ec2..bdd85f5 100644 --- a/ftdipp/ftdi.cpp +++ b/ftdipp/ftdi.cpp @@ -144,12 +144,26 @@ int Context::reset() int Context::flush(int mask) { - int ret = 1; + int ret; - if (mask & Input) - ret &= ftdi_usb_purge_rx_buffer(d->ftdi); - if (mask & Output) - ret &= ftdi_usb_purge_tx_buffer(d->ftdi); + switch (mask & (Input | Output)) { + case Input: + ret = ftdi_usb_purge_rx_buffer(d->ftdi); + break; + + case Output: + ret = ftdi_usb_purge_tx_buffer(d->ftdi); + break; + + case Input | Output: + ret = ftdi_usb_purge_buffers(d->ftdi); + break; + + default: + // Emulate behavior of previous version. + ret = 1; + break; + } return ret; }