Ejemplo n.º 1
0
        private Vector DoFixedSlewAltAz(Vector startPosition, SlewDirection direction, SlewAmount amount)
        {
            _vm.IsVariableJog    = false;
            _mgr.MockIsConnected = true;
            _mgr.Capabilities    = InitializeFullCapabilities();
            _mgr.Parameters      = InitializeTestDefaultParameters(AlignmentModes.algAltAz);

            _vm.SelectedSlewAmount = amount;

            DevHubTelescopeStatus sts = DevHubTelescopeStatus.GetEmptyStatus();

            sts.ParkingState = ParkingStateEnum.Unparked;
            sts.Tracking     = true;
            sts.Slewing      = false;
            sts.Azimuth      = startPosition.X;
            sts.Altitude     = startPosition.Y;
            _mgr.Status      = sts;

            _prVm.Invoke("RegisterStatusUpdateMessage", true);
            _prVm.Invoke("DoFixedSlew", direction);

            Thread.Sleep(4000);

            _prVm.Invoke("RegisterStatusUpdateMessage", false);

            return(new Vector(_vm.Status.Azimuth, _vm.Status.Altitude));
        }
Ejemplo n.º 2
0
        public void ChangeTrackingTest()
        {
            _vm.Status           = DevHubTelescopeStatus.GetEmptyStatus();
            _vm.Status.Connected = true;
            _vm.Status.Tracking  = false;
            _prVm.SetFieldOrProperty("_isTracking", false);

            _prVm.Invoke("RegisterStatusUpdateMessage", true);

            _vm.IsTracking = true;
            _prVm.Invoke("ChangeTracking");

            Thread.Sleep(2000);

            Assert.IsTrue(_vm.Status.Tracking);
            Assert.IsTrue(_vm.IsTracking);

            _vm.IsTracking = false;
            _prVm.Invoke("ChangeTracking");

            Thread.Sleep(500);

            Assert.IsFalse(_vm.Status.Tracking);
            Assert.IsFalse(_vm.IsTracking);

            _prVm.Invoke("RegisterStatusUpdateMessage", false);
        }
