Skip to content

Commit

Permalink
Merge remote-tracking branch 'openbci/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrey1994 committed Mar 25, 2020
2 parents 1fe14a0 + 43dc072 commit 086e06f
Show file tree
Hide file tree
Showing 106 changed files with 2,229 additions and 178 deletions.
79 changes: 61 additions & 18 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,14 @@ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
if(APPLE)
SET (BOARD_CONTROLLER_COMPILED_NAME "libBoardController.dylib")
SET (DATA_HANDLER_COMPILED_NAME "libDataHandler.dylib")
SET (NEUROSDK_LIB_NAME "neurosdk-shared")
elseif (UNIX)
SET (BOARD_CONTROLLER_COMPILED_NAME "libBoardController.so")
SET (DATA_HANDLER_COMPILED_NAME "libDataHandler.so")
else ()
SET (BOARD_CONTROLLER_COMPILED_NAME "BoardController.dll")
SET (DATA_HANDLER_COMPILED_NAME "DataHandler.dll")
SET (BRIANBIT_LIB_NAME "neurosdk-x64")
SET (NEUROSDK_LIB_NAME "neurosdk-x64")
endif (APPLE)
else (CMAKE_SIZEOF_VOID_P EQUAL 8)
MESSAGE ("32 bits compiler detected")
Expand All @@ -118,7 +119,7 @@ else (CMAKE_SIZEOF_VOID_P EQUAL 8)
else ()
SET (BOARD_CONTROLLER_COMPILED_NAME "BoardController32.dll")
SET (DATA_HANDLER_COMPILED_NAME "DataHandler32.dll")
SET (BRIANBIT_LIB_NAME "neurosdk-x86")
SET (NEUROSDK_LIB_NAME "neurosdk-x86")
endif (APPLE)
endif (CMAKE_SIZEOF_VOID_P EQUAL 8)

Expand Down Expand Up @@ -146,7 +147,7 @@ set (BOARD_CONTROLLER_SRC
${CMAKE_HOME_DIRECTORY}/src/board_controller/openbci/novaxr.cpp
${CMAKE_HOME_DIRECTORY}/src/board_controller/file_streamer.cpp
${CMAKE_HOME_DIRECTORY}/src/board_controller/multicast_streamer.cpp
${CMAKE_HOME_DIRECTORY}/src/board_controller/brainbit/brainbit.cpp
${CMAKE_HOME_DIRECTORY}/src/board_controller/neuromd/brainbit.cpp
)

