1
2
3
4
5 """ Device description XML generator.
6 """
7
8 from xml.etree.cElementTree import ElementTree, Element, SubElement
9
10 from brisa.upnp.upnp_defaults import UPnPDefaults
11
12
44
45
47
50
58
60 element = SubElement(self.device_element, 'dlna:X_DLNADOC')
61 element.attrib['xmlns:dlna'] = 'urn:schemas-dlna-org:device-1-0'
62 element.text = 'DMS-1.50'
63
64 element = SubElement(self.device_element, 'dlna:X_DLNACAP')
65 element.attrib['xmlns:dlna'] = 'urn:schemas-dlna-org:device-1-0'
66 element.text = 'av-upload,image-upload,audio-upload'
67
68 element = SubElement(self.device_element, "deviceType")
69 element.text = self.device.device_type
70
71 element = SubElement(self.device_element, "friendlyName")
72 element.text = self.device.friendly_name
73
74 element = SubElement(self.device_element, "manufacturer")
75 element.text = self.device.manufacturer
76
77 element = SubElement(self.device_element, "manufacturerURL")
78 element.text = self.device.manufacturer_url
79
80 element = SubElement(self.device_element, "modelDescription")
81 element.text = self.device.model_description
82
83 element = SubElement(self.device_element, "modelName")
84 element.text = self.device.model_name
85
86 element = SubElement(self.device_element, "modelNumber")
87 element.text = self.device.model_number
88
89 element = SubElement(self.device_element, "modelURL")
90 element.text = self.device.model_url
91
92 element = SubElement(self.device_element, "serialNumber")
93 element.text = self.device.serial_number
94
95 element = SubElement(self.device_element, "UDN")
96 element.text = self.device.udn
97
98 element = SubElement(self.device_element, "UPC")
99 element.text = self.device.upc
100
101 element = SubElement(self.device_element, "presentationURL")
102 element.text = self.device.presentation_url
103
105
106 device_icons = self.device.icons
107 if len(device_icons) > 0:
108 icon_list_element = SubElement(self.device_element, "iconList")
109 for device_icon in device_icons:
110 icon_element = SubElement(icon_list_element, "icon")
111 element = SubElement(icon_element, "mimetype")
112 element.text = device_icon.get_mimetype()
113
114 element = SubElement(icon_element, "width")
115 element.text = device_icon.get_width()
116
117 element = SubElement(icon_element, "height")
118 element.text = device_icon.get_height()
119
120 element = SubElement(icon_element, "depth")
121 element.text = device_icon.get_depth()
122
123 element = SubElement(icon_element, "url")
124 element.text = device_icon.get_url()
125
127 device_services = self.device.services
128 if len(device_services) > 0:
129 service_list_element = SubElement(self.device_element,
130 "serviceList")
131 for k, device_service in device_services.items():
132 service_element = SubElement(service_list_element, "service")
133 element = SubElement(service_element, "serviceType")
134 element.text = device_service.service_type
135
136 element = SubElement(service_element, "serviceId")
137 element.text = device_service.id
138
139 element = SubElement(service_element, "SCPDURL")
140 element.text = device_service.scpd_url
141
142 element = SubElement(service_element, "controlURL")
143 element.text = device_service.control_url
144
145 element = SubElement(service_element, "eventSubURL")
146 element.text = device_service.event_sub_url
147
148 element = SubElement(service_element, "presentationURL")
149 element.text = device_service.presentation_url
150
152 if self.device.is_root_device():
153 embedded_devices = self.device.devices
154
155 if len(embedded_devices) > 0:
156 device_list_element = SubElement(self.device_element,
157 "deviceList")
158 for embedded_device in embedded_devices:
159 embedded_device_description = DeviceXMLGenerator(
160 embedded_device)
161 device_list_element.append(embedded_device_description.
162 create_description())
163
164
192
193
195
198
206
208 for action_name, action in actions.iteritems():
209 action_element = SubElement(self.action_list_element, "action")
210
211 element = SubElement(action_element, "name")
212 element.text = action.name
213
214
215 argument_list_element = SubElement(action_element, "argumentList")
216 if action.arguments:
217 self._create_arguments(argument_list_element, action.arguments)
218
220 for arg in arguments:
221 arg_element = SubElement(argument_list_element, "argument")
222
223 element = SubElement(arg_element, "name")
224 element.text = arg.name
225
226 element = SubElement(arg_element, "direction")
227 element.text = arg.direction
228
229 element = SubElement(arg_element, "relatedStateVariable")
230 element.text = arg.state_var.name
231
233 for var_name, var in state_variables.iteritems():
234 var_element = SubElement(self.service_state_table_element, "stateVariable")
235 if var.send_events:
236 var_element.attrib['sendEvents'] = 'yes'
237 else:
238 var_element.attrib['sendEvents'] = 'no'
239
240 element = SubElement(var_element, "name")
241 element.text = var.name
242
243 element = SubElement(var_element, "dataType")
244 element.text = var.data_type
245
246 element = SubElement(var_element, "defaultValue")
247 element.text = var.get_value()
248
249
250 allowed_value_list_element = SubElement(var_element, "allowedValueList")
251
252 for allowed_value in var.allowed_values:
253 element = SubElement(allowed_value_list_element, "allowedValue")
254 element.text = allowed_value
255