All items listed TR-098 specifications with 'P' are either normal blocks or table blocks. All items listed with 'R' or 'W' are parameters. Blocks with multiple instances are table blocks. If 'C' is mentioned along with table blocks, then ACS can create new instances (records).
TR-069 specifications is not very clear about transaction boundaries. It indicates that parameters of a block can be set across multiple 'SetParamterValues' methods, but it did not define any transaction semantics . Hence it is better to assume that transaction boundary is limited to one instance of 'SetParamterValues' method.
If the values of parameters for a record come in multiple 'SetParamterValues' methods, it would be difficult for device to know the end and that might lead to interoperability problems if device validates parameters prematurely.
For interoperability, I suggest following guidelines for ACS and Device.
- Always create a record with default values for all parameters when instances is created with 'AddObject' method. By doing so, even if ACS sets the values of newly created instance across multiple SetParamterValue methods, device validation does not fail.
- Since one SetParameterValues method can contain parameters belonging to multiple instances of newly created records and parameters belonging to different blocks, it is required that device maintains semantics of transaction - Check for validity of all parameters first. If validation of all paramters is fine, then only it should program its internal functions.
- Always set values of parameters of newly created instance in one SetParamterValues method.
- Don't send parameters belonging to different instances of table blocks or differenet normal blocks in one 'SetParamterValues' method.