-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Attributes on dynamic endpoints can't be non-volatile #20093
Comments
When configuring attributes in ZAP, there are three mutually exclusive storage modes: RAM, non-volatile, external. We use two bits to represent these three mutually exclusive states. The check represents the use of the bits we have. The problems with introducing a fourth (external but non-volatile) state, especially for dynamic endpoint are as follows:
Fundamentally, for an external attribute, storage is up to the implementation of the external attribute... If that implementation wants to use the same keys as "normal" non-volatile attribute storage, it can. |
I think the problem is that some clusters have a dependency on whether a certain attribute is non-volatile. For example, in the on-off cluster, the start-up-on-off behaviour only works if the on-off and the start-up-on-off attributes are non-volatile ( In cases where all the endpoints are dynamic, this check fails, since even though the attributes are non-volatile, they are in external storage. |
Ah. That is a problem, thank you for the clarification.... @jmartinez-silabs We should probably either adjust those checks to exclude external attributes, or in fact allow flagging external things as non-volatile and exclude them in other places where we currently test |
In particular, |
We have clusters doing non-volatility sanity checks, but for external attributes we can't conclusively say they are volatile, and the clusters don't work right if we assume they are. So instead assume that if the spec says N the external attribute is in fact non-volatile. Fixes project-chip#20093
#20144 should at least fix the issue @chiragatal describes. The actual non-volatility is still the responsibility of the implementation of the external attribute. |
Problem
Attributes on dynamic endpoints have a mask
EXTERNAL_STORAGE
. They can't be non-volatile because we check whether an attribute is non-volatile byCan we have non-volatile attributes on dynamic endpoints? Or can we remove the external-storage check from the non-volatile check?
Proposed Solution
<suggested fix, suggested enhancement>
The text was updated successfully, but these errors were encountered: