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 bool _isParked;
private ParkedPosition _parkedPosition; private ParkedPosition _parkedPosition;
private string _siderealTrackingRate; private string _siderealTrackingRate;
private bool _restartTracking;
[SetUp] [SetUp]
public void Setup() public void Setup()
@@ -151,9 +152,10 @@ namespace Meade.net.Telescope.UnitTests
_sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => productName); _sharedResourcesWrapperMock.Setup(x => x.ProductName).Returns(() => productName);
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(() => firmwareVersion); _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; _isParked = isParked;
_parkedPosition = parkedPostion; _parkedPosition = parkedPostion;
_restartTracking = restartTracking;
}); });
const char ack = (char)6; const char ack = (char)6;
@@ -2725,7 +2727,7 @@ namespace Meade.net.Telescope.UnitTests
// Assert.Throws<ASCOM.NotImplementedException>( () => { _telescope.Tracking = tracking; } ); // Assert.Throws<ASCOM.NotImplementedException>( () => { _telescope.Tracking = tracking; } );
//} //}
[TestCase(true, "AP")] // [TestCase(true, "AP")]
[TestCase(false, "AL")] [TestCase(false, "AL")]
public void Tracking_Set_WhenCanSetTrackingIsTrue_ThenValueIsUpdated(bool tracking, string alignmentCommand) 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) if (connectionInfo.SameDevice == 1)
{ {
SharedResourcesWrapper.SetParked(false, null); SharedResourcesWrapper.SetParked(false, null, false);
LogMessage("Connected Set", "Making first connection telescope adjustments"); LogMessage("Connected Set", "Making first connection telescope adjustments");
LogMessage("Connected Set", $"Site Longitude: {SiteLongitude}"); LogMessage("Connected Set", $"Site Longitude: {SiteLongitude}");
@@ -1435,6 +1435,14 @@ namespace ASCOM.Meade.net
LogMessage("CanUnpark", "Get - " + true); LogMessage("CanUnpark", "Get - " + true);
return IsUnparkable;
}
}
private bool IsUnparkable
{
get
{
var unParkableScopes = new List<string> var unParkableScopes = new List<string>
{ {
TelescopeList.LX200GPS, TelescopeList.LX200GPS,
@@ -1740,7 +1748,7 @@ namespace ASCOM.Meade.net
if (AtPark) if (AtPark)
return; return;
ParkedPosition parkedPosition; ParkedPosition parkedPosition;
switch (_profileProperties.ParkedBehaviour) switch (_profileProperties.ParkedBehaviour)
{ {
@@ -1780,6 +1788,7 @@ namespace ASCOM.Meade.net
parkedPosition = null; parkedPosition = null;
break; break;
} }
var isTracking = Tracking;
if (SharedResourcesWrapper.ProductName != TelescopeList.LX200CLASSIC) 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. //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"); LogMessage("Park", $"Setting driver to parked");
SharedResourcesWrapper.SetParked(true, parkedPosition); SharedResourcesWrapper.SetParked(true, parkedPosition, isTracking);
} }
private bool _userNewerPulseGuiding = true; private bool _userNewerPulseGuiding = true;
@@ -3033,7 +3042,7 @@ namespace ASCOM.Meade.net
LogMessage("Unpark", "Unparking telescope"); LogMessage("Unpark", "Unparking telescope");
CheckConnected("Unpark"); CheckConnected("Unpark");
if (!IsUnParkable()) if (!IsUnparkable)
throw new InvalidOperationException("Unable to unpark this telescope type"); throw new InvalidOperationException("Unable to unpark this telescope type");
if (!AtPark) if (!AtPark)
@@ -3050,10 +3059,11 @@ namespace ASCOM.Meade.net
} }
else if (SharedResourcesWrapper.ProductName == TelescopeList.LX200CLASSIC) else if (SharedResourcesWrapper.ProductName == TelescopeList.LX200CLASSIC)
{ {
if (SharedResourcesWrapper.RestartTracking)
Tracking = true;
} }
SharedResourcesWrapper.SetParked(false, null); SharedResourcesWrapper.SetParked(false, null, false);
// reset side of pier // reset side of pier
SideOfPier = PierSide.pierUnknown; 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; IsParked = atPark;
ParkedPosition = parkedPosition; 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; private static readonly ThreadSafeValue<bool> _isParked = false;
@@ -611,13 +626,6 @@ namespace ASCOM.Meade.net
private set => _isParked.Set(value); 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; private static readonly ThreadSafeValue<PierSide> _sideOfPier = PierSide.pierUnknown;
/// <summary> /// <summary>
/// Start with <see cref="PierSide.pierUnknown"/>. /// Start with <see cref="PierSide.pierUnknown"/>.
+6 -3
View File
@@ -27,9 +27,10 @@ namespace ASCOM.Meade.net.Wrapper
void WriteProfile(ProfileProperties profileProperties); void WriteProfile(ProfileProperties profileProperties);
void ReadCharacters(int throwAwayCharacters); void ReadCharacters(int throwAwayCharacters);
void SetParked(bool atPark, ParkedPosition parkedPosition); void SetParked(bool atPark, ParkedPosition parkedPosition, bool restartTracking);
bool IsParked { get; } bool IsParked { get; }
ParkedPosition ParkedPosition { get; } ParkedPosition ParkedPosition { get; }
bool RestartTracking { get; }
PierSide SideOfPier { get; set; } PierSide SideOfPier { get; set; }
double? TargetRightAscension { get; set; } double? TargetRightAscension { get; set; }
@@ -116,13 +117,15 @@ namespace ASCOM.Meade.net.Wrapper
SharedResources.WriteProfile(profileProperties); 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 IsParked => SharedResources.IsParked;
public bool RestartTracking => SharedResources.RestartTracking;
public ParkedPosition ParkedPosition => SharedResources.ParkedPosition; public ParkedPosition ParkedPosition => SharedResources.ParkedPosition;
public PierSide SideOfPier public PierSide SideOfPier