diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index 12eaea1..de2958d 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -58,6 +58,7 @@ namespace Meade.net.Telescope.UnitTests private bool _isParked; private ParkedPosition _parkedPosition; private string _siderealTrackingRate; + private bool _restartTracking; [SetUp] public void Setup() @@ -151,9 +152,10 @@ namespace Meade.net.Telescope.UnitTests _sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => productName); _sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => firmwareVersion); - _sharedResourcesWrapperMock.Setup(x => x.SetParked(It.IsAny(), It.IsAny())).Callback((isParked, parkedPostion) => { + _sharedResourcesWrapperMock.Setup(x => x.SetParked(It.IsAny(), It.IsAny(), It.IsAny())).Callback((isParked, parkedPostion, restartTracking) => { _isParked = isParked; _parkedPosition = parkedPostion; + _restartTracking = restartTracking; }); const char ack = (char)6; @@ -2725,7 +2727,7 @@ namespace Meade.net.Telescope.UnitTests // Assert.Throws( () => { _telescope.Tracking = tracking; } ); //} - [TestCase(true, "AP")] + // [TestCase(true, "AP")] [TestCase(false, "AL")] public void Tracking_Set_WhenCanSetTrackingIsTrue_ThenValueIsUpdated(bool tracking, string alignmentCommand) { diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index 5cfa745..62ca09f 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -434,7 +434,7 @@ namespace ASCOM.Meade.net if (connectionInfo.SameDevice == 1) { - SharedResourcesWrapper.SetParked(false, null); + SharedResourcesWrapper.SetParked(false, null, false); LogMessage("Connected Set", "Making first connection telescope adjustments"); LogMessage("Connected Set", $"Site Longitude: {SiteLongitude}"); @@ -1435,6 +1435,14 @@ namespace ASCOM.Meade.net LogMessage("CanUnpark", "Get - " + true); + return IsUnparkable; + } + } + + private bool IsUnparkable + { + get + { var unParkableScopes = new List { TelescopeList.LX200GPS, @@ -1740,7 +1748,7 @@ namespace ASCOM.Meade.net if (AtPark) return; - + ParkedPosition parkedPosition; switch (_profileProperties.ParkedBehaviour) { @@ -1780,6 +1788,7 @@ namespace ASCOM.Meade.net parkedPosition = null; break; } + var isTracking = Tracking; if (SharedResourcesWrapper.ProductName != TelescopeList.LX200CLASSIC) { @@ -1802,7 +1811,7 @@ namespace ASCOM.Meade.net //Setting park to true before sending the park command as the Autostar and Audiostar stop serial communications once the park command has been issued. LogMessage("Park", $"Setting driver to parked"); - SharedResourcesWrapper.SetParked(true, parkedPosition); + SharedResourcesWrapper.SetParked(true, parkedPosition, isTracking); } private bool _userNewerPulseGuiding = true; @@ -3033,7 +3042,7 @@ namespace ASCOM.Meade.net LogMessage("Unpark", "Unparking telescope"); CheckConnected("Unpark"); - if (!IsUnParkable()) + if (!IsUnparkable) throw new InvalidOperationException("Unable to unpark this telescope type"); if (!AtPark) @@ -3050,10 +3059,11 @@ namespace ASCOM.Meade.net } else if (SharedResourcesWrapper.ProductName == TelescopeList.LX200CLASSIC) { - + if (SharedResourcesWrapper.RestartTracking) + Tracking = true; } - SharedResourcesWrapper.SetParked(false, null); + SharedResourcesWrapper.SetParked(false, null, false); // reset side of pier SideOfPier = PierSide.pierUnknown; diff --git a/Meade.net/SharedResources.cs b/Meade.net/SharedResources.cs index bf01c6b..281bcd2 100644 --- a/Meade.net/SharedResources.cs +++ b/Meade.net/SharedResources.cs @@ -598,10 +598,25 @@ namespace ASCOM.Meade.net } } - public static void SetParked(bool atPark, ParkedPosition parkedPosition) + public static void SetParked(bool atPark, ParkedPosition parkedPosition, bool restartTracking) { IsParked = atPark; ParkedPosition = parkedPosition; + RestartTracking = restartTracking; + } + + private static readonly ThreadSafeValue _restartTracking = false; + public static bool RestartTracking + { + get => _restartTracking; + private set => _restartTracking.Set(value); + } + + private static ParkedPosition _parkedPosition; + public static ParkedPosition ParkedPosition + { + get => _parkedPosition; + private set => Interlocked.Exchange(ref _parkedPosition, value); } private static readonly ThreadSafeValue _isParked = false; @@ -611,13 +626,6 @@ namespace ASCOM.Meade.net private set => _isParked.Set(value); } - private static ParkedPosition _parkedPosition; - public static ParkedPosition ParkedPosition - { - get => _parkedPosition; - private set => Interlocked.Exchange(ref _parkedPosition, value); - } - private static readonly ThreadSafeValue _sideOfPier = PierSide.pierUnknown; /// /// Start with . diff --git a/Meade.net/Wrapper/SharedResourcesWrapper.cs b/Meade.net/Wrapper/SharedResourcesWrapper.cs index 4499fd4..bbd9f82 100644 --- a/Meade.net/Wrapper/SharedResourcesWrapper.cs +++ b/Meade.net/Wrapper/SharedResourcesWrapper.cs @@ -27,9 +27,10 @@ namespace ASCOM.Meade.net.Wrapper void WriteProfile(ProfileProperties profileProperties); void ReadCharacters(int throwAwayCharacters); - void SetParked(bool atPark, ParkedPosition parkedPosition); + void SetParked(bool atPark, ParkedPosition parkedPosition, bool restartTracking); bool IsParked { get; } ParkedPosition ParkedPosition { get; } + bool RestartTracking { get; } PierSide SideOfPier { get; set; } double? TargetRightAscension { get; set; } @@ -116,13 +117,15 @@ namespace ASCOM.Meade.net.Wrapper SharedResources.WriteProfile(profileProperties); } - public void SetParked(bool atPark, ParkedPosition parkedPosition) + public void SetParked(bool atPark, ParkedPosition parkedPosition, bool restartTracking) { - SharedResources.SetParked(atPark, parkedPosition); + SharedResources.SetParked(atPark, parkedPosition, restartTracking); } public bool IsParked => SharedResources.IsParked; + public bool RestartTracking => SharedResources.RestartTracking; + public ParkedPosition ParkedPosition => SharedResources.ParkedPosition; public PierSide SideOfPier