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