From 5c362a5a9aa88b8be40d62d44acd0b58fbc30834 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Tue, 10 May 2022 11:39:40 +0100 Subject: [PATCH] Changed how the part position is calculated. --- .../TelescopeUnitTests.cs | 15 ++++--- Meade.net.Telescope/Telescope.cs | 39 ++++++++++++------- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index d1c66fc..1fc6ad6 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -2713,11 +2713,16 @@ namespace Meade.net.Telescope.UnitTests _sharedResourcesWrapperMock.Verify(x => x.SendChar(command, false), Times.Once); } - [Test] - public void Tracking_Get_WhenDefault_ThenIsTrue() + [TestCase("A", true)] + [TestCase("P", true)] + [TestCase("L", false)] + public void Tracking_Get_WhenGetsValue_ThenIsExpectedResult(string alignmentMode, bool expectedResult) { - Assert.That(_telescope.Tracking, Is.True); - } + ConnectTelescope(); + _testProperties.AlignmentMode = alignmentMode; + + Assert.That(_telescope.Tracking, Is.EqualTo(expectedResult)); + } //[TestCase(true)] //[TestCase(false)] @@ -2729,7 +2734,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 2f93149..4d1d24f 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -1107,14 +1107,7 @@ namespace ASCOM.Meade.net return Retry(6, () => { LogMessage("AlignmentMode Get", $"Sending Ack code."); - const char ack = (char)6; - //ACK <0x06> Query of alignment mounting mode. - //Returns: - //A If scope in AltAz Mode - //D If scope is currently in the Downloader[Autostar II & Autostar] - //L If scope in Land Mode - //P If scope in Polar Mode - var alignmentString = SharedResourcesWrapper.SendChar(ack.ToString()); + var alignmentString = GetAlignmentString(); AlignmentModes alignmentMode; switch (alignmentString) { @@ -1189,6 +1182,19 @@ namespace ASCOM.Meade.net } } + private string GetAlignmentString() + { + const char ack = (char)6; + //ACK <0x06> Query of alignment mounting mode. + //Returns: + //A If scope in AltAz Mode + //D If scope is currently in the Downloader[Autostar II & Autostar] + //L If scope in Land Mode + //P If scope in Polar Mode + var alignmentString = SharedResourcesWrapper.SendChar(ack.ToString()); + return alignmentString; + } + private AlignmentStatus GetScopeAlignmentStatus() { LogMessage("GetScopeAlignmentStatus", "Started"); @@ -2251,14 +2257,16 @@ namespace ASCOM.Meade.net } else { - LogMessage("Park", $"Parking LX200 Classic"); + LogMessage("Park", $"Calculating Park Alt Az"); + var siteLatitude = SiteLatitude; + var parkAlt = AlignmentMode == AlignmentModes.algAltAz ? 0 : 90 - siteLatitude; + var parkAz = siteLatitude >= 0 ? 180 : 0; + LogMessage("Park", $"Parking LX200 Classic"); Tracking = false; - LogMessage("Park", $"Calculating Park Altitude"); - var parkAlt = AlignmentMode == AlignmentModes.algAltAz ? 0 : 90 - SiteLatitude; - LogMessage("Park", $"Slewing to park position az:0 alt:{parkAlt}"); - SlewToAltAz(0, parkAlt, false); + LogMessage("Park", $"Slewing to park position az:{parkAz} alt:{parkAlt}"); + SlewToAltAz(parkAz, parkAlt, false); LogMessage("Park", $"Arrived at park position"); } @@ -3542,6 +3550,11 @@ namespace ASCOM.Meade.net var alignmentStatus = GetScopeAlignmentStatus(); isTracking = alignmentStatus.Tracking; } + else + { + var alignmentString = GetAlignmentString(); + isTracking = alignmentString != "L"; + } LogMessage("Tracking", $"Get = {isTracking}"); return isTracking;