public void Dispose() { AVTransport.Dispose(); RenderingControl.Dispose(); ConnectionManager.Dispose(); this.AV_LastChange.Dispose(); this.AV_LastChange = null; this.RC_LastChange.Dispose(); this.RC_LastChange = null; if (CurrentPlayList != null) { CurrentPlayList.Dispose(); } this.CurrentPlayList = null; this.OnCurrentMetaDataChanged = null; this.OnMediaResourceChanged = null; this.OnMute = null; this.OnNumberOfTracksChanged = null; this.OnPositionChanged = null; this.OnReady = null; this.OnRemoved = null; this.OnTrackChanged = null; this.OnTrackURIChanged = null; this.OnVolume = null; if (OnRemoved != null) { OnRemoved(this); } }
public void UnMute() { var arguments = new UPnPArgument[3]; arguments[0] = new UPnPArgument("InstanceID", 0u); arguments[1] = new UPnPArgument("Channel", "Master"); arguments[2] = new UPnPArgument("DesiredMute", false); RenderingControl.InvokeAsync("SetMute", arguments); }
public void SetVolume(ushort vol) { vol = Math.Min(Math.Max(vol, (ushort)0), (ushort)100); var arguments = new UPnPArgument[3]; arguments[0] = new UPnPArgument("InstanceID", 0u); arguments[1] = new UPnPArgument("Channel", "Master"); arguments[2] = new UPnPArgument("DesiredVolume", vol); RenderingControl.InvokeAsync("SetVolume", arguments); }
public ushort GetVolume() { var arguments = new UPnPArgument[3]; arguments[0] = new UPnPArgument("InstanceID", 0u); arguments[1] = new UPnPArgument("Channel", "Master"); arguments[2] = new UPnPArgument("CurrentVolume", 0u); RenderingControl.InvokeSync("GetVolume", arguments); return((ushort)arguments[2].DataValue); }
private bool GetMute() { var arguments = new UPnPArgument[3]; arguments[0] = new UPnPArgument("InstanceID", 0u); arguments[1] = new UPnPArgument("Channel", "Master"); arguments[2] = new UPnPArgument("CurrentMute", 1); RenderingControl.InvokeSync("GetMute", arguments); return((bool)arguments[2].DataValue); }
/// <summary> /// Sets the volume of the current renderer /// </summary> public void SetVolume(double volume) { if (RenderingControl == null) { return; } var arguments = new UPnPArgument[3]; arguments[0] = new UPnPArgument("InstanceID", 0u); arguments[1] = new UPnPArgument("Channel", "Master"); arguments[2] = new UPnPArgument("DesiredVolume", (UInt16)volume); RenderingControl.InvokeSync("SetVolume", arguments); }
public void SetVolume(ushort volume) { if (volume < 0 || volume > 100) { throw new Exception("Invalid volume setting."); } var arguments = new UPnPArgument[3]; arguments[0] = new UPnPArgument("InstanceID", 0u); arguments[1] = new UPnPArgument("Channel", "Master"); arguments[2] = new UPnPArgument("DesiredVolume", volume); RenderingControl.InvokeAsync("SetVolume", arguments); }
/// <summary> /// Gets the volume of the current renderer /// </summary> public double GetVolume() { if (RenderingControl == null) { return(0); } var arguments = new UPnPArgument[3]; arguments[0] = new UPnPArgument("InstanceID", 0u); arguments[1] = new UPnPArgument("Channel", "Master"); arguments[2] = new UPnPArgument("CurrentVolume", 0u); RenderingControl.InvokeSync("GetVolume", arguments); return(Convert.ToDouble(arguments[2].DataValue)); }
static void ThreadFunc() { string masterBedroom = "uuid:RINCON_000E5810848C01400"; ZonePlayer zonePlayer = new ZonePlayer(masterBedroom); Console.WriteLine(zonePlayer.DeviceProperties.Icon); //UPnPDevice mediaServer = zonePlayer.MediaServer; //UPnPDevice mediaRenderer = zonePlayer.MediaRenderer; //AudioIn audioIn = zonePlayer.AudioIn; DeviceProperties deviceProperties = zonePlayer.DeviceProperties; RenderingControl renderingControl = zonePlayer.RenderingControl; AVTransport avTransport = zonePlayer.AVTransport; ContentDirectory contentDirectory = zonePlayer.ContentDirectory; GroupManagement groupManagement = zonePlayer.GroupManagement; //ZoneGroupTopology zoneGroupTopology = zonePlayer.ZoneGroupTopology; //ConnectionManager connectionManager = zonePlayer.ConnectionManager; foreach (XPathNavigator node in contentDirectory.Browse("0", BrowseFlags.BrowseDirectChildren, "*", "")) { Console.WriteLine(node.OuterXml); #if FOO string path = HttpUtility.UrlDecode(node.SelectSingleNode("@id", Sonority.XPath.Globals.Manager).Value); path = path.Replace(@"S://", @"\\"); path = path.Replace('/', '\\'); string destination = Path.Combine(@"c:\temp\nuevo", Path.GetFileName(path)); Console.WriteLine("{0}", path); File.Copy(path, destination); #endif } foreach (QueueItem node in zonePlayer.Queue) { Console.WriteLine(node); } zonePlayer.Queue.ToString(); avTransport.PropertyChanged += new PropertyChangedEventHandler(OnPropertyChanged); contentDirectory.PropertyChanged += new PropertyChangedEventHandler(OnPropertyChanged); renderingControl.PropertyChanged += new PropertyChangedEventHandler(OnPropertyChanged); #if FOO using (foo bar = new foo()) { // check updateIDs first Queue <string> queue = new Queue <string>(); queue.Enqueue("S:"); queue.Enqueue("0"); while (queue.Count > 0) { string currentObject = queue.Dequeue(); // box is down, ignore for now. if (currentObject.StartsWith("S://13CFB6DD7F03432", StringComparison.OrdinalIgnoreCase)) { continue; } foreach (XPathNavigator node in contentDirectory.Browse(currentObject, BrowseFlags.BrowseDirectChildren, "*", "")) { if (node.LocalName == "container") { // recurse into container queue.Enqueue(node.SelectSingleNode("@id").Value); } bar.AddRecord( node.SelectSingleNode("@id", XPath.Globals.Manager).Value, node.SelectSingleNode("@parentID", XPath.Globals.Manager).Value, 0, node); } } } Thread.Sleep(Timeout.Infinite); Console.WriteLine(contentDirectory.ToString()); Console.WriteLine(avTransport.ToString()); // avTransport.Play("1"); #endif while (true) { Thread.Sleep(30000); foreach (ZoneGroup zp in disc.Topology) { Console.WriteLine("{0} -> {1}", zp.Coordinator.UniqueDeviceName, zp.Coordinator.DeviceProperties.ZoneName); } } }
private async Task loadServicesAsync() { ServiceTypes serviceType; foreach (Service service in deviceDescription.Device.Services) { switch (service.ServiceType) { case ServiceTypesString.AVTRANSPORT: AVTransport = await XmlExtension.DeserializeUriAsync <AVTransport>(new Uri(HtmlExtension.CompleteHttpString(ipAddress, port, service.SCPDURL))); AVTransport.SetParent(); serviceType = ServiceTypes.AVTRANSPORT; break; case ServiceTypesString.CONNECTIONMANAGER: ConnectionManager = await XmlExtension.DeserializeUriAsync <ConnectionManager>(new Uri(HtmlExtension.CompleteHttpString(ipAddress, port, service.SCPDURL))); ConnectionManager.SetParent(); serviceType = ServiceTypes.CONNECTIONMANAGER; break; case ServiceTypesString.CONTENTDIRECTORY: ContentDirectory = await XmlExtension.DeserializeUriAsync <ContentDirectory>(new Uri(HtmlExtension.CompleteHttpString(ipAddress, port, service.SCPDURL))); ContentDirectory.SetParent(); serviceType = ServiceTypes.CONTENTDIRECTORY; break; case ServiceTypesString.MEDIARECEIVERREGISTRAR: MediaReceiverRegistrar = await XmlExtension.DeserializeUriAsync <MediaReceiverRegistrar>(new Uri(HtmlExtension.CompleteHttpString(ipAddress, port, service.SCPDURL))); MediaReceiverRegistrar.SetParent(); serviceType = ServiceTypes.MEDIARECEIVERREGISTRAR; break; case ServiceTypesString.RENDERINGCONTROL: RenderingControl = await XmlExtension.DeserializeUriAsync <RenderingControl>(new Uri(HtmlExtension.CompleteHttpString(ipAddress, port, service.SCPDURL))); RenderingControl.SetParent(); serviceType = ServiceTypes.RENDERINGCONTROL; break; default: serviceType = ServiceTypes.NEUTRAL; break; } if (serviceType != ServiceTypes.NEUTRAL) { serviceSCPDs.Add(new NetWorkSubscriberPayload { MediaDevice = this, URI = HtmlExtension.CompleteHttpString(ipAddress, port, service.SCPDURL), ServiceType = serviceType, }); serviceControls.Add(new NetWorkSubscriberPayload { MediaDevice = this, URI = HtmlExtension.CompleteHttpString(ipAddress, port, service.ControlURL), ServiceType = serviceType, }); serviceEvents.Add(new NetWorkSubscriberPayload { MediaDevice = this, URI = HtmlExtension.CompleteHttpString(ipAddress, port, service.EventSubURL), ServiceType = serviceType, }); } } }