Updates to make the FT4222 platform extender more usable.
Previous implementation opened libft4222.so and loaded symbols as
needed. This implementation removes dynamic loading of libft4222 in
favor of creating a new shared libary which links against libft4222.so.
The dynamic loading is now done in mraa.c. One C method is exposed in
libmraa-platform-ft4222.so for finding/initializing an FT4222:
mraa_platform_t mraa_usb_platform_extender(mraa_board_t* board);
Mraa.c attempts to open this platform library and calls the
mraa_usb_platform_extender method. If an ftdi4222 is connected, the
user gets added IO from the extender. If no FT4222 device is connected,
continue as normal.
* Create a new platform library for the FT4222
* Expose only 1 C method from the library -
mraa_usb_platform_extender
* libmraa-platform-ft4222.so contains CXX code (as well as previous
C code). All *allocs have been removed in favor of global
C++ stl containers.
* Previously, the FT4222 would only initialize correctly if 2 ftdi
devices existed. Now, initialize FT4222 devices based on the
device id.
* Many fixes for various problems with the FT4222
* Added unit test for platform extender (minimal functionality w/o hw)
* Updated to FindFtd4222.cmake module to handle standard arguments
* Removed CMAKE_C_FLAGS addition of -DFTDID2XX and -DFTDI4222 since
these are NOT used anywhere in source.
* Building the FTDI4222 shim requires libft4222.h which requires
ftd2xx.h. Updated CMakeLists.txt to require both when building
the shim.
Signed-off-by: Noel Eck <noel.eck@intel.com>
79 lines
2.2 KiB
CMake
79 lines
2.2 KiB
CMake
# - Try to find LIBFT4222
|
|
# Once done this will define
|
|
#
|
|
# LIBFT4222_FOUND - system has LIBFT4222
|
|
# LIBFT4222_INCLUDE_DIRS - the LIBFT4222 include directory
|
|
# LIBFT4222_LIBRARIES - Link these to use LIBFT4222
|
|
# LIBFT4222_DEFINITIONS - Compiler switches required for using LIBFT4222
|
|
#
|
|
# Adapted from cmake-modules Google Code project
|
|
#
|
|
# Copyright (c) 2006 Andreas Schneider <mail@cynapses.org>
|
|
#
|
|
# (Changes for LIBFTD2XX) Copyright (c) 2008 Kyle Machulis <kyle@nonpolynomial.com>
|
|
# (Changes for LIBFT4222) Henry Bruce <henry.bruce@intel.com> Copyright (c) 2015 Intel Corporation.
|
|
#
|
|
# Redistribution and use is allowed according to the terms of the New BSD license.
|
|
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
|
|
|
if (LIBFT4222_LIBRARIES AND LIBFT4222_INCLUDE_DIRS)
|
|
# in cache already
|
|
set(LIBFT4222_FOUND TRUE)
|
|
else (LIBFT4222_LIBRARIES AND LIBFT4222_INCLUDE_DIRS)
|
|
find_path(LIBFT4222_INCLUDE_DIR
|
|
NAMES
|
|
libft4222.h
|
|
PATHS
|
|
/usr/include
|
|
/usr/local/include
|
|
/opt/local/include
|
|
/sw/include
|
|
)
|
|
|
|
SET(FTD4222_LIBNAME ft4222)
|
|
IF(WIN32)
|
|
SET(FTD4222_LIBNAME LibFT4222.lib)
|
|
ENDIF(WIN32)
|
|
|
|
find_library(LIBFT4222_LIBRARY
|
|
NAMES
|
|
${FTD4222_LIBNAME}
|
|
PATHS
|
|
/usr/lib
|
|
/usr/local/lib
|
|
/opt/local/lib
|
|
/sw/lib
|
|
)
|
|
|
|
if(LIBFT4222_INCLUDE_DIR)
|
|
set(LIBFT4222_INCLUDE_DIRS
|
|
${LIBFT4222_INCLUDE_DIR}
|
|
)
|
|
endif(LIBFT4222_INCLUDE_DIR)
|
|
set(LIBFT4222_LIBRARIES
|
|
${LIBFT4222_LIBRARY}
|
|
)
|
|
|
|
if (LIBFT4222_INCLUDE_DIRS AND LIBFT4222_LIBRARIES)
|
|
set(LIBFT4222_FOUND TRUE)
|
|
endif (LIBFT4222_INCLUDE_DIRS AND LIBFT4222_LIBRARIES)
|
|
|
|
if (LIBFT4222_FOUND)
|
|
if (NOT LIBFT4222_FIND_QUIETLY)
|
|
message(STATUS "Found LIBFT4222: ${LIBFT4222_LIBRARIES}")
|
|
endif (NOT LIBFT4222_FIND_QUIETLY)
|
|
else (LIBFT4222_FOUND)
|
|
if (LIBFT4222_FIND_REQUIRED)
|
|
message(FATAL_ERROR "Could not find LIBFT4222")
|
|
endif (LIBFT4222_FIND_REQUIRED)
|
|
endif (LIBFT4222_FOUND)
|
|
|
|
find_package_handle_standard_args(Ftd4222
|
|
REQUIRED_VARS LIBFT4222_INCLUDE_DIRS LIBFT4222_LIBRARIES)
|
|
|
|
# show the LIBFT4222_INCLUDE_DIRS and LIBFT4222_LIBRARIES variables only in the advanced view
|
|
mark_as_advanced(LIBFT4222_INCLUDE_DIRS LIBFT4222_LIBRARIES)
|
|
|
|
endif (LIBFT4222_LIBRARIES AND LIBFT4222_INCLUDE_DIRS)
|
|
|