The fundamental purpose of TR-069 is to allow an ACS to interact with the CPE’s instantiated data model, that is, the representation of its current state. The RPCs that form the basis of this include the Get and Set Parameter Values methods.
The SetParameterValues RPC takes two arguments. The first is a ParameterList, an array of ParameterValueStruct, a collection of name/value pairs. These list the parameters an ACS wants to change, and the new values for those parameters.
The second argument is ParameterKey, a value specified by the ACS to track changes in the CPE’s data model. When set, the CPE must set the Device.ManagementServer.ParameterKey to this value ONLY if the SetParameterValues RPC was successful.
If successful the SetParameterValuesResponse returns a single argument, called “Status”. If Status is set to 0, it means that the parameter changes were confirmed and already applied. The ACS can expect that the CPE is in the new state.
If the Status is set to 1, it means that the CPE must take some steps to apply the changes, usually a reboot. If this is the case, the CPE MUST make the changes before the next time it contacts the ACS, so that they ACS can assume the CPE is in the new state by the time the next session begins.
SetParameterValues must occur atomistically - that is, either all of the parameter values are set, or none of them are, and a fault is returned. This makes it important to point out the failure modes of SetParameterValues. Unlike other RPCs, the SetParameterValues method returns a SetParameterValuesFault element for EACH parameter that was attempted to be set, indicating whether it was due to an invalid parameter name, invalid parameter data type, or an invalid parameter value. Additionally, SetParameterValues must fail if it would put the CPE in an invalid configuration state - i.e., something that would disable the device or is not supported by the device.
The GetParameterValues RPC is the mirror of SetParameterValues, and has a much simpler syntax. It takes one argument, ParameterNames, which is an array of strings containing both Complete and Partial data model paths like those we discussed in GetParameterNames. The GetParameterValuesResponse returns our familiar ParameterList array, with a set of ParameterValueStruct elements similar to SetParameterValues giving the parameter name and its value. If GetParameterValues contains a partial path and that path contains no objects or parameters, the GetParameterValuesResponse must provide and empty parameterlist, and must not throw an error.
Our TR-069 training series is updated in real-time as we produce new articles. Come back often for updates or subscribe to our newsletter for more.