private void HandleDeviceAdded(OpenHome.Net.ControlPoint.CpDeviceList aList, OpenHome.Net.ControlPoint.CpDevice aDevice) { string xml; if (!aDevice.GetAttribute("Upnp.DeviceXml", out xml)) { Console.WriteLine("Device has no DeviceXml."); return; } string uri; if (!aDevice.GetAttribute("Upnp.Location", out uri)) { Console.WriteLine("Device has no Location???"); return; } var info = UpnpDeviceInfo.FromXmlString( xml, new Uri(uri), new HttpFetcher()); iDevices.AddDevice(info); var deviceAddedDelegate = DeviceAdded; if (deviceAddedDelegate != null) { deviceAddedDelegate.Invoke(this, new UpnpDeviceEventArgs { DeviceInfo = info }); } }
public static UpnpDeviceInfo FromXmlDeviceNode(XElement aDeviceNode, Uri aDocUri, IHttpFetcher aFetcher) { var instance = new UpnpDeviceInfo(); List <UpnpDeviceInfo> embeddedDevices = new List <UpnpDeviceInfo>(); List <UpnpServiceInfo> services = new List <UpnpServiceInfo>(); instance.EmbeddedDevices = embeddedDevices; instance.Services = services; foreach (var item in aDeviceNode.Elements()) { if (item.Name == UpnpDeviceXml.DeviceTypeElement) { instance.DeviceType = item.Value; } if (item.Name == UpnpDeviceXml.FriendlyNameElement) { instance.FriendlyName = item.Value; } if (item.Name == UpnpDeviceXml.ManufacturerElement) { instance.Manufacturer = item.Value; } if (item.Name == UpnpDeviceXml.ManufacturerURLElement) { instance.ManufacturerURL = item.Value; } if (item.Name == UpnpDeviceXml.ModelDescriptionElement) { instance.ModelDescription = item.Value; } if (item.Name == UpnpDeviceXml.ModelNameElement) { instance.ModelName = item.Value; } if (item.Name == UpnpDeviceXml.ModelNumberElement) { instance.ModelNumber = item.Value; } if (item.Name == UpnpDeviceXml.ModelURLElement) { instance.ModelURL = item.Value; } if (item.Name == UpnpDeviceXml.SerialNumberElement) { instance.SerialNumber = item.Value; } if (item.Name == UpnpDeviceXml.UDNElement) { instance.UDN = item.Value; } if (item.Name == UpnpDeviceXml.UPCElement) { instance.UPC = item.Value; } if (item.Name == UpnpDeviceXml.DeviceListElement) { foreach (var embeddedDeviceNode in item.Elements(UpnpDeviceXml.DeviceElement)) { embeddedDevices.Add(UpnpDeviceInfo.FromXmlDeviceNode(embeddedDeviceNode, aDocUri, aFetcher)); } } if (item.Name == UpnpDeviceXml.ServiceListElement) { foreach (var serviceNode in item.Elements(UpnpDeviceXml.ServiceElement)) { services.Add(UpnpServiceInfo.FromXmlServiceNode(serviceNode, aDocUri, aFetcher)); } } } instance.BaseURI = aDocUri; return(instance); }
public static UpnpDeviceInfo FromXmlDeviceNode(XElement aDeviceNode, Uri aDocUri, IHttpFetcher aFetcher) { var instance = new UpnpDeviceInfo(); List<UpnpDeviceInfo> embeddedDevices = new List<UpnpDeviceInfo>(); List<UpnpServiceInfo> services = new List<UpnpServiceInfo>(); instance.EmbeddedDevices = embeddedDevices; instance.Services = services; foreach (var item in aDeviceNode.Elements()) { if (item.Name == UpnpDeviceXml.DeviceTypeElement) { instance.DeviceType = item.Value; } if (item.Name == UpnpDeviceXml.FriendlyNameElement) { instance.FriendlyName = item.Value; } if (item.Name == UpnpDeviceXml.ManufacturerElement) { instance.Manufacturer = item.Value; } if (item.Name == UpnpDeviceXml.ManufacturerURLElement) { instance.ManufacturerURL = item.Value; } if (item.Name == UpnpDeviceXml.ModelDescriptionElement) { instance.ModelDescription = item.Value; } if (item.Name == UpnpDeviceXml.ModelNameElement) { instance.ModelName = item.Value; } if (item.Name == UpnpDeviceXml.ModelNumberElement) { instance.ModelNumber = item.Value; } if (item.Name == UpnpDeviceXml.ModelURLElement) { instance.ModelURL = item.Value; } if (item.Name == UpnpDeviceXml.SerialNumberElement) { instance.SerialNumber = item.Value; } if (item.Name == UpnpDeviceXml.UDNElement) { instance.UDN = item.Value; } if (item.Name == UpnpDeviceXml.UPCElement) { instance.UPC = item.Value; } if (item.Name == UpnpDeviceXml.DeviceListElement) { foreach (var embeddedDeviceNode in item.Elements(UpnpDeviceXml.DeviceElement)) { embeddedDevices.Add(UpnpDeviceInfo.FromXmlDeviceNode(embeddedDeviceNode, aDocUri, aFetcher)); } } if (item.Name == UpnpDeviceXml.ServiceListElement) { foreach (var serviceNode in item.Elements(UpnpDeviceXml.ServiceElement)) { services.Add(UpnpServiceInfo.FromXmlServiceNode(serviceNode, aDocUri, aFetcher)); } } } instance.BaseURI = aDocUri; return instance; }