void SendAbsoluteFocusPosition(float position)
        {
            Debug.Assert(model.moveOptions.absolute != null);
            Debug.Assert(model.moveOptions.absolute.position != null);
            Debug.Assert(model.moveOptions.absolute.position.min <= position && position <= model.moveOptions.absolute.position.max);

            SetFocusSettingsStatus(FocusSettingsStatus.Waiting);
            panelPositionFocusMove.IsEnabled = false;

            var absolute = new AbsoluteFocus()
            {
                position = position
            };

            if (model.moveOptions.absolute.speed != null)
            {
                absolute.speed          = model.moveOptions.absolute.speed.max;
                absolute.speedSpecified = true;
            }
            var focus = new FocusMove()
            {
                absolute = absolute
            };

            disposables.Add(session.Move(model.sourceToken, focus).ObserveOnCurrentDispatcher().Subscribe(
                                u => { ReceiveFocusPosition(); },
                                err => { SetFocusSettingsStatus(FocusSettingsStatus.Error, err.Message); panelPositionFocusMove.IsEnabled = true; }));
        }
        void SendDistanceFocusMove(float distance)
        {
            SetFocusSettingsStatus(FocusSettingsStatus.Waiting);
            panelPositionFocusMove.IsEnabled = false;

            var relative = new RelativeFocus()
            {
                distance = distance
            };

            if (model.moveOptions.relative.speed != null)
            {
                relative.speed          = model.moveOptions.relative.speed.max;
                relative.speedSpecified = true;
            }
            var focus = new FocusMove()
            {
                relative = relative
            };

            //disposables += (IDisposable)null;

            disposables.Add(session.Move(model.sourceToken, focus).ObserveOnCurrentDispatcher().Subscribe(
                                u => { ReceiveFocusPosition(); },
                                err => {
                SetFocusSettingsStatus(FocusSettingsStatus.Error, err.Message);
                panelPositionFocusMove.IsEnabled = true;
            }
                                ));
        }
        public void ImagingCommandMoveInvalidSourceTest()
        {
            RunTest(
                () =>
            {
                VideoSource[] sources = GetAndValidateVideoSources();

                string[] tokens = sources.Select(s => s.token).ToArray();

                string invalidToken = tokens.GetNonMatchingString();

                RunStep(
                    () =>
                {
                    FocusMove focus        = new FocusMove();
                    focus.Continuous       = new ContinuousFocus();
                    focus.Continuous.Speed = 1.0F;

                    Client.Move(invalidToken, focus);
                },
                    "Move - negative test",
                    new ValidateTypeFault(ValidateInvalidTokenFault));

                DoRequestDelay();
            });
        }