Ejemplo n.º 3
0
        private Vector DoFixedSlewRaDec(Vector startPosition, SlewDirection direction, SlewAmount amount)
        {
            _vm.IsVariableJog    = false;
            _mgr.MockIsConnected = true;
            _mgr.Capabilities    = InitializeFullCapabilities();
            _mgr.Parameters      = InitializeTestDefaultParameters();

            _vm.SelectedSlewAmount = amount;

            DevHubTelescopeStatus sts = DevHubTelescopeStatus.GetEmptyStatus();

            sts.ParkingState   = ParkingStateEnum.Unparked;
            sts.Tracking       = true;
            sts.Slewing        = false;
            sts.RightAscension = startPosition.X;
            sts.Declination    = startPosition.Y;
            _mgr.Status        = sts;

            _prVm.Invoke("RegisterStatusUpdateMessage", true);
            _prVm.Invoke("DoFixedSlew", direction);

            Thread.Sleep(3500);

            _prVm.Invoke("RegisterStatusUpdateMessage", false);

            return(new Vector(_vm.Status.RightAscension, _vm.Status.Declination));
        }
        private Vector DoDirectSlewRaDec(Vector startPosition, Vector targetPosition)
        {
            _mgr.MockIsConnected = true;
            _mgr.Parameters      = InitializeTestDefaultParameters();

            DevHubTelescopeStatus sts = DevHubTelescopeStatus.GetEmptyStatus();

            sts.ParkingState   = ParkingStateEnum.Unparked;
            sts.Tracking       = true;
            sts.Slewing        = false;
            sts.RightAscension = startPosition.X;
            sts.Declination    = startPosition.Y;
            _mgr.Status        = sts;

            _vm.TargetRightAscension = targetPosition.X;
            _vm.TargetDeclination    = targetPosition.Y;

            _prVm.Invoke("RegisterStatusUpdateMessage", true);
            _prVm.Invoke("BeginDirectSlew");

            Thread.Sleep(3500);

            _prVm.Invoke("RegisterStatusUpdateMessage", false);

            return(new Vector(_vm.Status.RightAscension, _vm.Status.Declination));
        }
        public void AbortDirectSlewTest()
        {
            Vector startPosition  = GetSaneRaDec();
            Vector targetPosition = GetSaneRaDec(-4.0, 5.0);

            _mgr.MockIsConnected = true;
            _mgr.Capabilities    = InitializeFullCapabilities();
            _mgr.Parameters      = InitializeTestDefaultParameters();

            DevHubTelescopeStatus sts = DevHubTelescopeStatus.GetEmptyStatus();

            sts.ParkingState = ParkingStateEnum.Unparked;
            sts.Tracking     = true;
            sts.Slewing      = true;
            _mgr.Status      = sts;

            _prVm.Invoke("RegisterStatusUpdateMessage", true);
            _prVm.Invoke("AbortDirectSlew");

            Thread.Sleep(2000);

            _prVm.Invoke("RegisterStatusUpdateMessage", false);

            Assert.IsFalse(_vm.Status.Slewing);
        }
        public void ApplyOffsetTrackingTest()
        {
            double targetRaOffsetRate  = 200.0;
            double targetDecOffsetRate = -200.0;

            _vm.IsConnected   = true;
            _vm.Capabilities  = TelescopeCapabilities.GetFullCapabilities();
            _vm.Status        = DevHubTelescopeStatus.GetEmptyStatus();
            _vm.RaOffsetRate  = targetRaOffsetRate;
            _vm.DecOffsetRate = targetDecOffsetRate;

            _mgr.MockTrackingRate = DriveRates.driveSidereal;

            _prVm.Invoke("ApplyOffsetTracking");

            double expectedRaRate  = targetRaOffsetRate * Globals.UTC_SECS_PER_SIDEREAL_SEC / (15.0 * 3600.0);
            double expectedDecRate = targetDecOffsetRate / 3600.0;

            Assert.AreEqual(DriveRates.driveSidereal, _mgr.MockTrackingRate);
            Assert.AreEqual(expectedRaRate, _mgr.MockRightAscensionOffsetRate, 0.0001);
            Assert.AreEqual(expectedDecRate, _mgr.MockDeclinationOffsetRate);

            _prVm.Invoke("ApplySiderealTracking");

            Assert.AreEqual(DriveRates.driveSidereal, _mgr.MockTrackingRate);
            Assert.AreEqual(0.0, _mgr.MockRightAscensionOffsetRate);
            Assert.AreEqual(0.0, _mgr.MockDeclinationOffsetRate);
        }
        public void ApplySiderealTrackingTest()
        {
            _vm.IsConnected  = true;
            _vm.Capabilities = TelescopeCapabilities.GetFullCapabilities();
            _vm.Status       = DevHubTelescopeStatus.GetEmptyStatus();
            //_mgr.MockTrackingRate = DriveRates.driveLunar;

            _prVm.Invoke("ApplyLunarTracking");

            Assert.AreEqual(DriveRates.driveLunar, _mgr.MockTrackingRate);

            _prVm.Invoke("ApplySiderealTracking");

            Assert.AreEqual(DriveRates.driveSidereal, _mgr.MockTrackingRate);
            Assert.AreEqual(0.0, _mgr.MockRightAscensionOffsetRate);
            Assert.AreEqual(0.0, _mgr.MockDeclinationOffsetRate);

            _mgr.MockTrackingRate             = DriveRates.driveSidereal;
            _mgr.MockRightAscensionOffsetRate = 200.0;
            _mgr.MockDeclinationOffsetRate    = -200.0;

            _prVm.Invoke("ApplySiderealTracking");

            Assert.AreEqual(DriveRates.driveSidereal, _mgr.MockTrackingRate);
            Assert.AreEqual(0.0, _mgr.MockRightAscensionOffsetRate);
            Assert.AreEqual(0.0, _mgr.MockDeclinationOffsetRate);
        }
Ejemplo n.º 8
0
        public void CanChangeParkState()
        {
            TelescopeCapabilities caps   = TelescopeCapabilities.GetFullCapabilities();
            DevHubTelescopeStatus status = DevHubTelescopeStatus.GetEmptyStatus();

            _vm.Status       = null;
            _vm.Capabilities = caps;

            bool result = (bool)_prVm.Invoke("CanChangeParkState");

            Assert.IsFalse(result);               // No device status

            _vm.Status       = status;
            _vm.Capabilities = null;

            result = (bool)_prVm.Invoke("CanChangeParkState");
            Assert.IsFalse(result);               // No device capabilities

            _vm.Capabilities = caps;

            result = (bool)_prVm.Invoke("CanChangeParkState");
            Assert.IsFalse(result);               // Not connected

            _vm.Status.Connected = true;

            // Set the state to Parked and test if we are allowed to unpark the scope.

            _vm.Status.ParkingState = ParkingStateEnum.IsAtPark;

            _vm.Capabilities.CanUnpark = false;

            result = (bool)_prVm.Invoke("CanChangeParkState");
            Assert.IsFalse(result);               // Not capable

            _vm.Capabilities.CanUnpark = true;

            result = (bool)_prVm.Invoke("CanChangeParkState");
            Assert.IsTrue(result);               // Can unpark

            // Set the state to Unparked and test if we are allowed to park the scope.

            _vm.Status.ParkingState  = ParkingStateEnum.Unparked;
            _vm.Capabilities.CanPark = false;

            result = (bool)_prVm.Invoke("CanChangeParkState");
            Assert.IsFalse(result);               // Not capable

            _vm.Capabilities.CanPark = true;
            _vm.Status.Slewing       = true;

            result = (bool)_prVm.Invoke("CanChangeParkState");
            Assert.IsFalse(result);               // Scope is already slewing

            _vm.Status.Slewing = false;

            result = (bool)_prVm.Invoke("CanChangeParkState");
            Assert.IsTrue(result);               // Can park
        }