set (DATA_HANDLER_SRC
Expand All @@ -171,21 +172,30 @@ target_include_directories (
${CMAKE_HOME_DIRECTORY}/src/utils/inc
${CMAKE_HOME_DIRECTORY}/src/board_controller/inc
${CMAKE_HOME_DIRECTORY}/src/board_controller/openbci/inc
${CMAKE_HOME_DIRECTORY}/src/board_controller/brainbit/inc
${CMAKE_HOME_DIRECTORY}/src/board_controller/neuromd/inc
${CMAKE_HOME_DIRECTORY}/src/board_controller/openbci/ganglion_bglib/inc
)

# BrainBit supoprts only Windows
# NeuroSDK supports only Windows and MacOS
if (MSVC)
target_include_directories (
${BOARD_CONTROLLER_NAME} PRIVATE
${CMAKE_HOME_DIRECTORY}/third_party/brainbit/inc
${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/inc/win
)

find_library(BRAINBIT_SDK_LIB NAMES ${BRIANBIT_LIB_NAME} PATHS ${CMAKE_HOME_DIRECTORY}/third_party/brainbit/lib)
target_link_libraries(${BOARD_CONTROLLER_NAME} PRIVATE ${BRAINBIT_SDK_LIB})

find_library(NEUROSDK_SDK_LIB NAMES ${NEUROSDK_LIB_NAME} PATHS ${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib)
target_link_libraries(${BOARD_CONTROLLER_NAME} PRIVATE ${NEUROSDK_SDK_LIB})
endif (MSVC)
if (APPLE)
target_include_directories (
${BOARD_CONTROLLER_NAME} PRIVATE
${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/inc/macos
)
find_library(BLE_LIB NAMES bluetoothle PATHS ${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib)
find_library(BRAINBIT_LIB NAMES brainbit PATHS ${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib)
find_library(UTILITIES_LIB NAMES utilities PATHS ${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib)
find_library(NEUROSDK_SDK_LIB NAMES ${NEUROSDK_LIB_NAME} PATHS ${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib)
target_link_libraries(${BOARD_CONTROLLER_NAME} PRIVATE ${BLE_LIB} ${BRAINBIT_LIB} ${UTILITIES_LIB} ${NEUROSDK_SDK_LIB})
endif (APPLE)

target_include_directories (
${DATA_HANDLER_NAME} PRIVATE
Expand Down Expand Up @@ -242,20 +252,28 @@ endif (UNIX)

# copy
if (MSVC)
add_custom_command (TARGET ${BOARD_CONTROLLER_NAME} POST_BUILD
add_custom_command (TARGET ${BOARD_CONTROLLER_NAME} POST_BUILD
# copy board controller libs
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/$<CONFIG>/${BOARD_CONTROLLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/python-package/brainflow/lib/${BOARD_CONTROLLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/$<CONFIG>/${BOARD_CONTROLLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/java-package/brainflow/src/main/resources/${BOARD_CONTROLLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/$<CONFIG>/${BOARD_CONTROLLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/lib/${BOARD_CONTROLLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/brainbit/lib/${BRIANBIT_LIB_NAME}.dll" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/lib/${BRIANBIT_LIB_NAME}.dll"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/brainbit/lib/${BRIANBIT_LIB_NAME}.dll" "${CMAKE_HOME_DIRECTORY}/python-package/brainflow/lib/${BRIANBIT_LIB_NAME}.dll"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/brainbit/lib/${BRIANBIT_LIB_NAME}.dll" "${CMAKE_HOME_DIRECTORY}/java-package/brainflow/src/main/resources/${BRIANBIT_LIB_NAME}.dll"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/$<CONFIG>/${BOARD_CONTROLLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/lib/${BOARD_CONTROLLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/board_controller.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/board_controller.h"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/board_info_getter.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/board_info_getter.h"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_constants.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/brainflow_constants.h"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/${NEUROSDK_LIB_NAME}.dll" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/lib/${NEUROSDK_LIB_NAME}.dll"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/${NEUROSDK_LIB_NAME}.dll" "${CMAKE_HOME_DIRECTORY}/python-package/brainflow/lib/${NEUROSDK_LIB_NAME}.dll"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/${NEUROSDK_LIB_NAME}.dll" "${CMAKE_HOME_DIRECTORY}/java-package/brainflow/src/main/resources/${NEUROSDK_LIB_NAME}.dll"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/${NEUROSDK_LIB_NAME}.dll" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/lib/${NEUROSDK_LIB_NAME}.dll"
)
add_custom_command (TARGET ${DATA_HANDLER_NAME} POST_BUILD
add_custom_command (TARGET ${DATA_HANDLER_NAME} POST_BUILD
# copy data handler libs
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/$<CONFIG>/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/python-package/brainflow/lib/${DATA_HANDLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/$<CONFIG>/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/java-package/brainflow/src/main/resources/${DATA_HANDLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/$<CONFIG>/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/lib/${DATA_HANDLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/$<CONFIG>/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/lib/${DATA_HANDLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_constants.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/brainflow_constants.h"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/data_handler/inc/data_handler.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/data_handler.h"
)
endif (MSVC)
if (UNIX)
Expand All @@ -264,20 +282,37 @@ if (UNIX)
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${BOARD_CONTROLLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/python-package/brainflow/lib/${BOARD_CONTROLLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${BOARD_CONTROLLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/java-package/brainflow/src/main/resources/${BOARD_CONTROLLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${BOARD_CONTROLLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/${BOARD_CONTROLLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/board_controller.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/board_controller.h"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/board_info_getter.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/board_info_getter.h"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_constants.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/brainflow_constants.h"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${BOARD_CONTROLLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/lib/${BOARD_CONTROLLER_COMPILED_NAME}"
)
add_custom_command (TARGET ${DATA_HANDLER_NAME} POST_BUILD
# copy data handler libs
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/python-package/brainflow/lib/${DATA_HANDLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/java-package/brainflow/src/main/resources/${DATA_HANDLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/${DATA_HANDLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/lib/${DATA_HANDLER_COMPILED_NAME}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_constants.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/brainflow_constants.h"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/src/data_handler/inc/data_handler.h" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/inc/data_handler.h"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/compiled/${DATA_HANDLER_COMPILED_NAME}" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/lib/${DATA_HANDLER_COMPILED_NAME}"
)
endif (UNIX)
if (APPLE)
add_custom_command (TARGET ${BOARD_CONTROLLER_NAME} POST_BUILD
# copy neurosdk lib for MacOS
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/lib${NEUROSDK_LIB_NAME}.dylib" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/lib/lib${NEUROSDK_LIB_NAME}.dylib"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/lib${NEUROSDK_LIB_NAME}.dylib" "${CMAKE_HOME_DIRECTORY}/python-package/brainflow/lib/lib${NEUROSDK_LIB_NAME}.dylib"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/lib${NEUROSDK_LIB_NAME}.dylib" "${CMAKE_HOME_DIRECTORY}/java-package/brainflow/src/main/resources/lib${NEUROSDK_LIB_NAME}.dylib"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/lib${NEUROSDK_LIB_NAME}.dylib" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/lib/lib${NEUROSDK_LIB_NAME}.dylib"
)
endif (APPLE)

# need to copy json file to bindings
add_custom_command (TARGET ${BOARD_CONTROLLER_NAME} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/${BOARDS_JSON}" "${CMAKE_HOME_DIRECTORY}/python-package/brainflow/lib/${BOARDS_JSON}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/${BOARDS_JSON}" "${CMAKE_HOME_DIRECTORY}/java-package/brainflow/src/main/resources/${BOARDS_JSON}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/${BOARDS_JSON}" "${CMAKE_HOME_DIRECTORY}/csharp-package/brainflow/brainflow/lib/${BOARDS_JSON}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_HOME_DIRECTORY}/${BOARDS_JSON}" "${CMAKE_HOME_DIRECTORY}/matlab-package/brainflow/lib/${BOARDS_JSON}"
)

# install
Expand Down Expand Up @@ -307,21 +342,29 @@ install (
${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/board_controller.h
${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_constants.h
${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/board_info_getter.h
${CMAKE_HOME_DIRECTORY}/src/board_controller/inc/brainflow_input_params.h
${CMAKE_HOME_DIRECTORY}/src/data_handler/inc/data_handler.h
${CMAKE_HOME_DIRECTORY}/cpp-package/src/inc/data_filter.h
${CMAKE_HOME_DIRECTORY}/cpp-package/src/inc/board_shim.h
${CMAKE_HOME_DIRECTORY}/cpp-package/src/inc/brainflow_exception.h
DESTINATION inc
)

# install brainbit dll
# install neurosdk
if (MSVC)
install (
FILES
${CMAKE_HOME_DIRECTORY}/third_party/brainbit/lib/${BRIANBIT_LIB_NAME}.dll
${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/${NEUROSDK_LIB_NAME}.dll
DESTINATION lib
)
endif (MSVC)
if (APPLE)
install (
FILES
${CMAKE_HOME_DIRECTORY}/third_party/neurosdk/lib/lib${NEUROSDK_LIB_NAME}.dylib
DESTINATION lib
)
endif (APPLE)

# need to put this file with libraries
install (
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ BrainFlow is a library intended to obtain, parse and analyze EEG, EMG, ECG and o

## [BrainFlow Docs, Dev and User guides and other information](https://brainflow.readthedocs.io)

## [BrainFlow's slack workspace](https://openbraintalk.slack.com/), use this [link to join](https://c6ber255cc.execute-api.eu-west-1.amazonaws.com/Express/)

## Build status

Compiled with:
Expand All @@ -41,6 +43,7 @@ We support bindings for:
* [R](./r-package/)
* [C++](./cpp-package/)
* [C# (Windows only)](./csharp-package/brainflow/)
* [Matlab](./matlab-package/brainflow)

## License:
MIT

0 comments on commit 086e06f

Please sign in to comment.