示例#4
0
        public override void Move(string VideoSourceToken, FocusMove Focus)
        {
            TestSuitInit();
            int           timeOut;
            SoapException ex;

            StepType stepType = m_ImagingService20Test.MoveTest(out ex, out timeOut, VideoSourceToken, Focus);

            StepTypeProcessing(stepType, ex, timeOut);
        }
        public void ImagingCommandContinuousMoveTest()
        {
            RunTest(
                () =>
            {
                VideoSource[] sources = GetAndValidateVideoSources();

                for (int i = 0; i < sources.Length; i++)
                {
                    MoveOptions20 options = null;
                    options = GetMoveOptions(sources[i].token);

                    if (options != null)
                    {
                        ValidateMoveOptions(options);

                        BeginStep(string.Format("Check if Continuous Move is supported for video source '{0}'", sources[i].token));
                        bool continuousSupported = (options.Continuous != null);
                        if (continuousSupported)
                        {
                            LogStepEvent("Supported");
                        }
                        else
                        {
                            LogStepEvent("Not supported");
                        }
                        StepPassed();

                        if (continuousSupported)
                        {
                            float speed            = options.Continuous.Speed.Average();
                            FocusMove focus        = new FocusMove();
                            focus.Continuous       = new ContinuousFocus();
                            focus.Continuous.Speed = speed;

                            Move(sources[i].token, focus);

                            bool stopSucceeded;
                            Stop(sources[i].token, out stopSucceeded);

                            if (!stopSucceeded)
                            {
                                double timeout = ((double)_operationDelay) / 1000;
                                BeginStep(string.Format("Wait {0} seconds to allow the DUT to move focus", timeout.ToString("0.000")));
                                Sleep(_operationDelay);
                                StepPassed();
                            }
                        }
                    }
                }
            });
        }
        public void ImagingCommandContinuousMoveInvalidSettingsTest()
        {
            RunTest(
                () =>
            {
                VideoSource[] sources = GetAndValidateVideoSources();

                for (int i = 0; i < sources.Length; i++)
                {
                    MoveOptions20 options = null;
                    options = GetMoveOptions(sources[i].token);

                    if (options != null)
                    {
                        ValidateMoveOptions(options);

                        BeginStep(string.Format("Check if Continuous Move is supported for video source '{0}'", sources[i].token));
                        bool continuousSupported = (options.Continuous != null);
                        if (continuousSupported)
                        {
                            LogStepEvent("Supported");
                        }
                        else
                        {
                            LogStepEvent("Not supported");
                        }
                        StepPassed();

                        if (continuousSupported)
                        {
                            float speed            = options.Continuous.Speed.Max + 1;
                            FocusMove focus        = new FocusMove();
                            focus.Continuous       = new ContinuousFocus();
                            focus.Continuous.Speed = speed;

                            RunStep(() => { Client.Move(sources[i].token, focus); },
                                    "Move - negative test (invalid Speed)",
                                    new ValidateTypeFault(ValidateInvalidMoveFault));
                            DoRequestDelay();
                        }
                    }
                }
            });
        }
