BLE, ANT+ and Apple Fine My integration

Hello,

I want to combine BLE, ANT+ and Apple Find My in one project.

I have permission to use ANT+ and Apple Find My.

I ran the two examples separately and they worked.

  • ANT BLE Heart Rate Monitor Relay
  • Find My Coexistence

I tried adding Apple Find My to the "ANT BLE Heart Rate Monitor Relay" example:

CONFIG_FMNA=y

And i got the following error after build:
warning: attempt to assign the value 'y' to the undefined symbol FMNA
error: Aborting due to Kconfig warnings


The same problem occurs in the second example, when I try to add ANT Config to the project, the FMNA can't be found. It looks like the ANT library is blocking the FMNA.

Is it possible to integrate these libraries?
Maybe I am missing something?

Parents
  • Hello,

    I did not manage to reproduce this error here. The error you get says the FMNA symbol is defined, but it should be defined in <sdk_root>/find-my/src/Kconfig file. Is it possible that the project may be built against the wrong SDK? The SDK should have the following folder structure:

    SDK_ROOT/
    ├── bootloader
    ├── find-my - Defines Find My related Kconfig symbols
    ├── modules
    ├── nrf
    ├── nrfxlib
    ├── test
    ├── tools
    └── zephyr

    You can find the SDK path used from the build log.

    Best regards,

    Vidar

  • Hello Vidar,
    Thanks for replay.

    Both the "BLE ANT Heart Rate Monitor Relay" and "Find My Coexistence" examples work properly separately. So the SDK should be configured correctly.

    My SDK structure:
    v2.7.0
    ├── ant              <-- ANT
    ├── bootloader
    ├── find-my       <-- FIND-MY
    ├── modules
    ├── nrf
    ├── nrfxlib
    ├── test
    ├── tools
    └── zephyr

    If a proper understand you can run the ANT+, BLE and Find My in one project?


    Steps to reproduce the error:

    1. Click Create a new application next Copy as a sample, select nRF Connect SDK v2.7.0 and chose BLE ANT Heart Rate Monitor Relay, point the path to save.
    2. In prj.conf i change the property CONFIG_ANT_EVALUATION_KEY=n to CONFIG_ANT_EVALUATION_KEY=y, nesesery step to build example.
    3. In Add build configuration, select board nrf52840dk/nrf52840, in Base configuration file add prj.conf, click Build Configuration, and wait for finish build. The compilation should be without any error.
    4. In prj.conf add the configuration line CONFIG_FMNA=y, and build. Now you should get error:

    [0/1] Re-running CMake...
    Loading Zephyr default modules (Zephyr base (cached)).
    -- Application: D:/examples/ble_ant_app_hrm_find_my_2
    -- CMake version: 3.21.0
    -- Cache files will be written to: C:/ncs/v2.7.0/zephyr/.cache
    -- Zephyr version: 3.6.99 (C:/ncs/v2.7.0/zephyr)
    -- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
    -- Board: nrf52840dk, qualifiers: nrf52840
    -- Found host-tools: zephyr 0.16.5 (C:/ncs/toolchains/ce3b5ff664/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.16.5 (C:/ncs/toolchains/ce3b5ff664/opt/zephyr-sdk)
    -- Found BOARD.dts: C:/ncs/v2.7.0/zephyr/boards/nordic/nrf52840dk/nrf52840dk_nrf52840.dts
    -- Generated zephyr.dts: D:/examples/ble_ant_app_hrm_find_my_2/build/zephyr/zephyr.dts
    -- Generated devicetree_generated.h: D:/examples/ble_ant_app_hrm_find_my_2/build/zephyr/include/generated/devicetree_generated.h
    -- Including generated dts.cmake file: D:/examples/ble_ant_app_hrm_find_my_2/build/zephyr/dts.cmake
    
    d:/examples/ble_ant_app_hrm_find_my_2/prj.conf:10: warning: attempt to assign the value 'y' to the undefined symbol FMNA
    Parsing D:/examples/ble_ant_app_hrm_find_my_2/Kconfig
    Loaded configuration 'C:/ncs/v2.7.0/zephyr/boards/nordic/nrf52840dk/nrf52840dk_nrf52840_defconfig'
    Merged configuration 'd:/examples/ble_ant_app_hrm_find_my_2/prj.conf'
    
    error: Aborting due to Kconfig warnings
    
    CMake Error at C:/ncs/v2.7.0/zephyr/cmake/modules/kconfig.cmake:392 (message):
      command failed with return code: 1
    Call Stack (most recent call first):
      C:/ncs/v2.7.0/nrf/cmake/modules/kconfig.cmake:29 (include)
      C:/ncs/v2.7.0/zephyr/cmake/modules/zephyr_default.cmake:132 (include)
      C:/ncs/v2.7.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:66 (include)
      C:/ncs/v2.7.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:97 (include_boilerplate)
      CMakeLists.txt:6 (find_package)
    
    
    -- Configuring incomplete, errors occurred!
    See also "D:/examples/ble_ant_app_hrm_find_my_2/build/CMakeFiles/CMakeOutput.log".
    See also "D:/examples/ble_ant_app_hrm_find_my_2/build/CMakeFiles/CMakeError.log".
    FAILED: build.ninja 
    C:\ncs\toolchains\ce3b5ff664\opt\bin\cmake.exe --regenerate-during-build -SD:\examples\ble_ant_app_hrm_find_my_2 -BD:\examples\ble_ant_app_hrm_find_my_2\build
    ninja: error: rebuilding 'build.ninja': subcommand failed
    FATAL ERROR: command exited with status 1: 'C:\ncs\toolchains\ce3b5ff664\opt\bin\cmake.EXE' --build 'd:\examples\ble_ant_app_hrm_find_my_2\build'
    
     *  The terminal process terminated with exit code: 1. 
     *  Terminal will be reused by tasks, press any key to close it. 


    Best regards,
    Bartłomiej

Reply
  • Hello Vidar,
    Thanks for replay.

    Both the "BLE ANT Heart Rate Monitor Relay" and "Find My Coexistence" examples work properly separately. So the SDK should be configured correctly.

    My SDK structure:
    v2.7.0
    ├── ant              <-- ANT
    ├── bootloader
    ├── find-my       <-- FIND-MY
    ├── modules
    ├── nrf
    ├── nrfxlib
    ├── test
    ├── tools
    └── zephyr

    If a proper understand you can run the ANT+, BLE and Find My in one project?


    Steps to reproduce the error:

    1. Click Create a new application next Copy as a sample, select nRF Connect SDK v2.7.0 and chose BLE ANT Heart Rate Monitor Relay, point the path to save.
    2. In prj.conf i change the property CONFIG_ANT_EVALUATION_KEY=n to CONFIG_ANT_EVALUATION_KEY=y, nesesery step to build example.
    3. In Add build configuration, select board nrf52840dk/nrf52840, in Base configuration file add prj.conf, click Build Configuration, and wait for finish build. The compilation should be without any error.
    4. In prj.conf add the configuration line CONFIG_FMNA=y, and build. Now you should get error:

    [0/1] Re-running CMake...
    Loading Zephyr default modules (Zephyr base (cached)).
    -- Application: D:/examples/ble_ant_app_hrm_find_my_2
    -- CMake version: 3.21.0
    -- Cache files will be written to: C:/ncs/v2.7.0/zephyr/.cache
    -- Zephyr version: 3.6.99 (C:/ncs/v2.7.0/zephyr)
    -- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
    -- Board: nrf52840dk, qualifiers: nrf52840
    -- Found host-tools: zephyr 0.16.5 (C:/ncs/toolchains/ce3b5ff664/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.16.5 (C:/ncs/toolchains/ce3b5ff664/opt/zephyr-sdk)
    -- Found BOARD.dts: C:/ncs/v2.7.0/zephyr/boards/nordic/nrf52840dk/nrf52840dk_nrf52840.dts
    -- Generated zephyr.dts: D:/examples/ble_ant_app_hrm_find_my_2/build/zephyr/zephyr.dts
    -- Generated devicetree_generated.h: D:/examples/ble_ant_app_hrm_find_my_2/build/zephyr/include/generated/devicetree_generated.h
    -- Including generated dts.cmake file: D:/examples/ble_ant_app_hrm_find_my_2/build/zephyr/dts.cmake
    
    d:/examples/ble_ant_app_hrm_find_my_2/prj.conf:10: warning: attempt to assign the value 'y' to the undefined symbol FMNA
    Parsing D:/examples/ble_ant_app_hrm_find_my_2/Kconfig
    Loaded configuration 'C:/ncs/v2.7.0/zephyr/boards/nordic/nrf52840dk/nrf52840dk_nrf52840_defconfig'
    Merged configuration 'd:/examples/ble_ant_app_hrm_find_my_2/prj.conf'
    
    error: Aborting due to Kconfig warnings
    
    CMake Error at C:/ncs/v2.7.0/zephyr/cmake/modules/kconfig.cmake:392 (message):
      command failed with return code: 1
    Call Stack (most recent call first):
      C:/ncs/v2.7.0/nrf/cmake/modules/kconfig.cmake:29 (include)
      C:/ncs/v2.7.0/zephyr/cmake/modules/zephyr_default.cmake:132 (include)
      C:/ncs/v2.7.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:66 (include)
      C:/ncs/v2.7.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:97 (include_boilerplate)
      CMakeLists.txt:6 (find_package)
    
    
    -- Configuring incomplete, errors occurred!
    See also "D:/examples/ble_ant_app_hrm_find_my_2/build/CMakeFiles/CMakeOutput.log".
    See also "D:/examples/ble_ant_app_hrm_find_my_2/build/CMakeFiles/CMakeError.log".
    FAILED: build.ninja 
    C:\ncs\toolchains\ce3b5ff664\opt\bin\cmake.exe --regenerate-during-build -SD:\examples\ble_ant_app_hrm_find_my_2 -BD:\examples\ble_ant_app_hrm_find_my_2\build
    ninja: error: rebuilding 'build.ninja': subcommand failed
    FATAL ERROR: command exited with status 1: 'C:\ncs\toolchains\ce3b5ff664\opt\bin\cmake.EXE' --build 'd:\examples\ble_ant_app_hrm_find_my_2\build'
    
     *  The terminal process terminated with exit code: 1. 
     *  Terminal will be reused by tasks, press any key to close it. 


    Best regards,
    Bartłomiej

Children
  • Hello Bartłomiej,

    Bartlomiej said:
    If a proper understand you can run the ANT+, BLE and Find My in one project?

    I'm not sure if anyone has tried to combine these three protocols, but I don't see any immediate blockers. I expect you should have enough memory since you are using the nRF52840.

    Bartlomiej said:
    • Click Create a new application next Copy as a sample, select nRF Connect SDK v2.7.0 and chose BLE ANT Heart Rate Monitor Relay, point the path to save.
    • In prj.conf i change the property CONFIG_ANT_EVALUATION_KEY=n to CONFIG_ANT_EVALUATION_KEY=y, nesesery step to build example.
    • In Add build configuration, select board nrf52840dk/nrf52840, in Base configuration file add prj.conf, click Build Configuration, and wait for finish build. The compilation should be without any error.
    • In prj.conf add the configuration line CONFIG_FMNA=y, and build. Now you should get error:

    I repeated these steps, but was unable to reproduce the 'undefined symbol' error for FMNA (I used 'copy as sample' and placed the project .

    Do you have both 'find-my' and 'ant' enabled in your west workspace group filter (/v2.7.0/.west/config)?

    Mine looks like this:

     

    Best regards,

    Vidar

  • Hello Vidar,

    Thanks for help.

    Do you have both 'find-my' and 'ant' enabled in your west workspace group filter (/v2.7.0/.west/config)?

    Mine looks like this:

     

    This is the solution. I only had ant in the group-filter, after adding the find-my, the code was compiled without errors. 



    The source of the issue in short:

    First, I configured the find-my according to the instructions, using the command west config manifest.group-filter +find-my, and ran the example.

    Next, I configured the ant according to the instructions, using the command west config manifest.group-filter +ant, and ran the example. But in this step the command replaced the find-my in group-filter, not add next.

    To configure it properly, update the /v2.7.0/.west/config file. I think it will be worth mentioning this in the documentation of ant and find-my and other external groups.

  • Hello Bartłomiej,

    Thank you for the update. I'm glad it worked. 

    To configure it properly, update the /v2.7.0/.west/config file. I think it will be worth mentioning this in the documentation of ant and find-my and other external groups.

    I agree. It would be nice if west add an option to append configuration values. I will report this internally.

Related