Understanding TR-369 GetSupportedDM and GetSupportedDM Response Messages
In this post, we will delve into the TR-369 USP GetSupportedDM Messages and their corresponding GetSupportedDM Response Messages. We'll explore their purpose, structure, and significance in the context of TR-369, shedding light on their role in retrieving supported data models.
So, let's embark on the journey of understanding USP GetSupportedDM Messages.
GetSupportedDM Messages serve as a mechanism for a Controller to request information about the supported data models from a target endpoint in the USP ecosystem, which is basically a CPE device. These messages enable Controllers to discover the available data model in a CPE.
Let's see the GetSupportedDM proto-buff definition from the official usp proto-buffer file:
The purpose of GetSupportedDM Messages is to obtain the list of supported Objects, Parameters, Events, and Commands in the Agent’s Supported Data Model. This allows a Controller to learn what an Agent understands, rather than its current state. So, the USP Controller does NOT retrieve actual parameters but learns the types and definitions of parameters, commands, and events.
GetSupportedDM Request Messages:
When it comes to acquiring data model structure information from a device, TR-369 employs GetSupportedDM messages. A GetSupportedDM message consists of two primary components: the Header and the Body. The Header comprises a unique message ID and a message type, which is set to "GET_SUPPORTED_DM." On the other hand, the Body contains the actual request.
The following fields are most important for the GetSupportedDM Message Request:
Msg Id: A unique identifier assigned by the Endpoint/Controller that generated this Message.
Obj Path: Path to an Object that is requested.
Return Commands: if true, indicates that, in thesupported_objs, the Agent should include the asupported_commands field containing Commands supported by the reported Object(s).
Return Events: if true, indicates that, in thesupported_objs, the Agent should include the asupported_events field containing Events supported by the reported Object(s).
Return Params: if true, indicates that, in thesupported_objs, the Agent should include the asupported_params field containing Parameters supported by the reported Object(s).
GetSupportedDM Response Messages are the corresponding responses generated by the target endpoint in response to a GetSupportedDM Message. These responses provide the requested information about the supported data models.
Let's see the GetSupportedDMResp proto-buff definition from the official usp proto-buffer file:
The following fields are available for the GetSupportedDM Message Response :
Msg Id: An unique identifier assigned by the Endpoint/Controller that generated this Message.
Req Obj Path: Requested Object Path for the GetSupportedDMRequest.
Data Model Inst Uri: Data Model Instance URL for the related USP Agent.
Supported Obj Path: Supported Object Path for the Requested Object Path.
Supported Commands: Supported Commands Path for the Requested Object Path.
Supported Events: Supported Events Path for the Requested Object Path.
Let's see a complete example from the official OBUSPA client (it is a long file, it is better to open a browser instead of a mobile device, i would rather keep it original!) :
{
"header": {
"msg_id": "2023-02-24T22:39:00.883Z",
"msg_type": "GET_SUPPORTED_DM_RESP"
},
"body": {
"response": {
"get_supported_dm_resp": {
"req_obj_results": [
{
"req_obj_path": "Device.",
"data_model_inst_uri": "urn:broadband-forum-org:tr-181-2-12-0",
"supported_objs": [
{
"supported_obj_path": "Device.",
"supported_commands": [
{
"command_name": "ScheduleTimer()",
"input_arg_names": [
"DelaySeconds"
],
"command_type": "CMD_ASYNC"
},
{
"command_name": "Reboot()",
"command_type": "CMD_SYNC"
},
{
"command_name": "FactoryReset()",
"command_type": "CMD_SYNC"
},
{
"command_name": "SelfTestDiagnostics()",
"input_arg_names": [
"X_ARRIS-COM_TestNumber"
],
"output_arg_names": [
"Results"
],
"command_type": "CMD_ASYNC"
}
],
"supported_events": [
{
"event_name": "Boot!",
"arg_names": [
"CommandKey",
"Cause",
"FirmwareUpdated",
"ParameterMap"
]
}
]
},
{
"supported_obj_path": "Device.LocalAgent.",
"supported_events": [
{
"event_name": "Periodic!"
}
],
"supported_params": [
{
"param_name": "UpTime",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SupportedProtocols",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SoftwareVersion",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "EndpointID",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "CertificateNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SupportedFingerprintAlgorithms",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ControllerNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "MTPNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SubscriptionNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "RequestNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.Certificate.{i}.",
"is_multi_instance": true,
"supported_commands": [
{
"command_name": "GetFingerprint()",
"input_arg_names": [
"FingerprintAlgorithm"
],
"output_arg_names": [
"Fingerprint"
],
"command_type": "CMD_SYNC"
}
],
"supported_params": [
{
"param_name": "Alias",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SerialNumber",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Issuer",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.Controller.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_commands": [
{
"command_name": "SendOnBoardRequest()",
"command_type": "CMD_SYNC"
}
],
"supported_params": [
{
"param_name": "Alias",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "EndpointID",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "InheritedRole",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "AssignedRole",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "PeriodicNotifInterval",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "PeriodicNotifTime",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_DATE_TIME",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "USPNotifRetryMinimumWaitInterval",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "USPNotifRetryIntervalMultiplier",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ControllerCode",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ProvisioningCode",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "MTPNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "BootParameterNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.Controller.{i}.MTP.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Protocol",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.Controller.{i}.MTP.{i}.STOMP.",
"supported_params": [
{
"param_name": "Reference",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Destination",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.Controller.{i}.MTP.{i}.CoAP.",
"supported_params": [
{
"param_name": "Host",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Port",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Path",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "EnableEncryption",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.Controller.{i}.MTP.{i}.MQTT.",
"supported_params": [
{
"param_name": "Reference",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Topic",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.Controller.{i}.MTP.{i}.WebSocket.",
"supported_params": [
{
"param_name": "Host",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Port",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Path",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "EnableEncryption",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "KeepAliveInterval",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "CurrentRetryCount",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SessionRetryMinimumWaitInterval",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SessionRetryIntervalMultiplier",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.Controller.{i}.BootParameter.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ParameterName",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.MTP.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Protocol",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Status",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.MTP.{i}.STOMP.",
"supported_params": [
{
"param_name": "Reference",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Destination",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "DestinationFromServer",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.MTP.{i}.CoAP.",
"supported_params": [
{
"param_name": "Port",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Path",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "EnableEncryption",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.MTP.{i}.MQTT.",
"supported_params": [
{
"param_name": "Reference",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ResponseTopicConfigured",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ResponseTopicDiscovered",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "PublishQoS",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.MTP.{i}.WebSocket.",
"supported_params": [
{
"param_name": "Port",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Path",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "EnableEncryption",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "KeepAliveInterval",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.Subscription.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Recipient",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ID",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "CreationDate",
"value_type": "PARAM_DATE_TIME",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "NotifType",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ReferenceList",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Persistent",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "TimeToLive",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "NotifRetry",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "NotifExpiration",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.ControllerTrust.",
"supported_commands": [
{
"command_name": "RequestChallenge()",
"input_arg_names": [
"ChallengeRef",
"RequestExpiration"
],
"output_arg_names": [
"Instruction",
"InstructionType",
"ValueType",
"ChallengeID"
],
"command_type": "CMD_SYNC"
},
{
"command_name": "ChallengeResponse()",
"input_arg_names": [
"ChallengeID",
"Value"
],
"command_type": "CMD_SYNC"
}
],
"supported_params": [
{
"param_name": "RoleNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "CredentialNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ChallengeNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.ControllerTrust.Role.{i}.",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Name",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "PermissionNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.ControllerTrust.Role.{i}.Permission.{i}.",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Order",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Targets",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Param",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Obj",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "InstantiatedObj",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "CommandEvent",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.ControllerTrust.Credential.{i}.",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Role",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Credential",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "AllowedUses",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.ControllerTrust.Challenge.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Description",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Role",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Type",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Value",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BASE_64",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ValueType",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Instruction",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BASE_64",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "InstructionType",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Retries",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "LockoutPeriod",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.LocalAgent.Request.{i}.",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Originator",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Command",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "CommandKey",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Status",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.DeviceInfo.",
"supported_params": [
{
"param_name": "SoftwareVersion",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ProductClass",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Manufacturer",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ModelName",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "HardwareVersion",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "UpTime",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ManufacturerOUI",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SerialNumber",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.Security.",
"supported_params": [
{
"param_name": "CertificateNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.Security.Certificate.{i}.",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "LastModif",
"value_type": "PARAM_DATE_TIME",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SerialNumber",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Issuer",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "NotBefore",
"value_type": "PARAM_DATE_TIME",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "NotAfter",
"value_type": "PARAM_DATE_TIME",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Subject",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SubjectAlt",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SignatureAlgorithm",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.Time.",
"supported_params": [
{
"param_name": "CurrentLocalTime",
"value_type": "PARAM_DATE_TIME",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "LocalTimeZone",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.STOMP.",
"supported_params": [
{
"param_name": "ConnectionNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.STOMP.Connection.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Status",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "LastChangeDate",
"value_type": "PARAM_DATE_TIME",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Host",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Port",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Username",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "EnableEncryption",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "X_ARRIS-COM_EnableEncryption",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "IsEncrypted",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Password",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "VirtualHost",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "EnableHeartbeats",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "OutgoingHeartbeat",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "IncomingHeartbeat",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ServerRetryInitialInterval",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ServerRetryIntervalMultiplier",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ServerRetryMaxInterval",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.MQTT.",
"supported_params": [
{
"param_name": "ClientNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.MQTT.Capabilities.",
"supported_params": [
{
"param_name": "ProtocolVersionsSupported",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "TransportProtocolSupported",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "MaxNumberOfClientSubscriptions",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.MQTT.Client.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "BrokerAddress",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "BrokerPort",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Username",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Password",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "KeepAliveTime",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ProtocolVersion",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ClientID",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Name",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "TransportProtocol",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "CleanSession",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "CleanStart",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "RequestResponseInfo",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "RequestProblemInfo",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ConnectRetryTime",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ConnectRetryIntervalMultiplier",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ConnectRetryMaxInterval",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ResponseInformation",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Status",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "SubscriptionNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.MQTT.Client.{i}.Subscription.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Alias",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Topic",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "QoS",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.BulkData.",
"supported_params": [
{
"param_name": "Enable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Status",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "MinReportingInterval",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Protocols",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "EncodingTypes",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ParameterWildCardSupported",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "MaxNumberOfProfiles",
"value_type": "PARAM_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "MaxNumberOfParameterReferences",
"value_type": "PARAM_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ProfileNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.BulkData.Profile.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_events": [
{
"event_name": "Push!",
"arg_names": [
"Data"
]
}
],
"supported_params": [
{
"param_name": "Alias",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Enable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "X_ARRIS-COM_Status",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Name",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "NumberOfRetainedFailedReports",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Protocol",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "EncodingType",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ReportingInterval",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "TimeReference",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_DATE_TIME",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ParameterNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.BulkData.Profile.{i}.Parameter.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Name",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Reference",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.BulkData.Profile.{i}.JSONEncoding.",
"supported_params": [
{
"param_name": "ReportFormat",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "ReportTimestamp",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.BulkData.Profile.{i}.HTTP.",
"supported_params": [
{
"param_name": "URL",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Username",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Password",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "CompressionsSupported",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Compression",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "MethodsSupported",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Method",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "UseDateHeader",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "RetryEnable",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_BOOLEAN",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "RetryMinimumWaitInterval",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "RetryIntervalMultiplier",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "RequestURIParameterNumberOfEntries",
"value_type": "PARAM_UNSIGNED_INT",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
},
{
"supported_obj_path": "Device.BulkData.Profile.{i}.HTTP.RequestURIParameter.{i}.",
"access": "OBJ_ADD_DELETE",
"is_multi_instance": true,
"supported_params": [
{
"param_name": "Name",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
},
{
"param_name": "Reference",
"access": "PARAM_READ_WRITE",
"value_type": "PARAM_STRING",
"value_change": "VALUE_CHANGE_ALLOWED"
}
]
}
]
}
]
}
}
}
}
One key distinction of GetSupportedDM Messages is how they handle Multi-Instance Objects in Path Names. Path Names to Multi-Instance Objects in GetSupportedDM Messages only address the Object itself, rather than specific instances of the Object. This means that the Path Names do not include instance numbers or identifiers.
To indicate the place of Multi-Instance Objects within the Path Name, GetSupportedDM Messages utilize the {i} identifier. The {i} identifier is a placeholder that represents instances of Multi-Instance Objects in the Path Name. It allows for dynamic addressing of instances when performing operations or retrieving information related to specific instances of Multi-Instance Objects.
Conclusion: USP GetSupportedDM Messages and GetSupportedDM Response Messages play a significant role in facilitating effective communication and discovery of supported data models within the TR-369 USP ecosystem. By leveraging these messages, Controllers can obtain vital information about an endpoint's data model, commands, events, and object structure.
References:
- TR-369 USP Specification, Broadband Forum, https://www.broadband-forum.org/tr-369
- USP Record Definitions, GitHub Repository, https://github.com/BroadbandForum/usp