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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        /// <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));
        }
Esempio n. 9
0
        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);
                }
            }
        }
Esempio n. 10
0
        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,
                    });
                }
            }
        }