At current capabilities must handle the locking and all other concerns of the ZDA implementation. This means we see a lot of duplication of code, exposure to complex ZCL interfaces (which require node level attributes) - and lots of posibilities for incorrect locking behaviour.
The aim is to refactor the interface between ZDA and Capabilties so that:
Capabilities do not need to be concerned about ZDA locking.
This means structures passed into the capability must be copies.
Wrap calls to ZCL, so they just take the device object the capability was provided.
Means that access to SupportsAPSAck, the transaction sequence are hidden.
Capabilities store their own data.
Capabilities can obtain other capabilities from the ZDA (i.e. can get HasProductInformation if needed).
At current capabilities must handle the locking and all other concerns of the ZDA implementation. This means we see a lot of duplication of code, exposure to complex ZCL interfaces (which require node level attributes) - and lots of posibilities for incorrect locking behaviour.
The aim is to refactor the interface between ZDA and Capabilties so that: