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

Instances of Model Subscription lists / sharing in nRF mesh

Hello,

I have understanding issues with model inheritance and subscription list (and publish address) sharing.

The Mesh Profile Spec 1.0.1 (chapter 4.2.3) states:

"Within an element, each model has a separate instance of a Subscription List, unless the model extends another model on that element. Instances of models that extend other models (i.e., all models within an extension relation tree) shall share a single instance of a Subscription List per element."

1) However, I have flashed the "light lightness server example" of the latest nRF mesh SDK 4.1 and the nRF mesh app and I can define a different subscription list for both the "Generic Level Server" and e.g. the "Light Lightness server". Isn't this contradictory to what should be happening?

2) The same goes for the publish address, sadly the standard is not very clear in this case and only states "Within an element, each model has a separate instance of Model Publication state." (Mesh Profile Spec 1.0.1 in chapter 4.2.2). It does not talk about model extension.

3) Is there some weird part that I am missing, e.g. is it possible to add a LightLightness Server and a Generic Level Server on one element without adding e.g. the Generic OnOff which is also in the extension relation tree? But won't the LightLightness Server also process the GenericLevel and GenericOnOff messages because it inherits them?

Thanks,

Marius

Parents
  • Hi,

    1. How did you conclude that the subscription lists are different for level server and lightness server? If you look at the code, they are one and the same. 
    2. Each Model represented by a distinct Model ID has a separate instance of a model publication state. This is managed by the access layer in the mesh stack. This requirement is unaffected by the extension. Note that this is the opposite of the requirement for the subscription list. Having a separate subscription list for each inherited model in an extended model is not much of use considering the fact that only certain model will understand certain opcodes meant for it.
    3. No, you cannot add Generic Level server on the same element as that of the Light Lightness Server. The reason being Light Lightness Server model initialization API initializes the inherited models internally. This is also crossed checked by the access layer when initializing the new models and the access layer will return an error if you try to add a model with the same Model ID more than once to any element. 
  • Thank you, that clears it up. I also found out some of the stuff while working with nrf mesh and checking all the messages that were sent on the access layer. The nRF Mesh app does however behave very weird in this behaviour and does (in my opinion) not represent subscription list sharing properly, as the subscription can be managed on every model and does not affect the subscription lists on inherited models.

Reply
  • Thank you, that clears it up. I also found out some of the stuff while working with nrf mesh and checking all the messages that were sent on the access layer. The nRF Mesh app does however behave very weird in this behaviour and does (in my opinion) not represent subscription list sharing properly, as the subscription can be managed on every model and does not affect the subscription lists on inherited models.

Children
No Data
Related