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