Ejemplo n.º 9
0
        public void DoMeridianFlip()
        {
            DevHubTelescopeStatus sts = DevHubTelescopeStatus.GetEmptyStatus();

            sts.SideOfPier = PierSide.pierWest;

            _vm.Status          = sts;
            _mgr.Status         = sts;
            _mgr.MockSideOfPier = PierSide.pierWest;
            _prVm.Invoke("RegisterStatusUpdateMessage", true);
            _prVm.Invoke("DoMeridianFlip");

            Thread.Sleep(1500);

            while (_vm.Status.Slewing)
            {
                Thread.Sleep(100);
            }

            Assert.AreEqual(PierSide.pierEast, _vm.Status.SideOfPier);
        }
Ejemplo n.º 10
0
        public void ChangeParkState()
        {
            DevHubTelescopeStatus sts = DevHubTelescopeStatus.GetEmptyStatus();

            sts.ParkingState = ParkingStateEnum.IsAtPark;
            sts.AtPark       = true;
            _mgr.Status      = sts;
            _vm.Status       = sts;

            _prVm.Invoke("RegisterStatusUpdateMessage", true);

            _prVm.Invoke("ChangeParkState");
            Thread.Sleep(2500);
            Assert.IsFalse(_vm.Status.AtPark);

            _prVm.Invoke("ChangeParkState");

            Thread.Sleep(2500);
            Assert.AreEqual(ParkingStateEnum.IsAtPark, _vm.Status.ParkingState);

            _prVm.Invoke("RegisterStatusUpdateMessage", false);
        }
Ejemplo n.º 11
0
        public void CanJogScope()
        {
            TelescopeParameters parms = new TelescopeParameters
            {
                AlignmentMode = AlignmentModes.algGermanPolar
            };
            DevHubTelescopeStatus status = DevHubTelescopeStatus.GetEmptyStatus();
            TelescopeCapabilities caps   = TelescopeCapabilities.GetFullCapabilities();

            _vm.Status       = null;
            _vm.Parameters   = parms;
            _vm.Capabilities = caps;

            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsFalse(_vm.CanStartMoveTelescope);               // No device status

            _vm.Status     = status;
            _vm.Parameters = null;

            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsFalse(_vm.CanStartMoveTelescope);               // No device parameters

            _vm.Parameters   = parms;
            _vm.Capabilities = null;

            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsFalse(_vm.CanStartMoveTelescope);               // No capabilities

            _vm.Capabilities = caps;

            // Test variable jogs with MoveAxis and PulseGuide

            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsFalse(_vm.CanStartMoveTelescope);               // Not connected

            _vm.Status.Connected = true;

            // Test variable jogs with MoveAxis and PulseGuide

            _vm.IsVariableJog = true;
            _vm.Capabilities.CanMovePrimaryAxis = false;
            _vm.Capabilities.CanPulseGuide      = false;

            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsFalse(_vm.CanStartMoveTelescope);               // Can't MoveAxis or PulseGuide

            _vm.Capabilities.CanMovePrimaryAxis   = true;
            _vm.Capabilities.CanMoveSecondaryAxis = false;

            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsFalse(_vm.CanStartMoveTelescope);               // Can't MoveAxis or PulseGuide

            _vm.Capabilities.CanMoveSecondaryAxis = true;

            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsFalse(_vm.CanStartMoveTelescope);               // No Axis Rates Defined

            object[] rates = new IRate[] { new AxisRate(0.0, 5.0) };
            _vm.Capabilities.PrimaryAxisRates = (IRate[])rates;
            Assert.IsFalse(_vm.CanStartMoveTelescope);               // No Secondary axis rates defined

            _vm.Capabilities.SecondaryAxisRates = (IRate[])rates;
            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsTrue(_vm.CanStartMoveTelescope);               // Not Tracking, but MoveAxis is OK ???

            _vm.Status.Tracking = true;

            _prVm.Invoke("UpdateCanStartMove");               // Ready to do variable slews (Move Axis or PulseGuide)
            Assert.IsTrue(_vm.CanStartMoveTelescope);

            // Now test fixed RA/Dec jogs

            _vm.IsVariableJog = false;

            _vm.Capabilities = TelescopeCapabilities.GetFullCapabilities();

            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsTrue(_vm.CanStartMoveTelescope);               // Ready to do fixed RA/Dec slews (sync or async)

            _vm.Capabilities.CanSlewAsync = false;

            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsTrue(_vm.CanStartMoveTelescope);               // Ready to do fixed sync RA/Dec slews

            _vm.Capabilities.CanSlew      = false;
            _vm.Capabilities.CanSlewAltAz = false;
            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsFalse(_vm.CanStartMoveTelescope);                // Can't do fixed sync or async RA/Dec or Alt/Az slews

            // Finally test jogging via alt-az slews.

            _vm.Parameters.EquatorialSystem = EquatorialCoordinateType.equTopocentric;
            _vm.Status.Tracking             = false;

            _vm.Capabilities.CanSlewAltAz = true;
            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsTrue(_vm.CanStartMoveTelescope);               // Can slew either sync or async Alt-Az.

            _vm.Capabilities.CanSlewAltAzAsync = false;

            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsTrue(_vm.CanStartMoveTelescope);               // Can slew sync Alt-Az.

            _vm.Capabilities.CanSlewAltAz = false;
            _prVm.Invoke("UpdateCanStartMove");
            Assert.IsFalse(_vm.CanStartMoveTelescope);               // Can't slew either sync or async Alt-Az.
        }
