I think this will allow the LX200Classic to unpark

This commit is contained in:
2022-05-08 14:46:53 +01:00
parent 81d2b98bfe
commit 2b5205d9c5
4 changed files with 42 additions and 19 deletions
@@ -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<bool>(), It.IsAny<ParkedPosition>())).Callback<bool,ParkedPosition>((isParked, parkedPostion) => {
_sharedResourcesWrapperMock.Setup(x => x.SetParked(It.IsAny<bool>(), It.IsAny<ParkedPosition>(), It.IsAny<bool>())).Callback<bool,ParkedPosition,bool>((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<ASCOM.NotImplementedException>( () => { _telescope.Tracking = tracking; } );
//}
[TestCase(true, "AP")]
// [TestCase(true, "AP")]
[TestCase(false, "AL")]
public void Tracking_Set_WhenCanSetTrackingIsTrue_ThenValueIsUpdated(bool tracking, string alignmentCommand)
{
+16 -6
View File
@@ -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<string>
{
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;
+16 -8
View File
@@ -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<bool> _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<bool> _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<PierSide> _sideOfPier = PierSide.pierUnknown;
/// <summary>
/// Start with <see cref="PierSide.pierUnknown"/>.
+6 -3
View File
@@ -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