Exemplo n.º 1
0
        public ModelVolumeControlUpnpAv(Preamp aPreamp)
        {
            iPreamp = aPreamp;
            iInstanceId = 0;

            iVolumeLimiter = new VolumeLimiter(this);

            try
            {
                iServiceRenderingControl = new ServiceRenderingControl(aPreamp.Device, aPreamp.House.EventServer);
            }
            catch (ServiceException)
            {
                throw new ModelSourceException(301, "Service failure");
            }

            iActionSetMute = iServiceRenderingControl.CreateAsyncActionSetMute();
            iActionSetVolume = iServiceRenderingControl.CreateAsyncActionSetVolume();
        }
Exemplo n.º 2
0
            public void DoOpened()
            {
                Lock();

                if (iKilled)
                {
                    Unlock();
                    return;
                }

                // Is this a Sonos device

                XmlNode root = Linn.ControlPoint.Upnp.Upnp.DeviceXmlRoot(iDevice.DeviceXml);

                if (root == null)
                {
                    UserLog.WriteLine(DateTime.Now + ": Upnp.DoOpened: " + iDevice.Location + ": failed to find root node");
                    Trace.WriteLine(Trace.kTopology, DateTime.Now + ": Upnp.DoOpened: " + iDevice.Location + ": failed to find root node");
                    Unlock();
                    return;
                }

                if (Linn.ControlPoint.Upnp.Upnp.HasService(root, ServiceDeviceProperties.ServiceType()) > 0)
                {
                    string udn = Linn.ControlPoint.Upnp.Upnp.Udn(root);

                    if (udn == null)
                    {
                        UserLog.WriteLine(DateTime.Now + ": Upnp.DoOpened: " + iDevice.Location + ": failed to find UDN");
                        Trace.WriteLine(Trace.kTopology, DateTime.Now + ": Upnp.DoOpened: " + iDevice.Location + ": failed to find UDN");
                        Unlock();
                        return;
                    }

                    Device sonos = iDevice.RelatedDevice(udn);

                    iServiceDeviceProperties = new ServiceDeviceProperties(sonos, iStack.EventServer);
                    iServiceDeviceProperties.EventSubscriptionError += EventSubscriptionErrorHandler;
                    iServiceDeviceProperties.EventInitial           += SonosInitial;

                    Unlock();

                    return;
                }


                XmlNode device = Linn.ControlPoint.Upnp.Upnp.DeviceXmlExplicit(iDevice.DeviceXml, iDevice.Udn);

                if (device == null)
                {
                    UserLog.WriteLine(DateTime.Now + ": Upnp.DoOpened: " + iDevice.Location + ": failed to find device node");
                    Trace.WriteLine(Trace.kTopology, DateTime.Now + ": Upnp.DoOpened: " + iDevice.Location + ": failed to find device node");
                    Unlock();
                    return;
                }

                string friendly = Linn.ControlPoint.Upnp.Upnp.FriendlyName(device);

                if (friendly == null)
                {
                    UserLog.WriteLine(DateTime.Now + ": Upnp.DoOpened: " + iDevice.Location + ": failed to find friendlyName node");
                    Trace.WriteLine(Trace.kTopology, DateTime.Now + ": Upnp.DoOpened: " + iDevice.Location + ": failed to find friendlyName node");
                    Unlock();
                    return;
                }

                ParseName(friendly, out iRoom, out iName);

                if (Linn.ControlPoint.Upnp.Upnp.HasService(device, ServiceRenderingControl.ServiceType()) > 0)
                {
                    iPreamp = new Preamp("UpnpAv", iDevice);
                }

                DoAddGroup();

                Unlock();
            }