d6c6ac4cf5
Update documentation. Remove Asserts when starting advertising to prevent crash (known bug). Set version 0.5.0.
538 lines
22 KiB
CMake
Executable file
538 lines
22 KiB
CMake
Executable file
cmake_minimum_required(VERSION 3.6)
|
|
|
|
# check if all the necessary tools paths have been provided.
|
|
if (NOT NRF5_SDK_PATH)
|
|
message(FATAL_ERROR "The path to the nRF5 SDK (NRF5_SDK_PATH) must be set.")
|
|
endif ()
|
|
|
|
# convert toolchain path to bin path
|
|
if(DEFINED ARM_NONE_EABI_TOOLCHAIN_PATH)
|
|
set(ARM_NONE_EABI_TOOLCHAIN_BIN_PATH ${ARM_NONE_EABI_TOOLCHAIN_PATH}/bin)
|
|
endif()
|
|
|
|
# check if the nRF target has been set
|
|
if (NRF_TARGET MATCHES "nrf51")
|
|
|
|
elseif (NRF_TARGET MATCHES "nrf52")
|
|
|
|
elseif (NOT NRF_TARGET)
|
|
message(FATAL_ERROR "nRF target must be defined")
|
|
else ()
|
|
message(FATAL_ERROR "Only nRF51 and rRF52 boards are supported right now")
|
|
endif ()
|
|
|
|
# must be set in file (not macro) scope (in macro would point to parent CMake directory)
|
|
set(DIR_OF_nRF5x_CMAKE ${CMAKE_CURRENT_LIST_DIR})
|
|
|
|
macro(nRF5x_toolchainSetup)
|
|
include(${DIR_OF_nRF5x_CMAKE}/arm-gcc-toolchain.cmake)
|
|
endmacro()
|
|
|
|
macro(nRF5x_setup)
|
|
if(NOT DEFINED ARM_GCC_TOOLCHAIN)
|
|
message(FATAL_ERROR "The toolchain must be set up before calling this macro")
|
|
endif()
|
|
# fix on macOS: prevent cmake from adding implicit parameters to Xcode
|
|
set(CMAKE_OSX_SYSROOT "/")
|
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "")
|
|
|
|
# language standard/version settings
|
|
set(CMAKE_C_STANDARD 99)
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
|
|
# CPU specyfic settings
|
|
if (NRF_TARGET MATCHES "nrf51")
|
|
# nRF51 (nRF51-DK => PCA10028)
|
|
if(NOT DEFINED NRF5_LINKER_SCRIPT)
|
|
set(NRF5_LINKER_SCRIPT "${CMAKE_SOURCE_DIR}/gcc_nrf51.ld")
|
|
endif()
|
|
set(CPU_FLAGS "-mcpu=cortex-m0 -mfloat-abi=soft")
|
|
add_definitions(-DBOARD_PCA10028 -DNRF51 -DNRF51422)
|
|
add_definitions(-DSOFTDEVICE_PRESENT -DS130 -DNRF_SD_BLE_API_VERSION=2 -DSWI_DISABLE0 -DBLE_STACK_SUPPORT_REQD)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/softdevice/s130/headers"
|
|
"${NRF5_SDK_PATH}/components/softdevice/s130/headers/nrf51"
|
|
)
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/modules/nrfx/mdk/system_nrf51.c"
|
|
"${NRF5_SDK_PATH}/modules/nrfx/mdk/gcc_startup_nrf51.S"
|
|
)
|
|
set(SOFTDEVICE_PATH "${NRF5_SDK_PATH}/components/softdevice/s130/hex/s130_nrf51_2.0.0_softdevice.hex")
|
|
elseif (NRF_TARGET MATCHES "nrf52")
|
|
# nRF52 (nRF52-DK => PCA10040)
|
|
|
|
if(NOT DEFINED NRF5_LINKER_SCRIPT)
|
|
set(NRF5_LINKER_SCRIPT "${CMAKE_SOURCE_DIR}/gcc_nrf52.ld")
|
|
endif()
|
|
set(CPU_FLAGS "-mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16")
|
|
add_definitions(-DNRF52 -DNRF52832 -DNRF52832_XXAA -DNRF52_PAN_74 -DNRF52_PAN_64 -DNRF52_PAN_12 -DNRF52_PAN_58 -DNRF52_PAN_54 -DNRF52_PAN_31 -DNRF52_PAN_51 -DNRF52_PAN_36 -DNRF52_PAN_15 -DNRF52_PAN_20 -DNRF52_PAN_55 -DBOARD_PCA10040)
|
|
add_definitions(-DFREERTOS)
|
|
add_definitions(-DDEBUG_NRF_USER)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/drivers_nrf/nrf_soc_nosd"
|
|
)
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/modules/nrfx/mdk/system_nrf52.c"
|
|
"${NRF5_SDK_PATH}/modules/nrfx/mdk/gcc_startup_nrf52.S"
|
|
)
|
|
endif ()
|
|
|
|
set(COMMON_FLAGS "-MP -MD -mthumb -mabi=aapcs -Wall -g3 -ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin --short-enums ${CPU_FLAGS} -Wreturn-type -Werror=return-type")
|
|
|
|
# compiler/assambler/linker flags
|
|
set(CMAKE_C_FLAGS "${COMMON_FLAGS}")
|
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g3")
|
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")
|
|
set(CMAKE_CXX_FLAGS "${COMMON_FLAGS}")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g3")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
|
|
set(CMAKE_ASM_FLAGS "-MP -MD -std=c99 -x assembler-with-cpp")
|
|
set(CMAKE_EXE_LINKER_FLAGS "-mthumb -mabi=aapcs -std=gnu++98 -std=c99 -L ${NRF5_SDK_PATH}/modules/nrfx/mdk -T${NRF5_LINKER_SCRIPT} ${CPU_FLAGS} -Wl,--gc-sections --specs=nano.specs -lc -lnosys -lm")
|
|
# note: we must override the default cmake linker flags so that CMAKE_C_FLAGS are not added implicitly
|
|
set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_COMPILER} <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
|
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_C_COMPILER} <LINK_FLAGS> <OBJECTS> -lstdc++ -o <TARGET> <LINK_LIBRARIES>")
|
|
|
|
# basic board definitions and drivers
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components"
|
|
"${NRF5_SDK_PATH}/components/boards"
|
|
"${NRF5_SDK_PATH}/components/softdevice/common"
|
|
"${NRF5_SDK_PATH}/integration/nrfx"
|
|
"${NRF5_SDK_PATH}/integration/nrfx/legacy"
|
|
"${NRF5_SDK_PATH}/modules/nrfx"
|
|
"${NRF5_SDK_PATH}/modules/nrfx/drivers/include"
|
|
"${NRF5_SDK_PATH}/modules/nrfx/hal"
|
|
"${NRF5_SDK_PATH}/modules/nrfx/mdk"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/boards/boards.c"
|
|
"${NRF5_SDK_PATH}/integration/nrfx/legacy/nrf_drv_clock.c"
|
|
"${NRF5_SDK_PATH}/modules/nrfx/drivers/src/nrfx_clock.c"
|
|
"${NRF5_SDK_PATH}/modules/nrfx/drivers/src/nrfx_gpiote.c"
|
|
"${NRF5_SDK_PATH}/modules/nrfx/soc/nrfx_atomic.c"
|
|
"${NRF5_SDK_PATH}/modules/nrfx/drivers/src/nrfx_saadc.c"
|
|
)
|
|
|
|
# freertos SRC
|
|
list(APPEND SDK_SOURCE_FILES
|
|
${NRF5_SDK_PATH}/external/freertos/source/croutine.c
|
|
${NRF5_SDK_PATH}/external/freertos/source/event_groups.c
|
|
${NRF5_SDK_PATH}/external/freertos/source/portable/MemMang/heap_1.c
|
|
${NRF5_SDK_PATH}/external/freertos/source/list.c
|
|
${NRF5_SDK_PATH}/external/freertos/source/queue.c
|
|
${NRF5_SDK_PATH}/external/freertos/source/stream_buffer.c
|
|
${NRF5_SDK_PATH}/external/freertos/source/tasks.c
|
|
${NRF5_SDK_PATH}/external/freertos/source/timers.c
|
|
${NRF5_SDK_PATH}/components/libraries/timer/app_timer_freertos.c
|
|
)
|
|
|
|
# freertos include
|
|
include_directories(
|
|
${NRF5_SDK_PATH}/external/freertos/source/include
|
|
)
|
|
|
|
# toolchain specific
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/toolchain/cmsis/include"
|
|
)
|
|
|
|
# libraries include
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/libraries/atomic"
|
|
"${NRF5_SDK_PATH}/components/libraries/atomic_fifo"
|
|
"${NRF5_SDK_PATH}/components/libraries/atomic_flags"
|
|
"${NRF5_SDK_PATH}/components/libraries/balloc"
|
|
"${NRF5_SDK_PATH}/components/libraries/bootloader/ble_dfu"
|
|
"${NRF5_SDK_PATH}/components/libraries/cli"
|
|
"${NRF5_SDK_PATH}/components/libraries/crc16"
|
|
"${NRF5_SDK_PATH}/components/libraries/crc32"
|
|
"${NRF5_SDK_PATH}/components/libraries/crypto"
|
|
"${NRF5_SDK_PATH}/components/libraries/csense"
|
|
"${NRF5_SDK_PATH}/components/libraries/csense_drv"
|
|
"${NRF5_SDK_PATH}/components/libraries/delay"
|
|
"${NRF5_SDK_PATH}/components/libraries/ecc"
|
|
"${NRF5_SDK_PATH}/components/libraries/experimental_section_vars"
|
|
"${NRF5_SDK_PATH}/components/libraries/experimental_task_manager"
|
|
"${NRF5_SDK_PATH}/components/libraries/fds"
|
|
"${NRF5_SDK_PATH}/components/libraries/fstorage"
|
|
"${NRF5_SDK_PATH}/components/libraries/gfx"
|
|
"${NRF5_SDK_PATH}/components/libraries/gpiote"
|
|
"${NRF5_SDK_PATH}/components/libraries/hardfault"
|
|
"${NRF5_SDK_PATH}/components/libraries/hci"
|
|
"${NRF5_SDK_PATH}/components/libraries/led_softblink"
|
|
"${NRF5_SDK_PATH}/components/libraries/log"
|
|
"${NRF5_SDK_PATH}/components/libraries/log/src"
|
|
"${NRF5_SDK_PATH}/components/libraries/low_power_pwm"
|
|
"${NRF5_SDK_PATH}/components/libraries/mem_manager"
|
|
"${NRF5_SDK_PATH}/components/libraries/memobj"
|
|
"${NRF5_SDK_PATH}/components/libraries/mpu"
|
|
"${NRF5_SDK_PATH}/components/libraries/mutex"
|
|
"${NRF5_SDK_PATH}/components/libraries/pwm"
|
|
"${NRF5_SDK_PATH}/components/libraries/pwr_mgmt"
|
|
"${NRF5_SDK_PATH}/components/libraries/queue"
|
|
"${NRF5_SDK_PATH}/components/libraries/ringbuf"
|
|
"${NRF5_SDK_PATH}/components/libraries/scheduler"
|
|
"${NRF5_SDK_PATH}/components/libraries/sdcard"
|
|
"${NRF5_SDK_PATH}/components/libraries/slip"
|
|
"${NRF5_SDK_PATH}/components/libraries/sortlist"
|
|
"${NRF5_SDK_PATH}/components/libraries/spi_mngr"
|
|
"${NRF5_SDK_PATH}/components/libraries/stack_guard"
|
|
"${NRF5_SDK_PATH}/components/libraries/strerror"
|
|
"${NRF5_SDK_PATH}/components/libraries/svc"
|
|
"${NRF5_SDK_PATH}/components/libraries/timer"
|
|
"${NRF5_SDK_PATH}/components/libraries/usbd"
|
|
"${NRF5_SDK_PATH}/components/libraries/usbd/class/audio"
|
|
"${NRF5_SDK_PATH}/components/libraries/usbd/class/cdc"
|
|
"${NRF5_SDK_PATH}/components/libraries/usbd/class/cdc/acm"
|
|
"${NRF5_SDK_PATH}/components/libraries/usbd/class/hid"
|
|
"${NRF5_SDK_PATH}/components/libraries/usbd/class/hid/generic"
|
|
"${NRF5_SDK_PATH}/components/libraries/usbd/class/hid/kbd"
|
|
"${NRF5_SDK_PATH}/components/libraries/usbd/class/hid/mouse"
|
|
"${NRF5_SDK_PATH}/components/libraries/usbd/class/msc"
|
|
"${NRF5_SDK_PATH}/components/libraries/util"
|
|
|
|
|
|
)
|
|
|
|
# librarires sources
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/atomic/nrf_atomic.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/balloc/nrf_balloc.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/util/nrf_assert.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/util/app_error.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/util/app_error_weak.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/util/app_error_handler_gcc.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/util/app_util_platform.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/log/src/nrf_log_backend_rtt.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/log/src/nrf_log_backend_serial.c"
|
|
# "${NRF5_SDK_PATH}/components/libraries/log/src/nrf_log_backend_uart.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/log/src/nrf_log_default_backends.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/log/src/nrf_log_frontend.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/log/src/nrf_log_str_formatter.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/memobj/nrf_memobj.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/ringbuf/nrf_ringbuf.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/strerror/nrf_strerror.c"
|
|
)
|
|
|
|
# Segger RTT
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/external/segger_rtt/"
|
|
)
|
|
|
|
#segger rtt
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c"
|
|
"${NRF5_SDK_PATH}/external/segger_rtt/SEGGER_RTT.c"
|
|
"${NRF5_SDK_PATH}/external/segger_rtt/SEGGER_RTT_printf.c"
|
|
)
|
|
|
|
|
|
# Other external
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/external/fprintf/"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/external/utf_converter/utf.c"
|
|
"${NRF5_SDK_PATH}/external/fprintf/nrf_fprintf.c"
|
|
"${NRF5_SDK_PATH}/external/fprintf/nrf_fprintf_format.c"
|
|
)
|
|
|
|
# LCD/GFX
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/external/thedotfactory_fonts"
|
|
)
|
|
|
|
LIST(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/modules/nrfx/drivers/src/nrfx_twi.c"
|
|
)
|
|
|
|
# adds target for erasing
|
|
if(USE_JLINK)
|
|
add_custom_target(FLASH_ERASE
|
|
COMMAND ${NRFJPROG} --eraseall -f ${NRF_TARGET}
|
|
COMMENT "erasing flashing"
|
|
)
|
|
elseif(USE_GDB_CLIENT)
|
|
add_custom_target(FLASH_ERASE
|
|
COMMAND ${GDB_CLIENT_BIN_PATH} -nx --batch -ex 'target extended-remote ${GDB_CLIENT_TARGET_REMOTE}' -ex 'monitor swdp_scan' -ex 'attach 1' -ex 'mon erase_mass'
|
|
COMMENT "erasing flashing"
|
|
)
|
|
elseif(USE_OPENOCD)
|
|
add_custom_target(FLASH_ERASE
|
|
COMMAND ${OPENOCD_BIN_PATH} -f interface/stlink.cfg -c 'transport select hla_swd' -f target/nrf52.cfg -c init -c halt -c 'nrf5 mass_erase' -c reset -c shutdown
|
|
COMMENT "erasing flashing"
|
|
)
|
|
endif()
|
|
|
|
if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin")
|
|
set(TERMINAL "open")
|
|
elseif(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")
|
|
set(TERMINAL "sh")
|
|
else()
|
|
set(TERMINAL "gnome-terminal")
|
|
endif()
|
|
|
|
if(USE_JLINK)
|
|
add_custom_target(START_JLINK
|
|
COMMAND ${TERMINAL} "${DIR_OF_nRF5x_CMAKE}/runJLinkGDBServer-${NRF_TARGET}"
|
|
COMMAND ${TERMINAL} "${DIR_OF_nRF5x_CMAKE}/runJLinkExe-${NRF_TARGET}"
|
|
COMMAND sleep 2s
|
|
COMMAND ${TERMINAL} "${DIR_OF_nRF5x_CMAKE}/runJLinkRTTClient"
|
|
COMMENT "started JLink commands"
|
|
)
|
|
endif()
|
|
|
|
endmacro(nRF5x_setup)
|
|
|
|
# adds a target for comiling and flashing an executable
|
|
macro(nRF5x_addExecutable EXECUTABLE_NAME SOURCE_FILES)
|
|
# executable
|
|
add_executable(${EXECUTABLE_NAME} ${SDK_SOURCE_FILES} ${SOURCE_FILES})
|
|
set_target_properties(${EXECUTABLE_NAME} PROPERTIES SUFFIX ".out")
|
|
set_target_properties(${EXECUTABLE_NAME} PROPERTIES LINK_FLAGS "-Wl,-Map=${EXECUTABLE_NAME}.map")
|
|
|
|
# additional POST BUILD setps to create the .bin and .hex files
|
|
add_custom_command(TARGET ${EXECUTABLE_NAME}
|
|
POST_BUILD
|
|
COMMAND ${CMAKE_SIZE_UTIL} ${EXECUTABLE_NAME}.out
|
|
COMMAND ${CMAKE_OBJCOPY} -O binary ${EXECUTABLE_NAME}.out "${EXECUTABLE_NAME}.bin"
|
|
COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_NAME}.out "${EXECUTABLE_NAME}.hex"
|
|
COMMENT "post build steps for ${EXECUTABLE_NAME}")
|
|
|
|
# custom target for flashing the board
|
|
if(USE_JLINK)
|
|
add_custom_target("FLASH_${EXECUTABLE_NAME}"
|
|
DEPENDS ${EXECUTABLE_NAME}
|
|
COMMAND ${NRFJPROG} --program ${EXECUTABLE_NAME}.hex -f ${NRF_TARGET} --sectorerase
|
|
COMMAND sleep 0.5s
|
|
COMMAND ${NRFJPROG} --reset -f ${NRF_TARGET}
|
|
COMMENT "flashing ${EXECUTABLE_NAME}.hex"
|
|
)
|
|
elseif(USE_GDB_CLIENT)
|
|
add_custom_target("FLASH_${EXECUTABLE_NAME}"
|
|
DEPENDS ${EXECUTABLE_NAME}
|
|
COMMAND ${GDB_CLIENT_BIN_PATH} -nx --batch -ex 'target extended-remote ${GDB_CLIENT_TARGET_REMOTE}' -ex 'monitor swdp_scan' -ex 'attach 1' -ex 'load' -ex 'kill' ${EXECUTABLE_NAME}.hex
|
|
COMMENT "flashing ${EXECUTABLE_NAME}.hex"
|
|
)
|
|
elseif(USE_OPENOCD)
|
|
add_custom_target("FLASH_${EXECUTABLE_NAME}"
|
|
DEPENDS ${EXECUTABLE_NAME}
|
|
COMMAND ${OPENOCD_BIN_PATH} -c "tcl_port disabled" -c "gdb_port 3333" -c "telnet_port 4444" -f interface/stlink.cfg -c 'transport select hla_swd' -f target/nrf52.cfg -c "program \"${EXECUTABLE_NAME}.hex\"" -c reset -c shutdown
|
|
COMMENT "flashing ${EXECUTABLE_NAME}.hex"
|
|
)
|
|
endif()
|
|
|
|
endmacro()
|
|
|
|
# adds app-level scheduler library
|
|
macro(nRF5x_addAppScheduler)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/libraries/scheduler"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/scheduler/app_scheduler.c"
|
|
)
|
|
|
|
endmacro(nRF5x_addAppScheduler)
|
|
|
|
# adds app-level FIFO libraries
|
|
macro(nRF5x_addAppFIFO)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/libraries/fifo"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/fifo/app_fifo.c"
|
|
)
|
|
|
|
endmacro(nRF5x_addAppFIFO)
|
|
|
|
# adds app-level Timer libraries
|
|
macro(nRF5x_addAppTimer)
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/timer/app_timer.c"
|
|
)
|
|
endmacro(nRF5x_addAppTimer)
|
|
|
|
# adds app-level UART libraries
|
|
macro(nRF5x_addAppUART)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/libraries/uart"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/uart/app_uart_fifo.c"
|
|
)
|
|
|
|
endmacro(nRF5x_addAppUART)
|
|
|
|
# adds app-level Button library
|
|
macro(nRF5x_addAppButton)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/libraries/button"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/button/app_button.c"
|
|
)
|
|
|
|
endmacro(nRF5x_addAppButton)
|
|
|
|
# adds app-level GPIOTE library
|
|
macro(nRF5x_addAppGpiote)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/libraries/gpiote"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/gpiote/app_gpiote.c"
|
|
)
|
|
|
|
endmacro(nRF5x_addAppGpiote)
|
|
|
|
# adds BSP (board support package) library
|
|
macro(nRF5x_addBSP WITH_BLE_BTN WITH_ANT_BTN WITH_NFC)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/libraries/bsp"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/bsp/bsp.c"
|
|
)
|
|
|
|
if (${WITH_BLE_BTN})
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/bsp/bsp_btn_ble.c"
|
|
)
|
|
endif ()
|
|
|
|
if (${WITH_ANT_BTN})
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/bsp/bsp_btn_ant.c"
|
|
)
|
|
endif ()
|
|
|
|
if (${WITH_NFC})
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/bsp/bsp_nfc.c"
|
|
)
|
|
endif ()
|
|
|
|
endmacro(nRF5x_addBSP)
|
|
|
|
# adds Bluetooth Low Energy GATT support library
|
|
macro(nRF5x_addBLEGATT)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/ble/nrf_ble_gatt"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/ble/nrf_ble_gatt/nrf_ble_gatt.c"
|
|
)
|
|
|
|
endmacro(nRF5x_addBLEGATT)
|
|
|
|
# adds Bluetooth Low Energy advertising support library
|
|
macro(nRF5x_addBLEAdvertising)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/ble/ble_advertising"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/ble/ble_advertising/ble_advertising.c"
|
|
)
|
|
|
|
endmacro(nRF5x_addBLEAdvertising)
|
|
|
|
# adds Bluetooth Low Energy advertising support library
|
|
macro(nRF5x_addBLEPeerManager)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/auth_status_tracker.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/gatt_cache_manager.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/gatts_cache_manager.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/id_manager.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/nrf_ble_lesc.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/peer_data_storage.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/peer_database.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/peer_id.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/peer_manager.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/peer_manager_handler.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/pm_buffer.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/security_dispatcher.c"
|
|
"${NRF5_SDK_PATH}/components/ble/peer_manager/security_manager.c"
|
|
)
|
|
|
|
endmacro(nRF5x_addBLEPeerManager)
|
|
|
|
# adds app-level FDS (flash data storage) library
|
|
macro(nRF5x_addAppFDS)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/libraries/fds"
|
|
"${NRF5_SDK_PATH}/components/libraries/fstorage"
|
|
"${NRF5_SDK_PATH}/components/libraries/experimental_section_vars"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/libraries/fds/fds.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/fstorage/nrf_fstorage.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/fstorage/nrf_fstorage_sd.c"
|
|
"${NRF5_SDK_PATH}/components/libraries/fstorage/nrf_fstorage_nvmc.c"
|
|
)
|
|
|
|
endmacro(nRF5x_addAppFDS)
|
|
|
|
# adds NFC library
|
|
# macro(nRF5x_addNFC)
|
|
# # NFC includes
|
|
# include_directories(
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/conn_hand_parser"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/conn_hand_parser/ac_rec_parser"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/conn_hand_parser/ble_oob_advdata_parser"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/conn_hand_parser/le_oob_rec_parser"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/connection_handover/ac_rec"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/connection_handover/ble_oob_advdata"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/connection_handover/ble_pair_lib"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/connection_handover/ble_pair_msg"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/connection_handover/common"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/connection_handover/ep_oob_rec"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/connection_handover/hs_rec"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/connection_handover/le_oob_rec"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/generic/message"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/generic/record"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/launchapp"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/parser/message"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/parser/record"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/text"
|
|
# "${NRF5_SDK_PATH}/components/nfc/ndef/uri"
|
|
# "${NRF5_SDK_PATH}/components/nfc/t2t_lib"
|
|
# "${NRF5_SDK_PATH}/components/nfc/t2t_parser"
|
|
# "${NRF5_SDK_PATH}/components/nfc/t4t_lib"
|
|
# "${NRF5_SDK_PATH}/components/nfc/t4t_parser/apdu"
|
|
# "${NRF5_SDK_PATH}/components/nfc/t4t_parser/cc_file"
|
|
# "${NRF5_SDK_PATH}/components/nfc/t4t_parser/hl_detection_procedure"
|
|
# "${NRF5_SDK_PATH}/components/nfc/t4t_parser/tlv"
|
|
# )
|
|
#
|
|
# list(APPEND SDK_SOURCE_FILES
|
|
# "${NRF5_SDK_PATH}/components/nfc"
|
|
# )
|
|
#
|
|
# endmacro(nRF5x_addNFC)
|
|
|
|
macro(nRF5x_addBLEService NAME)
|
|
include_directories(
|
|
"${NRF5_SDK_PATH}/components/ble/ble_services/${NAME}"
|
|
)
|
|
|
|
list(APPEND SDK_SOURCE_FILES
|
|
"${NRF5_SDK_PATH}/components/ble/ble_services/${NAME}/${NAME}.c"
|
|
)
|
|
|
|
endmacro(nRF5x_addBLEService)
|