From ebca231d9a04aeea359e49319ed48d7aef62148f Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Sun, 8 May 2022 15:15:30 +0100 Subject: [PATCH] Made sure that the alignment mode is preserved when parked, across sessions. --- .../TelescopeUnitTests.cs | 4 ++- Meade.net.Telescope/Telescope.cs | 10 ++++--- Meade.net/SharedResources.cs | 27 +++++++------------ 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index de2958d..62db055 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -131,6 +131,7 @@ namespace Meade.net.Telescope.UnitTests _testProperties.AlignmentStatus = alignmentStatus.ToCharArray(); _sharedResourcesWrapperMock.Setup(x => x.SendChars("GW", false, 3)).Returns(() => new string(_testProperties.AlignmentStatus)); + _sharedResourcesWrapperMock.Setup(x => x.SendString("GW", false)).Returns(() => new string(_testProperties.AlignmentStatus)); _sharedResourcesWrapperMock.Setup(x => x.SendBlind("AP", false)).Callback(() => _testProperties.AlignmentStatus[1] = 'T'); _sharedResourcesWrapperMock.Setup(x => x.SendBlind("AL", false)).Callback(() => _testProperties.AlignmentStatus[1] = 'N'); @@ -808,9 +809,10 @@ namespace Meade.net.Telescope.UnitTests [Test] public void AlignmentMode_Get_WhenUnknownAlignmentMode_ThrowsException() { - _testProperties.AlignmentMode = ""; ConnectTelescope(); + _testProperties.AlignmentMode = ""; + Assert.Throws(() => { var actualResult = _telescope.AlignmentMode; diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index 62ca09f..2cd6f24 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -488,6 +488,8 @@ namespace ASCOM.Meade.net SendCurrentDateTime("Connect"); } } + + SharedResources.AlignmentMode = AlignmentMode; } else { @@ -1050,6 +1052,8 @@ namespace ASCOM.Meade.net //:AL# Sets telescope to Land alignment mode //Returns: nothing + + SharedResources.AlignmentMode = AlignmentMode; } } @@ -2805,8 +2809,6 @@ namespace ASCOM.Meade.net } } - private AlignmentModes _savedAlignmode; - public bool Tracking { get @@ -2833,12 +2835,12 @@ namespace ASCOM.Meade.net if (!value) { - _savedAlignmode = AlignmentMode; + SharedResources.AlignmentMode = AlignmentMode; SharedResourcesWrapper.SendBlind("AL"); } else { - AlignmentMode = _savedAlignmode; + AlignmentMode = SharedResources.AlignmentMode; } } } diff --git a/Meade.net/SharedResources.cs b/Meade.net/SharedResources.cs index 281bcd2..a40be75 100644 --- a/Meade.net/SharedResources.cs +++ b/Meade.net/SharedResources.cs @@ -567,23 +567,7 @@ namespace ASCOM.Meade.net } #endregion - - public static void Lock(Action action) - { - lock (LockObject) - { - action(); - } - } - - public static T Lock(Func func) - { - lock (LockObject) - { - return func(); - } - } - + /// /// Skeleton of a hardware class, all this does is hold a count of the connections, /// in reality extra code will be needed to handle the hardware in some way @@ -611,7 +595,7 @@ namespace ASCOM.Meade.net get => _restartTracking; private set => _restartTracking.Set(value); } - + private static ParkedPosition _parkedPosition; public static ParkedPosition ParkedPosition { @@ -626,6 +610,13 @@ namespace ASCOM.Meade.net private set => _isParked.Set(value); } + private static readonly ThreadSafeValue _alignmentMode = AlignmentModes.algAltAz; + public static AlignmentModes AlignmentMode + { + get => _alignmentMode; + set => _alignmentMode.Set(value); + } + private static readonly ThreadSafeValue _sideOfPier = PierSide.pierUnknown; /// /// Start with .