From 69fcd861a74fa3ea3161bf757882645622674a9f Mon Sep 17 00:00:00 2001 From: Brendan Le Foll Date: Fri, 23 Dec 2016 15:50:56 +0000 Subject: [PATCH] android-things: Peripheralmanager target build Signed-off-by: Brendan Le Foll --- docs/building.md | 5 ++++- examples/CMakeLists.txt | 13 +++++++++---- src/CMakeLists.txt | 13 +++++++------ src/mraa.c | 12 +++++++++--- src/uart/uart.c | 2 ++ 5 files changed, 31 insertions(+), 14 deletions(-) diff --git a/docs/building.md b/docs/building.md index 80a69eb..416c44a 100644 --- a/docs/building.md +++ b/docs/building.md @@ -187,6 +187,9 @@ cmake -DRPM=ON -DCMAKE_INSTALL_PREFIX=/usr .. ## Building for Peripheralmanager Android Things +Change src/CMakeLists.txt:146 to the location of libperipheralman.so on your +machine or have it in your Android NDK + ~~~~~~~~~~~~~{.sh} -cmake -DBUILDSWIG=OFF -DBUILDARCH=PERIPHERALMAN -DCMAKE_TOOLCHAIN_FILE=/opt/android-ndk-r13b/build/cmake/android.toolchain.cmake .. +cmake -DBUILDSWIG=OFF -DBUILDARCH=PERIPHERALMAN -DANDROID_TOOLCHAIN_NAME=x86-i686 -DCMAKE_TOOLCHAIN_FILE=/opt/android-ndk-r13b/build/cmake/android.toolchain.cmake .. ~~~~~~~~~~~~~ diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 0cb7756..118140f 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -12,7 +12,9 @@ add_executable (uart uart.c) add_executable (mraa-gpio mraa-gpio.c) add_executable (mraa-i2c mraa-i2c.c) add_executable (spi_max7219 spi_max7219.c) -add_executable (iio_driver iio_driver.c) +if (NOT ANDROID_TOOLCHAIN) + add_executable (iio_driver iio_driver.c) +endif () include_directories(${PROJECT_SOURCE_DIR}/api) # FIXME Hack to access mraa internal types used by mraa-i2c @@ -33,8 +35,9 @@ target_link_libraries (uart mraa) target_link_libraries (mraa-gpio mraa) target_link_libraries (mraa-i2c mraa) target_link_libraries (spi_max7219 mraa) -target_link_libraries (iio_driver mraa) - +if (NOT ANDROID_TOOLCHAIN) + target_link_libraries (iio_driver mraa) +endif () if (ONEWIRE) add_executable (uart_ow uart_ow.c) target_link_libraries (uart_ow mraa) @@ -47,7 +50,9 @@ if (FIRMATA) target_link_libraries (i2c_firmata mraa) endif () -add_subdirectory (c++) +if (NOT ANDROID_TOOLCHAIN) + add_subdirectory (c++) +endif () install (DIRECTORY ${PROJECT_SOURCE_DIR}/examples/ DESTINATION ${CMAKE_INSTALL_DATADIR}/mraa/examples) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7842963..c6f3c69 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -104,12 +104,12 @@ set (mraa_LIB_MOCK_SRCS_NOAUTO set (mraa_LIB_PERIPHERALMAN_SRCS_NOAUTO ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman.c - ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_aio.c - ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_gpio.c - ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_i2c.c - ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_pwm.c - ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_spi.c - ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_uart.c +# ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_aio.c +# ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_gpio.c +# ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_i2c.c +# ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_pwm.c +# ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_spi.c +# ${PROJECT_SOURCE_DIR}/src/peripheralman/peripheralman_uart.c ) if (JSONPLAT) @@ -145,6 +145,7 @@ endif() if (PERIPHERALMAN) add_subdirectory(peripheralman) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DPERIPHERALMAN=1") + set (mraa_LIBS ${mraa_LIBS} -l/home/brendan/git/mraa/libperipheralman.so) endif() if (USBPLAT) diff --git a/src/mraa.c b/src/mraa.c index 3f8968b..11e4ea0 100644 --- a/src/mraa.c +++ b/src/mraa.c @@ -68,12 +68,13 @@ #elif #define IIO_DEVICE_WILDCARD "iio:device*" -mraa_board_t* plat = NULL; mraa_iio_info_t* plat_iio = NULL; static int num_i2c_devices = 0; static int num_iio_devices = 0; #endif + +mraa_board_t* plat = NULL; mraa_lang_func_t* lang_func = NULL; char* platform_name = NULL; @@ -190,7 +191,7 @@ imraa_init() mraa_add_from_lockfile(subplatform_lockfile); #endif -#if !defined(PLATFORMAN) +#if !defined(PERIPHERALMAN) // Look for IIO devices mraa_iio_detect(); @@ -305,7 +306,6 @@ mraa_set_priority(const int priority) } #if !defined(PERIPHERALMAN) - static int mraa_count_iio_devices(const char* path, const struct stat* sb, int flag, struct FTW* ftwb) { @@ -521,6 +521,12 @@ mraa_setup_mux_mapped(mraa_pin_t meta) return MRAA_SUCCESS; } +#else +mraa_result_t +mraa_setup_mux_mapped(mraa_pin_t meta) +{ + return MRAA_ERROR_FEATURE_NOT_IMPLEMENTED; +} #endif void diff --git a/src/uart/uart.c b/src/uart/uart.c index 9fe1e28..4ce93d6 100644 --- a/src/uart/uart.c +++ b/src/uart/uart.c @@ -626,8 +626,10 @@ mraa_uart_data_available(mraa_uart_context dev, unsigned int millis) fd_set readfds; +#if !defined(PERIPHERALMAN) FD_ZERO(&readfds); FD_SET(dev->fd, &readfds); +#endif if (select(dev->fd + 1, &readfds, NULL, NULL, &timeout) > 0) { return 1; // data is ready