Does the config client in nordic mesh SDK use composition data for anything in any example

We are using nordic SDK 16.0.0 and mesh SDK 4.2.0 with a nRF52840 chip.

Our products already have the provisioner/provisionee and config client/server implemented, based on the provisioner and light switch server examples.

We just learned what "composition data" is, a list of the models implemented by the device, that are sent to the config client so it knows what the features can be configured on the server device. The part where the node sends the composition data to the config client looks like it is implemented on my SDK version at least, but I could not find any parsing of this message on the config client side.

We are just using the node URI to choose the correct config scenario. This is very limited, as two firmware versions with the same URI but different models implemented don't benefit from the advantage of sending the composition data. Am I correct in my interpretation?

EDIT: Well, it looks like the handling of the composition data get message is done correctly on the config server side, since the nRF Mesh app on the smartphone can determine the model structure but commenting the NODE_SETUP_CONFIG_COMPOSITION_GET on CONFIG_SCENARIO_COMMON in config_scenarios.h and reprogramming the provisioner makes no difference as expected during the configuration phase. Has work started implementing something that parses the composition data on the config client side?

  • Hi,

    The provisioner example in nRF5 SDK for Mesh does some configuration, yes, but it is not based on the composition data. Instead, each example in the SDK uses a UUID specific to the example, and the provisioner knows the composition of the node based on this UUID. Thereby no need to parse the composition data.

    You can get the composition data with config_client_composition_data_get(), but I did not find any API for parsing it or otherwise read out the information in a structured manner. I have asked our Mesh team about this, and will get back to you when I get a response.

    Correctly sending composition data is part of spec requirements, and so is implemented fully.

    New development and new features are no longer added to nRF5 SDK for Mesh, as nRF5 SDK has entered maintenance mode. New development is done in nRF Connect SDK. See nRF Connect SDK and nRF5 SDK statement.

    Regards,
    Terje

  • Hi,

    I can confirm that parsing of the composition data is not implemented in the SDK, so you must parse it yourself.

    Register a status handler for the config client, which handles the CONFIG_OPCODE_COMPOSITION_DATA_STATUS events which will have a config_msg_composition_data_status_t containing the raw composition data in its data field. The format is as specified for "Composition Data Page 0" in the Mesh Profile Specification.

    Regards,
    Terje

  • Thank you tesc for the fast support and suggestions, we will be looking into upgrading to nRF Connect SDK in the future.

  • Hi,

    Please note that the differences between nRF5 SDK and nRF Connect SDK are so big that there is no direct DFU path from one to the other. In fact it may be impossible to do the switch without physical access to reprogram the device. In other words you may be left with having to use nRF5 SDK for Mesh v5.0.0 for your devices.

    Please also note that there are some important patches and bug fixes in nRF5 SDK for Mesh v5, which means you should already today change to that version of the SDK (or have a plan for quickly upgrading to an application built on that SDK version.)

    Regards,
    Terje

Related