public UPnP_SinkFunctions(CpAVTransport av, CpConnectionManager cm, CpRenderingControl rc)
        {
            InstanceID = 0;
            _AVTransport = av;
            _ConnectionManager = cm;
            _RenderingControl = rc;
            _channel = "1";
            _speed = "1";

            _RenderingControl.OnResult_GetVolume += RenderingControlOnOnResultGetVolume;
            _ConnectionManager.OnResult_GetIPAddress += ConnectionManagerOnOnResultGetIpAddress;
            _RenderingControl.OnResult_GetPosition += RenderingControlOnOnResultGetPosition;

            _AVTransport.OnStateVariable_TransportState += AvTransportOnOnStateVariableTransportState;
            _AVTransport._subscribe(30);

            Timer subscribeTimer = new Timer();
            subscribeTimer.Elapsed += new ElapsedEventHandler(timerEventFunc);
            subscribeTimer.Interval = 30000;
            subscribeTimer.Enabled = true;
        }
        private void AvTransportOnOnStateVariableTransportState(CpAVTransport sender, string newValue)
        {
            switch (newValue)
            {
                case "PLAYING":
                    if (value == State.Stopped)
                    {
                        transportStateEvent(this, new EventArgsContainer<string>("playing"));
                    }
                    else if(value == State.Transitioning)
                    {
                        //get current number
                    }
                    value = State.Playing;
                    break;

                case "STOPPED":
                    if (value == State.Playing)
                    {
                        transportStateEvent(this, new EventArgsContainer<string>("stopped"));
                    }
                    else if(value == State.Transitioning)
                    {
                        //?
                    }
                    value = State.Stopped;
                    break;

                case "TRANSITIONING":
                    if (value == State.Playing)
                    {
                        //ready for new number
                    }
                    else if (value == State.Stopped)
                    {
                        //?
                    }
                    value = State.Transitioning;
                    break;
            }
        }
        /// <summary>
        /// Event that is fired when a transportstate is changed on the upnp device
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="newValue">New state</param>
        private void AvTransportOnOnStateVariableTransportState(CpAVTransport sender, string newValue)
        {
            switch (newValue)
            {
                case "PLAYING":
                    if (value == State.Stopped)
                    {
                        transportStateEvent(this, newValue);
                    }
                    else if(value == State.Transitioning)
                    {
                        transportStateEvent(this, "BROWSE");
                    }
                    value = State.Playing;
                    break;

                case "STOPPED":
                    if (value == State.Playing)
                    {
                        transportStateEvent(this, newValue);
                    }
                    else if(value == State.Transitioning)
                    {
                        //?
                    }
                    value = State.Stopped;
                    break;

                case "TRANSITIONING":
                    if (value == State.Playing)
                    {
                        //ready for new number
                    }
                    else if (value == State.Stopped)
                    {
                        //?
                    }
                    value = State.Transitioning;
                    break;
            }
        }