示例#1
0
            public void OnSonosInitial()
            {
                Lock();

                if (!iKilled)
                {
                    XmlNode device = Linn.ControlPoint.Upnp.Upnp.DeviceXmlExplicit(iDevice.DeviceXml, iDevice.Udn);

                    if (device == null)
                    {
                        Unlock();
                        return;
                    }

                    iRoom = iServiceDeviceProperties.ZoneName;
                    iName = Linn.ControlPoint.Upnp.Upnp.ModelNumber(device);

                    iPreamp = new Preamp("UpnpAv", iDevice);

                    iServiceDeviceProperties.EventStateZoneName += SonosRoomChanged;

                    DoAddGroup();
                }

                Unlock();
            }
示例#2
0
 public Channel(string baseAddress)
 {
     _baseAddress = baseAddress;
     Config = new Config(_baseAddress);
     Preamp = new Preamp(_baseAddress);
     Gate = new Gate(_baseAddress);
     Dyn = new Dyn(_baseAddress);
     Eq = new Eq4(_baseAddress);
     Mix = new Mix(_baseAddress);
     Grp = new Grp(_baseAddress);
     Automix = new Automix(_baseAddress);
 }
示例#3
0
            private void DoAddGroup()
            {
                Preamp preamp = null;

                if (iServiceProduct.Attributes.Contains("Volume"))
                {
                    preamp = new Preamp("Preamp", iDevice);
                }

                iGroup = new GroupProduct(iRoom, iName, iStandby, preamp, this);

                if (iStack.EventGroupAdded != null)
                {
                    iStack.EventGroupAdded(iStack, new EventArgsGroup(iGroup));
                }
            }
示例#4
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();
            }