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

How is CONFIG_OPCODE_COMPOSITION_DATA_GET handled by a Bluetooth mesh server?

I am writing a bluetooth mesh application with a server and client. Provisioning is working, but the configuration of the server is giving me problems.

I have based my application on the Light Switch example from the Mesh SDK v0.10 and can't seem to figurer out how the configuring is handled on the server.

When calling config_client_composition_data_get() from the client, the configuration times out.

How does the server handle the CONFIG_OPCODE_COMPOSITION_DATA_GET message? Is it handled by one the deeper layers or should the application handle the answering? And what could course this error?

Edit 1: After some testing, it seems like the provisioner might be the cause of the problem. Are there anything I should be aware of before calling config_client_composition_data_get() from the provisioner? Like any variables that should absolutely be set before the function call?

Edit 2: After some further testing I am now very sure it is the provisioner who is not sending the message. How do i test what goes wrong in the provisioner? And again, what could the problem be?

  • I figured out the problem with help from @Hung Bui.

    I was trying use a wrong value as the servers unicast address (0x0001). In the light switch example a UNPROV_START_ADDRESS of 0x0100 is used instead as the first address. After changing to 0x0100 it seems work.

    Edit: After continuing work on the project, the same error has popped up again. So this solution didn't actually work. I have asked a new question because I thought was too much information to just update this question.

  • I don't see any problem with that 0x0001 address. In our example we reserved 0x0xxx address for the clients (the elements on the client side) and address 0x01xx for the server. Just to split the addresses domain for client and for server. The clients get addresses assigned themself by the code in main.c and the server the address assigned by the provisioner. Not sure what's exactly the problem you have.

Related