示例#7
0
        internal StepType MoveTest(out SoapException ex, out int Timeout, string VideoSourceToken, FocusMove Focus)
        {
            StepType res = StepType.None;

            Timeout = 0;
            ex      = null;
            bool   passed     = true;
            string logMessage = "";

            //Get step list for command
            XmlNodeList m_testList = m_TestCommon.GetStepsForCommand("Imaging20.Move");

            if (m_testList != null)
            {
                //Get current step
                XmlNode test = m_testList[m_commandCount[Move]];

                #region Analyze request

                //VideoSourceToken
                CommonCompare.StringCompare("RequestParameters/VideoSourceToken", "VideoSourceToken", VideoSourceToken, ref logMessage, ref passed, test);

                //Focus
                if (Focus != null)
                {
                    //Absolute
                    if (Focus.Absolute != null)
                    {
                        CommonCompare.Exist("RequestParameters/Focus/Absolute", "Focus.Absolute", Focus.Absolute, ref logMessage, ref passed, test);
                        if (passed)
                        {
                            //Position
                            CommonCompare.FloatCompare("RequestParameters/Focus/Absolute/Position", "Focus.Absolute.Position", Focus.Absolute.Position, ref logMessage, ref passed, test);

                            //Speed
                            if (Focus.Absolute.SpeedSpecified)
                            {
                                CommonCompare.Exist2("RequestParameters/Focus/Absolute/Speed", "Focus.Absolute.Speed", Focus.Absolute.SpeedSpecified, ref logMessage, ref passed, test);
                                if (passed)
                                {
                                    CommonCompare.FloatCompare("RequestParameters/Focus/Absolute/Speed", "Focus.Absolute.Speed", Focus.Absolute.Speed, ref logMessage, ref passed, test);
                                }
                            }
                            else
                            {
                                CommonCompare.Exist2("RequestParameters/Focus/Absolute/Speed", "Focus.Absolute.Speed", Focus.Absolute.SpeedSpecified, ref logMessage, ref passed, test);
                            }
                        }
                    }
                    else
                    {
                        CommonCompare.Exist("RequestParameters/Focus/Absolute", "Focus.Absolute", Focus.Absolute, ref logMessage, ref passed, test);
                    }
                    //Relative
                    if (Focus.Relative != null)
                    {
                        CommonCompare.Exist("RequestParameters/Focus/Relative", "Focus.Relative", Focus.Relative, ref logMessage, ref passed, test);
                        if (passed)
                        {
                            //Distance
                            CommonCompare.FloatCompare("RequestParameters/Focus/Relative/Distance", "Focus.Relative.Distance", Focus.Relative.Distance, ref logMessage, ref passed, test);

                            //Speed
                            if (Focus.Relative.SpeedSpecified)
                            {
                                CommonCompare.Exist2("RequestParameters/Focus/Relative/Speed", "Focus.Relative.Speed", Focus.Relative.SpeedSpecified, ref logMessage, ref passed, test);
                                if (passed)
                                {
                                    CommonCompare.FloatCompare("RequestParameters/Focus/Relative/Speed", "Focus.Relative.Speed", Focus.Relative.Speed, ref logMessage, ref passed, test);
                                }
                            }
                            else
                            {
                                CommonCompare.Exist2("RequestParameters/Focus/Relative/Speed", "Focus.Relative.Speed", Focus.Relative.SpeedSpecified, ref logMessage, ref passed, test);
                            }
                        }
                    }
                    else
                    {
                        CommonCompare.Exist("RequestParameters/Focus/Relative", "Focus.Relative", Focus.Relative, ref logMessage, ref passed, test);
                    }

                    //Continuous
                    if (Focus.Continuous != null)
                    {
                        CommonCompare.Exist("RequestParameters/Focus/Continuous", "Focus.Continuous", Focus.Continuous, ref logMessage, ref passed, test);
                        if (passed)
                        {
                            //Speed
                            CommonCompare.FloatCompare("RequestParameters/Focus/Continuous/Speed", "Focus.Continuous.Speed", Focus.Continuous.Speed, ref logMessage, ref passed, test);
                        }
                    }
                    else
                    {
                        CommonCompare.Exist("RequestParameters/Focus/Continuous", "Focus.Continuous", Focus.Continuous, ref logMessage, ref passed, test);
                    }
                }
                else
                {
                    passed     = false;
                    logMessage = logMessage + "No required tag Focus.";
                }


                #endregion //Analyze request

                //Generate response
                res = m_TestCommon.GenerateResponseStepTypeVoid(test, out ex, out Timeout);

                //Log message
                m_TestCommon.writeToLog(test, logMessage, passed);

                Increment(m_testList.Count, Move);
            }
            else
            {
                res     = StepType.None;
                Timeout = 0;
                ex      = null;
                res     = StepType.None;
            }
            return(res);
        }
示例#8
0
 protected void Move(string token, FocusMove focus, string stepName)
 {
     RunStep(() => { Client.Move(token, focus); }, stepName);
     DoRequestDelay();
 }
示例#9
0
 protected void Move(string token, FocusMove focus)
 {
     Move(token, focus, string.Format("Send Move command ({0})", token));
 }
示例#10
0
 public OnvifImagingMove(string uri, string userName, string password, string profileToken, FocusMove focusMove)
     : base(uri, userName, password)
 {
     ProfileToken = profileToken;
     FocusMove    = focusMove;
 }
示例#11
0
 public System.Threading.Tasks.Task MoveAsync(string VideoSourceToken, FocusMove Focus)
 {
     return(base.Channel.MoveAsync(VideoSourceToken, Focus));
 }
示例#12
0
 public Task MoveAsync(string VideoSourceToken, FocusMove Focus)
 {
     return(base.Channel.MoveAsync(VideoSourceToken, Focus));
 }
