Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF5 MESH SDK's ble_app_proximity_coexist doesn't support Proxy mode(GATT_PROXY, MESH_FEATURE_GATT)

Hi All Techies,

IDE :  Segger embedded studio,    version : 3.40

SDK:  nRF5_SDK_15.0.0_053641a  version : 15.0.0

Mesh SDK : nrf5SDKforMeshv220src version : 2.2.0

computer platform : Windows  version : 10

Used hardware : PCA10040, PCA10056 boards

 Initially, I built and run the light_switch demo examples with proxy enabled projects. I tested Proxy_client, Proxy_server, Provisioner projects from nrf5SDKforMeshv220src SDK. All stuff worked well.

Next,  I built and run the ble_app_proximity_coexist project after I copied the project  from nrf5SDKforMeshv220src SDK and pasted inside  nRF5_SDK_15.0.0_053641a. All worked well with default configuration( Without PROXY support,GATT_PROXY = 0, MESH_FEATURE_GATT = 0 ). I used pca10056 as provisioner and 2*pca10040 boards as provisionee. welllll done with this...Provisioner(pca10056) board connected and bind out the two provisionee boards(pca10040). Here, we cannot list the provisionee in nRF_Mesh android app. Right..

 Next, I enabled Proxy support in ble_app_proximity_coexist by simply adding macros ,GATT_PROXY = 1, MESH_FEATURE_GATT = 1 to list the provisionee boards in nRF_mesh android app and make provisioning and binding. built the code. There were some error due to missing files. so I added following files to the project

mesh/Gatt/src

mesh/prov/nrf_mesh_prov_bear_gatt.c

examples/nrf_mesh_weak.c

built the code. There were no errors. built was successful. Downloaded the code into pca10040. System getting RESET continuously.  when I disabled the macros GATT_PROXY = 0, MESH_FEATURE_GATT = 0. System ran well. When I enable these macros system getting reset. By debugging, I found that execution falling at pb_gatt_fsm_action_t pb_gatt_fsm_actions[] in nrf_mesh_prov_bearer_gatt.c file. 

1. what is are the cause/ factors for this issue ?  is it due to BLE_stack and Mesh_stack  using the GATT layer concurrently ? if we comment advertising_init() / start() it works well, why?

2. Is it possible to run the ble_app_proximity_coexist/ ble_app_uart_coexist / ble_app_hrs_mesh with PROXY support. If yes , How to do?

  • Hi Maikkannan, 

    Care should be taken when combining ble proximity and mesh proxy role into one GATT server. As you may know, the mesh stack doesn't handle the BLE connection, it's the softdevice task to handle connection and GATT activity. Both the proximity and the mesh proxy uses GATT and it's handled by the softdevice. There would be only one advertising packet when you are advertising with softdevice. 

    You need to make sure you configure the softdevice stack correctly, including the memory setting (RAM). 

    In addition, advertising packet should have Mesh Proxy Service UUID and service data so that other devices (phone) can detect that it's a proxy node. 

    But in theory it should be possible to have both the Mesh Proxy Service and the other GATT service (proximity) at the same time. 

    Please try to debug and find why it resets, at which line of code. You may want to follow this guide.

Related