This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Some questions about how to start the firmware's identification callback of an unprovisioned mesh devices.

Dear BLE mesh experts,

This is how the provisioning screen of my Android app looks:

The intention is to enable the user to provision various unprovisioned ble mesh devices with a single tap on the "Add to mesh" button. Please note that while this screen is visible the app continues to scan for unprovisioned devices. Pushing one of the "Identify" buttons starts the firmware's identification-start-callback (i.e.: mesh_provisionee_start_params_t->prov_device_identification_start_cb).

This is basically working if the app performs the following actions when any of the "Identify" buttons is pushed:

  1. Stop the provisioning scan.
  2. Connect to the device.
  3. Call MeshManagerApi.identifyNode();

The problem is that it takes up to 4 seconds from the moment an "Identify" button is pushed until the firmware actually starts identifying itself (prov_device_identification_start_cb() is called). What I'm trying to accomplish is to have the firmware react immediately. Hence a few questions:

  • Is it (from a technical point of view) OK if the Android app attempts to start device identification on the firmware while it is at the same time scanning for unprovisioned devices? Is there anything special that needs to be considered?
  • Also, is it mandatory for the Android app to connect to the device, before being able to start the device's identification?
  • Or would it technically be OK to start device identification without connecting to the device?

 Any clarifications on that matter, or any ideas how to accelerate the identification process are much appreciated.

Thank you!

Parents
  • Hi.

    I don't have much experience with Android development, so I'll forward this to our mobile developers and ask if they have some suggestions for you.

    Br,
    Joakim

  • Hi Joakim,

    Thanks for your help in that matter.

    Here are little more details:

    Device identification is basically working. The problem is that it takes way too long to execute (even after removing the one second delay that's passed to handler.postDelayed() in the nRF Mesh example).

    To speed the identification process up, I've tried to start device identification without prior connecting. But this doesn't seem to work - the firmware's identification start callback doesn't get called.
    Hence the question if device identification is even supposed to work without prior connecting.

    Any clarifications are welcome,
    Thank you.

Reply
  • Hi Joakim,

    Thanks for your help in that matter.

    Here are little more details:

    Device identification is basically working. The problem is that it takes way too long to execute (even after removing the one second delay that's passed to handler.postDelayed() in the nRF Mesh example).

    To speed the identification process up, I've tried to start device identification without prior connecting. But this doesn't seem to work - the firmware's identification start callback doesn't get called.
    Hence the question if device identification is even supposed to work without prior connecting.

    Any clarifications are welcome,
    Thank you.

Children
Related