示例#13
0
        public void ImagingCommandMoveUnsupportedMoveTest()
        {
            RunTest(
                () =>
            {
                VideoSource[] sources = GetAndValidateVideoSources();

                for (int i = 0; i < sources.Length; i++)
                {
                    MoveOptions20 options = null;
                    options = GetMoveOptions(sources[i].token);

                    if (options != null)
                    {
                        ValidateMoveOptions(options);

                        // absolute

                        bool absoluteSupported;

                        BeginStep(string.Format("Check if Absolute Move is supported for video source '{0}'", sources[i].token));
                        absoluteSupported = (options.Absolute != null);
                        if (absoluteSupported)
                        {
                            LogStepEvent("Supported");
                        }
                        else
                        {
                            LogStepEvent("Not supported");
                        }
                        StepPassed();

                        if (!absoluteSupported)
                        {
                            FocusMove focus         = new FocusMove();
                            focus.Absolute          = new AbsoluteFocus();
                            focus.Absolute.Position = 1.0F;

                            RunStep(() => { Client.Move(sources[i].token, focus); },
                                    "Move - negative test (absolute not supported)",
                                    new ValidateTypeFault(ValidateInvalidMoveFault));

                            DoRequestDelay();
                        }

                        // relative

                        bool relativeSupported;

                        BeginStep(string.Format("Check if Relative Move is supported for video source '{0}'", sources[i].token));
                        relativeSupported = (options.Relative != null);
                        if (relativeSupported)
                        {
                            LogStepEvent("Supported");
                        }
                        else
                        {
                            LogStepEvent("Not supported");
                        }
                        StepPassed();

                        if (!relativeSupported)
                        {
                            FocusMove focus         = new FocusMove();
                            focus.Relative          = new RelativeFocus();
                            focus.Relative.Distance = 1.0F;

                            RunStep(() => { Client.Move(sources[i].token, focus); },
                                    "Move - negative test (relative not supported)",
                                    new ValidateTypeFault(ValidateInvalidMoveFault));
                            DoRequestDelay();
                        }


                        // continuous

                        BeginStep(string.Format("Check if Continuous Move is supported for video source '{0}'", sources[i].token));
                        bool continuousSupported = (options.Continuous != null);
                        if (continuousSupported)
                        {
                            LogStepEvent("Supported");
                        }
                        else
                        {
                            LogStepEvent("Not supported");
                        }
                        StepPassed();

                        if (!continuousSupported)
                        {
                            FocusMove focus        = new FocusMove();
                            focus.Continuous       = new ContinuousFocus();
                            focus.Continuous.Speed = 1.0F;

                            RunStep(() => { Client.Move(sources[i].token, focus); },
                                    "Move - negative test (continuous not supported)",
                                    new ValidateTypeFault(ValidateInvalidMoveFault));
                            DoRequestDelay();
                        }
                    }
                }
            });
        }
示例#14
0
        public void ImagingCommandRelativeMoveInvalidSettingsTest()
        {
            RunTest(
                () =>
            {
                VideoSource[] sources = GetAndValidateVideoSources();

                for (int i = 0; i < sources.Length; i++)
                {
                    MoveOptions20 options = null;
                    options = GetMoveOptions(sources[i].token);

                    if (options != null)
                    {
                        ValidateMoveOptions(options);

                        bool relativeSupported;

                        BeginStep(string.Format("Check if Relative Move is supported for video source '{0}'", sources[i].token));
                        relativeSupported = (options.Relative != null);
                        if (relativeSupported)
                        {
                            LogStepEvent("Supported");
                        }
                        else
                        {
                            LogStepEvent("Not supported");
                        }
                        StepPassed();

                        if (relativeSupported)
                        {
                            float distance          = options.Relative.Distance.Max + 1;
                            FocusMove focus         = new FocusMove();
                            focus.Relative          = new RelativeFocus();
                            focus.Relative.Distance = distance;

                            RunStep(() => { Client.Move(sources[i].token, focus); },
                                    "Move - negative test (invalid Distance)",
                                    new ValidateTypeFault(ValidateInvalidMoveFault));

                            DoRequestDelay();

                            bool speedSupported;

                            BeginStep(string.Format("Check if Relative Move Speed is supported for video source '{0}'", sources[i].token));
                            speedSupported = (options.Relative.Speed != null);
                            if (speedSupported)
                            {
                                LogStepEvent("Supported");
                            }
                            else
                            {
                                LogStepEvent("Not supported");
                            }
                            StepPassed();

                            if (speedSupported)
                            {
                                focus.Relative.Distance       = options.Relative.Distance.Average();
                                focus.Relative.SpeedSpecified = true;
                                focus.Relative.Speed          = options.Relative.Speed.Max + 1;

                                RunStep(() => { Client.Move(sources[i].token, focus); },
                                        "Move - negative test (invalid Speed)",
                                        new ValidateTypeFault(ValidateInvalidMoveFault));

                                DoRequestDelay();
                            }
                        }
                    }
                }
            });
        }
