X-Git-Url: http://developer.intra2net.com/git/?a=blobdiff_plain;f=src%2Fftdi.c;h=de5ded1722198098a6bc826923cf5af83dd72f63;hb=92cbae17a56ce3c6e5f01ea89dafaec75d865be7;hp=a2337ed01f0394e8071cc52293fcbd5f75a7a07d;hpb=e03f60a12cd4233197fc4e11c26f3b61e7e78f58;p=libftdi diff --git a/src/ftdi.c b/src/ftdi.c index a2337ed..de5ded1 100644 --- a/src/ftdi.c +++ b/src/ftdi.c @@ -35,6 +35,7 @@ #include #include "ftdi.h" +#include "ftdi_version_i.h" #define ftdi_error_return(code, str) do { \ ftdi->error_str = str; \ @@ -257,6 +258,23 @@ void ftdi_set_usbdev (struct ftdi_context *ftdi, libusb_device_handle *usb) ftdi->usb_dev = usb; } +/** + * @brief Get libftdi library version + * + * @return ftdi_version_info Library version information + **/ +struct ftdi_version_info ftdi_get_library_version() +{ + struct ftdi_version_info ver; + + ver.major = FTDI_MAJOR_VERSION; + ver.minor = FTDI_MINOR_VERSION; + ver.micro = FTDI_MICRO_VERSION; + ver.version_str = FTDI_VERSION_STRING; + ver.snapshot_str = FTDI_SNAPSHOT_VERSION; + + return ver; +} /** Finds all ftdi devices with given VID:PID on the usb bus. Creates a new @@ -1112,7 +1130,11 @@ static int ftdi_to_clkbits(int baudrate, unsigned int clk, int clk_div, unsigned best_divisor = divisor/2; if(best_divisor > 0x20000) best_divisor = 0x1ffff; - best_baud = clk*8/clk_div/best_divisor; + best_baud = clk*16/clk_div/best_divisor; + if (best_baud & 1) /* Decide if to round up or down*/ + best_baud = best_baud /2 +1; + else + best_baud = best_baud /2; *encoded_divisor = (best_divisor >> 3) | (frac_code[best_divisor & 0x7] << 14); } return best_baud;