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>
40 lines
1.5 KiB
CMake
40 lines
1.5 KiB
CMake
# For now, Google Test is NOT required */
|
|
find_package(GTest)
|
|
|
|
# If not found, print a status message and return
|
|
if(NOT GTEST_FOUND)
|
|
message(STATUS "Install Google Test to enable additional unit testing")
|
|
return ()
|
|
endif()
|
|
|
|
# Unit tests - C common header methods
|
|
add_executable(api_common_h_unit api/api_common_h_unit.cxx)
|
|
target_link_libraries(api_common_h_unit GTest::GTest GTest::Main mraa)
|
|
target_include_directories(api_common_h_unit
|
|
PRIVATE "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/api" "${CMAKE_SOURCE_DIR}/api/mraa")
|
|
gtest_add_tests(api_common_h_unit "" AUTO)
|
|
|
|
# Unit tests - C++ common header methods
|
|
add_executable(api_common_hpp_unit api/api_common_hpp_unit.cxx)
|
|
target_link_libraries(api_common_hpp_unit GTest::GTest GTest::Main mraa)
|
|
target_include_directories(api_common_hpp_unit PRIVATE "${CMAKE_SOURCE_DIR}/api")
|
|
gtest_add_tests(api_common_hpp_unit "" AUTO)
|
|
|
|
if (FTDI4222)
|
|
# Unit tests - Test platform extenders (as much as possible)
|
|
add_executable(platform_extender platform_extender/platform_extender.cxx)
|
|
target_link_libraries(platform_extender GTest::GTest GTest::Main mraa-platform-ft4222 dl)
|
|
target_include_directories(platform_extender PRIVATE "${PROJECT_SOURCE_DIR}/api"
|
|
"${PROJECT_SOURCE_DIR}/api/mraa"
|
|
"${PROJECT_SOURCE_DIR}/include")
|
|
gtest_add_tests(platform_extender "" AUTO)
|
|
endif ()
|
|
|
|
# Add a custom target for unit tests
|
|
add_custom_target(tests-unit ALL
|
|
DEPENDS
|
|
api_common_h_unit
|
|
api_common_hpp_unit
|
|
platform_extender
|
|
COMMENT "mraa unit test collection")
|