fix purge buffer fix libftdi >= 1.5

Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
This commit is contained in:
Gwenhael Goavec-Merou 2021-02-25 13:36:28 +01:00
parent 4b47c715e9
commit 6d1c51d0a4
2 changed files with 21 additions and 6 deletions

View File

@ -168,11 +168,13 @@ endif()
# libftdi < 1.4 as no usb_addr
if (${LIBFTDI_VERSION} VERSION_LESS 1.4)
set(CMAKE_CXX_FLAGS "-DOLD_FTDI_VERSION=1 ${CMAKE_CXX_FLAGS}")
else()
set(CMAKE_CXX_FLAGS "-DOLD_FTDI_VERSION=0 ${CMAKE_CXX_FLAGS}")
endif()
# libftdi >= 1.5 as purge_buffer obsolete
string(REPLACE "." ";" VERSION_LIST ${LIBFTDI_VERSION})
list(GET VERSION_LIST 0 LIBFTDI_VERSION_MAJOR)
list(GET VERSION_LIST 1 LIBFTDI_VERSION_MINOR)
math(EXPR FTDI_VAL "${LIBFTDI_VERSION_MAJOR} * 100 + ${LIBFTDI_VERSION_MINOR}")
add_definitions(-DFTDI_VERSION=${FTDI_VAL})
install(TARGETS openFPGALoader DESTINATION bin)
install(FILES

View File

@ -73,7 +73,7 @@ void FTDIpp_MPSSE::open_device(const std::string &serial, unsigned int baudrate)
if (_bus == -1 || _addr == -1)
ret = ftdi_usb_open_desc(_ftdi, _vid, _pid, NULL, serial.empty() ? NULL : serial.c_str());
else
#if (OLD_FTDI_VERSION == 1)
#if (FTDI_VERSION < 104)
ret = ftdi_usb_open_desc(_ftdi, _vid, _pid, _product, NULL);
#else
ret = ftdi_usb_open_bus_addr(_ftdi, _bus, _addr);
@ -105,8 +105,13 @@ int FTDIpp_MPSSE::close_device()
return EXIT_FAILURE;
/* purge FTDI */
#if (FTDI_VERSION < 105)
ftdi_usb_purge_rx_buffer(_ftdi);
ftdi_usb_purge_tx_buffer(_ftdi);
#else
ftdi_tciflush(_ftdi);
ftdi_tcoflush(_ftdi);
#endif
/*
* repompe de la fonction et des suivantes
@ -151,7 +156,11 @@ int FTDIpp_MPSSE::init(unsigned char latency, unsigned char bitmask_mode,
return -1;
}
#if (FTDI_VERSION < 105)
if (ftdi_usb_purge_buffers(_ftdi) != 0) {
#else
if (ftdi_tcioflush(_ftdi) != 0) {
#endif
cout << "reset error" << endl;
return -1;
}
@ -279,7 +288,11 @@ int FTDIpp_MPSSE::setClkFreq(uint32_t clkHZ)
return -1;
}
ret = ftdi_read_data(_ftdi, buffer, 4);
#if (FTDI_VERSION < 105)
ftdi_usb_purge_buffers(_ftdi);
#else
ftdi_tcioflush(_ftdi);
#endif
return real_freq;
}