/// <summary> /// Initialize the pantilt ops /// </summary> /// <returns>An iterator</returns> private IEnumerator <ITask> ConnectPanTiltHandler() { Fault fault = null; if (this.panTiltOps != null) { // Try to subscribe yield return(this.panTiltOps .Subscribe(this.panTiltNotify, typeof(pantilt.Rotate)) .Choice(EmptyHandler, f => fault = f)); if (fault != null) { // There is no Kinect partner LogError(null, "Failed to subscribe to Pan/Tilt", fault); yield break; } // Set the initial tilt angle now var request = new OnChangeTilt(this.dashboardForm, this.state.TiltAngle); SpawnIterator(request, this.OnChangeTiltHandler); } yield break; }
/// <summary> /// Handle Tilt Angle requests /// </summary> /// <param name="tilt">The Tilt request</param> /// <returns>An iterator</returns> private IEnumerator <ITask> OnChangeTiltHandler(OnChangeTilt tilt) { Fault fault = null; var req = new pantilt.RotateMessage { RotatePanRequest = null, RotateTiltRequest = new SingleAxisJoint.Proxy.RotateSingleAxisRequest { TargetRotationAngleInRadians = (float)(tilt.Tilt * Math.PI / 180.0), IsRelative = false } }; yield return(this.panTiltOps.Rotate(req).Choice(EmptyHandler, f => fault = f)); if (fault != null) { LogError("Update Tilt failed: ", fault.ToException()); } }