UPnP 体系架构和基本原理 —— UPnP的描述文件
UPnP 体系架构和基本原理 —— UPnP的描述文件
UPnP的描述文件
UPnP设备描述
一个标准的UPnP设备描述模板(图中“red”字样为UPnP Forum定义;“purple”字样为UPnP设备制造商定义;“green”字样为UPnP Device Architecture定义)。
一些主要标签介绍如下:
◆ <root>
必需标签。<root>
到</root>
之间包含根设备属性信息,根设备服务信息,根设备的嵌入式设备信息。其中根设备的服务信息在<serviceList>
标签内,根设备内部的嵌入式设备的信息在<deviceList>
标签内。
◆ <UDN>
必需标签。UPnP设备的唯一标识符,由一个小于64个字符的字符串组成。
◆ <deviceType>
必需标签。UPnP设备类型,通常有UPnP Forum定义的标准设备和UPnP设备制造商定义的设备两种情况。UPnP Forum定义的标准设备模型为“urn:schemas-upnp-org:device:deviceType:ver”,而UPnP设备制造商定义的设备模型为“urn:domain-name:device:deviceType:ver”。其中“deviceType”为设备类型,“ver”为最高支持版本,“domain-name”为UPnP设备制造商的域名,不超过64个字符。
◆ <friendlyName>
必需标签。用户可见的设备名,由UPnP厂商指定一个小于64个字符的字符串。
◆ <service>
当该设备提供服务时必需。<service>
到</service>
之间包含服务描述。有服务类型(<serviceType>
)、服务ID(<serviceId>
)、服务描述文件的URL(<SCPDURL>
)、服务控制的URL(<controlURL>
)和服务事件的URL(<eventSubURL>
)。
◆ <serviceType>
必需标签。服务类型,通常有UPnP Forum定义的标准服务和UPnP设备制造商定义的服务两种情况。UPnP Forum定义的标准服务模型为“urn:schemas-upnp-org:service:serviceType:ver”,而UPnP设备制造商定义的设备模型为“urn:domain-name:service:serviceType:ver”。其中serviceType”为服务类型,其余定义的意义与<deviceType>
标签一致。
◆ <serviceId>
必需标签。服务ID,在其设备描述中必须唯一。通常有UPnP Forum定义的标准服务ID和UPnP设备制造商定义的服务ID两种情况。UPnP Forum定义的标准服务ID模型为“urn:schemas-upnp-org:service:serviceID”,而UPnP设备制造商定义的设备模型ID为“urn:domain-name:service:serviceID”。其中serviceID”一般与该服务的<serviceType>
中的“serviceType”一致,其余定义的意义与<deviceType>
标签一致。
◆ <SCPDURL>
必需标签。服务描述文件的URL,在其设备描述中必须唯一,获取该服务的描述文件时需要。
◆ <controlURL>
必需标签。服务控制的URL,在其设备描述中必须唯一,向该服务发出控制请求时需要。
◆ <eventSubURL>
必需标签。服务事件的URL,在其设备描述中必须唯一,对该服务进行事件订阅、续订、退订以及事件通知时需要。
UPnP服务描述
一个服务描述文件包含服务的动作、动作参数、状态变量表等信息。一个标准的UPnP服务描述模板见(图中“red”字样为UPnP Forum定义;“purple”字样为UPnP设备制造商定义;“green”字样为UPnP Device Architecture定义)。
一些主要标签介绍如下:
◆ <actionList>
当该服务提供动作时必需。服务的动作列表,包含该服务的所有动作描述信息,每个动作使用一个<action>
标签描述。
◆ <action>
必需标签。动作描述,<action>
到</action>
之间包含一个动作的描述。有动作名称(<name>
),与该动作相关的参数表(<argumentList>
)。
◆ <argument>
必需标签。动作的参数描述,<argument>
到<argument>
之间包含一个该动作的相关参数描述信息。有参数名(<name>
),是输入参数还是输出参数(<direction>
),如果需要返回时还包含返回值的描述(<retval>
),以及与该参数对应的状态变量名(relatedStateVariable)。
◆ <serviceStateTable>
当该服务存在状态变量时必需。该服务的状态变量表,<serviceStateTable>
到</serviceStateTable>
之间包含所有的状态变量描述,每一个状态变量使用一个<stateVariable>
标签描述。
◆ <stateVariable>
必需标签。状态变量,<stateVariable>
到</stateVariable>
之间包含一个状态变量的描述信息。有状态变量名(<name>
)、该状态变量的数据类型(<dataType>
),推荐包含该状态变量的默认值(<defaultValue>
)、状态变量的可取值列表(<allowedValueList>
)、数值型状态变量的取值范围(<allowedValueRange>
)。