Ejemplo n.º 12
0
        public void CanDoMeridianFlip()
        {
            TelescopeParameters   parms  = new TelescopeParameters();
            DevHubTelescopeStatus status = DevHubTelescopeStatus.GetEmptyStatus();
            TelescopeCapabilities caps   = TelescopeCapabilities.GetFullCapabilities();

            _vm.Status       = null;
            _vm.Parameters   = parms;
            _vm.Capabilities = caps;

            bool result = (bool)_prVm.Invoke("CanDoMeridianFlip");

            Assert.IsFalse(result);               // No device status

            _vm.Status     = status;
            _vm.Parameters = null;

            result = (bool)_prVm.Invoke("CanDoMeridianFlip");
            Assert.IsFalse(result);               // No device parameters

            _vm.Parameters   = parms;
            _vm.Capabilities = null;

            result = (bool)_prVm.Invoke("CanDoMeridianFlip");
            Assert.IsFalse(result);               // No capabilities

            _vm.Capabilities = caps;

            result = (bool)_prVm.Invoke("CanDoMeridianFlip");
            Assert.IsFalse(result);               // Not connected

            _vm.Status.Connected = true;

            _vm.Capabilities.CanSetPierSide = false;
            _vm.Capabilities.CanSlewAsync   = false;

            result = (bool)_prVm.Invoke("CanDoMeridianFlip");
            Assert.IsFalse(result);               // Not capable

            _vm.Capabilities.CanSetPierSide = true;
            _vm.Capabilities.CanSlewAsync   = true;

            _vm.Status.Tracking = false;
            _vm.Status.AtPark   = true;

            result = (bool)_prVm.Invoke("CanDoMeridianFlip");
            Assert.IsFalse(result);               // Scope is parked

            _vm.Status.Tracking = true;
            _vm.Status.AtPark   = false;

            _vm.Status.Slewing = true;

            result = (bool)_prVm.Invoke("CanDoMeridianFlip");
            Assert.IsFalse(result);               // Already slewing

            _vm.Status.Slewing           = false;
            _vm.Parameters.AlignmentMode = AlignmentModes.algAltAz;

            result = (bool)_prVm.Invoke("CanDoMeridianFlip");
            Assert.IsFalse(result);               // Not a German Equatorial mount

            _vm.Parameters.AlignmentMode = AlignmentModes.algGermanPolar;
            _vm.Status.IsCounterWeightUp = false;

            result = (bool)_prVm.Invoke("CanDoMeridianFlip");
            Assert.IsFalse(result);               // Not CW Up

            _vm.Status.IsCounterWeightUp = true;
            _vm.Status.SideOfPier        = PierSide.pierEast;

            result = (bool)_prVm.Invoke("CanDoMeridianFlip");
            Assert.IsFalse(result);               // Not on the west side of the pier

            _vm.Status.SideOfPier = PierSide.pierWest;

            result = (bool)_prVm.Invoke("CanDoMeridianFlip");
            Assert.IsTrue(result);               // Ready to flip
        }
 public TelescopeStatusUpdatedMessage(DevHubTelescopeStatus status)
 {
     Status = status;
 }