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