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(); }
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); }
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)); } }
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(); }