示例#15
0
        public void ImagingCommandRelativeMoveTest()
        {
            RunTest(
                () =>
            {
                VideoSource[] sources = GetAndValidateVideoSources();

                for (int i = 0; i < sources.Length; i++)
                {
                    MoveOptions20 options = null;
                    options = GetMoveOptions(sources[i].token);

                    if (options != null)
                    {
                        ValidateMoveOptions(options);

                        bool relativeSupported;

                        BeginStep(string.Format("Check if Relative Move is supported for video source '{0}'", sources[i].token));
                        relativeSupported = (options.Relative != null);
                        if (relativeSupported)
                        {
                            LogStepEvent("Supported");
                        }
                        else
                        {
                            LogStepEvent("Not supported");
                        }
                        StepPassed();

                        if (relativeSupported)
                        {
                            float distance          = options.Relative.Distance.Max / 2;
                            FocusMove focus         = new FocusMove();
                            focus.Relative          = new RelativeFocus();
                            focus.Relative.Distance = distance;

                            Move(sources[i].token, focus);

                            bool speedSupported;

                            BeginStep(string.Format("Check if Relative Move Speed is supported for video source '{0}'", sources[i].token));
                            speedSupported = (options.Relative.Speed != null);
                            if (speedSupported)
                            {
                                LogStepEvent("Supported");
                            }
                            else
                            {
                                LogStepEvent("Not supported");
                            }
                            StepPassed();

                            if (speedSupported)
                            {
                                focus.Relative.Distance       = options.Relative.Distance.Min / 2;
                                focus.Relative.SpeedSpecified = true;
                                focus.Relative.Speed          = options.Relative.Speed.Average();

                                Move(sources[i].token, focus);
                            }
                        }
                    }
                }
            });
        }
示例#16
0
        public void ImagingCommandAbsoluteMoveTest()
        {
            RunTest(
                () =>
            {
                VideoSource[] sources = GetAndValidateVideoSources();

                for (int i = 0; i < sources.Length; i++)
                {
                    MoveOptions20 options = null;
                    options = GetMoveOptions(sources[i].token);

                    if (options != null)
                    {
                        ValidateMoveOptions(options);

                        bool absoluteSupported;

                        BeginStep(string.Format("Check if Absolute Move is supported for video source '{0}'", sources[i].token));
                        absoluteSupported = (options.Absolute != null);
                        if (absoluteSupported)
                        {
                            LogStepEvent("Supported");
                        }
                        else
                        {
                            LogStepEvent("Not supported");
                        }
                        StepPassed();

                        if (absoluteSupported)
                        {
                            float position          = (2.0F * options.Absolute.Position.Min / 3.0F + options.Absolute.Position.Max / 3.0F);
                            FocusMove focus         = new FocusMove();
                            focus.Absolute          = new AbsoluteFocus();
                            focus.Absolute.Position = position;

                            Move(sources[i].token, focus);

                            BeginStep(string.Format("Check if Absolute Move Speed is supported for video source '{0}'", sources[i].token));
                            bool supported = (options.Absolute.Speed != null);
                            if (supported)
                            {
                                LogStepEvent("Supported");
                            }
                            else
                            {
                                LogStepEvent("Not supported");
                            }
                            StepPassed();

                            if (supported)
                            {
                                position = position = (options.Absolute.Position.Min / 3.0F + 2.0F * options.Absolute.Position.Max / 3.0F);
                                focus.Absolute.Position = position;

                                focus.Absolute.SpeedSpecified = true;
                                focus.Absolute.Speed          = options.Absolute.Speed.Average();

                                Move(sources[i].token, focus);
                            }
                        }
                    }
                }
            });
        }