예제 #1
0
        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
                });
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
 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;
 }