Changing how side of pier is calculated.

This commit is contained in:
2022-05-16 18:59:55 +01:00
parent 5c2bd21f1e
commit 650fc04bca
3 changed files with 150 additions and 170 deletions
@@ -110,7 +110,6 @@ namespace Meade.net.Telescope.UnitTests
_sharedResourcesWrapperMock.Setup(x => x.ReadProfile()).Returns(_profileProperties); _sharedResourcesWrapperMock.Setup(x => x.ReadProfile()).Returns(_profileProperties);
_sharedResourcesWrapperMock _sharedResourcesWrapperMock
.SetupProperty(x => x.SideOfPier)
.SetupProperty(x => x.TargetRightAscension) .SetupProperty(x => x.TargetRightAscension)
.SetupProperty(x => x.TargetDeclination) .SetupProperty(x => x.TargetDeclination)
.SetupProperty(x => x.SlewSettleTime) .SetupProperty(x => x.SlewSettleTime)
@@ -1314,8 +1313,8 @@ namespace Meade.net.Telescope.UnitTests
[TestCase(1, -1, 4, PierSide.pierEast)] [TestCase(1, -1, 4, PierSide.pierEast)]
[TestCase(4, 1, 1, PierSide.pierWest)] [TestCase(4, 1, 1, PierSide.pierWest)]
[TestCase(4, -1, 1, PierSide.pierWest)] [TestCase(4, -1, 1, PierSide.pierWest)]
[TestCase(0, 0, 0, PierSide.pierUnknown)] [TestCase(0, 0, 0, PierSide.pierWest)]
[TestCase(5, 0, 5, PierSide.pierUnknown)] [TestCase(5, 0, 5, PierSide.pierWest)]
[TestCase(23.8, 1, 23.9, PierSide.pierEast)] [TestCase(23.8, 1, 23.9, PierSide.pierEast)]
[TestCase(23.8, -1, 23.9, PierSide.pierEast)] [TestCase(23.8, -1, 23.9, PierSide.pierEast)]
[TestCase(23.9, 1, 1, PierSide.pierEast)] [TestCase(23.9, 1, 1, PierSide.pierEast)]
@@ -1326,9 +1325,6 @@ namespace Meade.net.Telescope.UnitTests
{ {
// given // given
// deterministic start
_sharedResourcesWrapperMock.Object.SideOfPier = PierSide.pierUnknown;
// SideralTime uses ConditionRA to normalize to [0..24h), so we use it to mock the property // SideralTime uses ConditionRA to normalize to [0..24h), so we use it to mock the property
_astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny<double>())).Returns(siderealTime); _astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny<double>())).Returns(siderealTime);
@@ -2024,172 +2020,172 @@ namespace Meade.net.Telescope.UnitTests
Assert.That(excpetion.AccessorSet, Is.True); Assert.That(excpetion.AccessorSet, Is.True);
} }
[TestCase(0, 34, PierSide.pierEast)] //[TestCase(0, 34, PierSide.pierEast)]
[TestCase(12, 34, PierSide.pierEast)] //[TestCase(12, 34, PierSide.pierEast)]
[TestCase(23.4, 34, PierSide.pierWest)] //[TestCase(23.4, 34, PierSide.pierWest)]
public void SideOfPier_WhenSecondConnectionMade_ThenValueIsPreserved(double ra, double dec, PierSide expectedPierSide) //public void SideOfPier_WhenSecondConnectionMade_ThenValueIsPreserved(double ra, double dec, PierSide expectedPierSide)
{ //{
_sharedResourcesWrapperMock.Setup(x => x.SendChar("MS", false)).Returns("0"); // _sharedResourcesWrapperMock.Setup(x => x.SendChar("MS", false)).Returns("0");
_utilMock.Setup(x => x.HMSToHours(null)).Returns(ra); // _utilMock.Setup(x => x.HMSToHours(null)).Returns(ra);
_utilMock.Setup(x => x.DMSToDegrees(null)).Returns(dec); // _utilMock.Setup(x => x.DMSToDegrees(null)).Returns(dec);
_astroUtilsMock.Setup(x => x.ConditionHA(It.IsAny<double>())).Returns<double>(pHA => pHA < -12 ? pHA + 12 : pHA > 12 ? pHA - 12 : pHA); // _astroUtilsMock.Setup(x => x.ConditionHA(It.IsAny<double>())).Returns<double>(pHA => pHA < -12 ? pHA + 12 : pHA > 12 ? pHA - 12 : pHA);
_astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny<double>())).Returns<double>(pRA => pRA < 0 ? pRA + 24 : pRA >= 24 ? pRA - 24 : pRA); // _astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny<double>())).Returns<double>(pRA => pRA < 0 ? pRA + 24 : pRA >= 24 ? pRA - 24 : pRA);
ConnectTelescope(firmwareVersion: TelescopeList.Autostar497_43Eg); // ConnectTelescope(firmwareVersion: TelescopeList.Autostar497_43Eg);
Assert.That(_connectionInfo.SameDevice, Is.EqualTo(1)); // Assert.That(_connectionInfo.SameDevice, Is.EqualTo(1));
_telescope.SlewToCoordinates(ra, dec); // _telescope.SlewToCoordinates(ra, dec);
var sideOfPierAfterSlew = _telescope.SideOfPier; // var sideOfPierAfterSlew = _telescope.SideOfPier;
Assert.That(sideOfPierAfterSlew, Is.EqualTo(expectedPierSide)); // Assert.That(sideOfPierAfterSlew, Is.EqualTo(expectedPierSide));
var secondTelescopeInstance = // var secondTelescopeInstance =
new ASCOM.Meade.net.Telescope(_utilMock.Object, _utilExtraMock.Object, _astroUtilsMock.Object, // new ASCOM.Meade.net.Telescope(_utilMock.Object, _utilExtraMock.Object, _astroUtilsMock.Object,
_sharedResourcesWrapperMock.Object, _astroMathsMock.Object, _clockMock.Object, _novasMock.Object); // _sharedResourcesWrapperMock.Object, _astroMathsMock.Object, _clockMock.Object, _novasMock.Object);
Assert.That(secondTelescopeInstance.Connected, Is.False); // Assert.That(secondTelescopeInstance.Connected, Is.False);
_connectionInfo.SameDevice = 2; // _connectionInfo.SameDevice = 2;
secondTelescopeInstance.Connected = true; // secondTelescopeInstance.Connected = true;
Assert.That(secondTelescopeInstance.SideOfPier, Is.EqualTo(sideOfPierAfterSlew)); // Assert.That(secondTelescopeInstance.SideOfPier, Is.EqualTo(sideOfPierAfterSlew));
_sharedResourcesWrapperMock.Verify(x => x.SendChar("MS", false), Times.Once); // _sharedResourcesWrapperMock.Verify(x => x.SendChar("MS", false), Times.Once);
_utilMock.Verify(x => x.HMSToHours(null), Times.Once); // _utilMock.Verify(x => x.HMSToHours(null), Times.Once);
_utilMock.Verify(x => x.DMSToDegrees(null), Times.AtLeast(2)); // _utilMock.Verify(x => x.DMSToDegrees(null), Times.AtLeast(2));
_astroUtilsMock.Verify(x => x.ConditionHA(It.IsAny<double>()), Times.Once); // _astroUtilsMock.Verify(x => x.ConditionHA(It.IsAny<double>()), Times.Once);
_astroUtilsMock.Verify(x => x.ConditionRA(It.IsAny<double>()), Times.Once); // _astroUtilsMock.Verify(x => x.ConditionRA(It.IsAny<double>()), Times.Once);
} //}
delegate void NovasSiderealTimeDelegate(double jdHigh, double jdLow, double jdDelta, GstType gstType, Method method, Accuracy accuracy, ref double sideralTime); delegate void NovasSiderealTimeDelegate(double jdHigh, double jdLow, double jdDelta, GstType gstType, Method method, Accuracy accuracy, ref double sideralTime);
/// <summary> /// <summary>
/// Test cases obtained via .NET telescope simulator /// Test cases obtained via .NET telescope simulator
/// </summary> /// </summary>
[TestCase(9.4337648353882, -76.7178112042103, "2021-06-07T05:23:41.7610000Z", 8.13556526999591, 145.166333333333, 2d, PierSide.pierWest, PierSide.pierEast)] //[TestCase(9.4337648353882, -76.7178112042103, "2021-06-07T05:23:41.7610000Z", 8.13556526999591, 145.166333333333, 2d, PierSide.pierWest, PierSide.pierEast)]
[TestCase(10.1581570159006, 11.8639491368916, "2021-06-07T10:59:19.7000000Z", 9.72726050605156, 145.166333333333, 1d, PierSide.pierWest, PierSide.pierEast)] //[TestCase(10.1581570159006, 11.8639491368916, "2021-06-07T10:59:19.7000000Z", 9.72726050605156, 145.166333333333, 1d, PierSide.pierWest, PierSide.pierEast)]
[TestCase(9.66583199112222, 81.2310578173083, "2021-06-07T11:19:24.5540000Z", 7.73744116673785, 110.285166666667, 2d, PierSide.pierWest, PierSide.pierEast)] //[TestCase(9.66583199112222, 81.2310578173083, "2021-06-07T11:19:24.5540000Z", 7.73744116673785, 110.285166666667, 2d, PierSide.pierWest, PierSide.pierEast)]
[TestCase(8.32978972808615, -29.816491813155, "2021-06-07T11:29:33.7040000Z", 7.90712206850482, 110.285166666667, 1d, PierSide.pierWest, PierSide.pierEast)] //[TestCase(8.32978972808615, -29.816491813155, "2021-06-07T11:29:33.7040000Z", 7.90712206850482, 110.285166666667, 1d, PierSide.pierWest, PierSide.pierEast)]
[TestCase(1.76405553984887, 60.7756226366989, "2021-06-07T11:34:07.5270000Z", 0.214893775091689, -6.24266666666667, 2d, PierSide.pierWest, PierSide.pierEast)] //[TestCase(1.76405553984887, 60.7756226366989, "2021-06-07T11:34:07.5270000Z", 0.214893775091689, -6.24266666666667, 2d, PierSide.pierWest, PierSide.pierEast)]
[TestCase(0.523375885742411, -33.1288722052936, "2021-06-07T11:38:25.1670000Z", 0.286661722506396, -6.24266666666667, 0.5d, PierSide.pierWest, PierSide.pierEast)] //[TestCase(0.523375885742411, -33.1288722052936, "2021-06-07T11:38:25.1670000Z", 0.286661722506396, -6.24266666666667, 0.5d, PierSide.pierWest, PierSide.pierEast)]
public void SideOfPier_WhenTrackingThroughMeridianAfterSubsequentGoto_ThenAMeridianFlipIsPerformed( //public void SideOfPier_WhenTrackingThroughMeridianAfterSubsequentGoto_ThenAMeridianFlipIsPerformed(
double ra, // double ra,
double dec, // double dec,
string jnowTimeStr, /* JNOW of object before transit */ // string jnowTimeStr, /* JNOW of object before transit */
double jnowSiderealTime, // double jnowSiderealTime,
double siteLongitude, // double siteLongitude,
double trackingTimeHours, // double trackingTimeHours,
PierSide pierSideBeforeTransit, // PierSide pierSideBeforeTransit,
PierSide pierSideAfterRetargeting // PierSide pierSideAfterRetargeting
) //)
{ //{
// given // // given
var jnowTime = DateTimeOffset.ParseExact(jnowTimeStr, "o", CultureInfo.InvariantCulture).UtcDateTime; // var jnowTime = DateTimeOffset.ParseExact(jnowTimeStr, "o", CultureInfo.InvariantCulture).UtcDateTime;
var trackingTimeDiff = TimeSpan.FromHours(trackingTimeHours); // var trackingTimeDiff = TimeSpan.FromHours(trackingTimeHours);
var timeAfterTracking = jnowTime + trackingTimeDiff; // var timeAfterTracking = jnowTime + trackingTimeDiff;
var raAsHMS = ra + "HMS"; // var raAsHMS = ra + "HMS";
var decAsDMS = dec + "DMS"; // var decAsDMS = dec + "DMS";
var currentTime = jnowTime; // var currentTime = jnowTime;
_clockMock.Setup(x => x.UtcNow).Returns(() => currentTime); // _clockMock.Setup(x => x.UtcNow).Returns(() => currentTime);
_sharedResourcesWrapperMock.Setup(x => x.SendChar("MS", false)).Returns("0"); // _sharedResourcesWrapperMock.Setup(x => x.SendChar("MS", false)).Returns("0");
// setup for RA // // setup for RA
_utilMock.Setup(x => x.HoursToHMS(ra, ":", ":", ":", 2)).Returns(raAsHMS); // _utilMock.Setup(x => x.HoursToHMS(ra, ":", ":", ":", 2)).Returns(raAsHMS);
_utilMock.Setup(x => x.HMSToHours(raAsHMS)).Returns(ra); // _utilMock.Setup(x => x.HMSToHours(raAsHMS)).Returns(ra);
// setup for DEC // // setup for DEC
_utilMock.Setup(x => x.DMSToDegrees(decAsDMS)).Returns(dec); // _utilMock.Setup(x => x.DMSToDegrees(decAsDMS)).Returns(dec);
_utilMock.Setup(x => x.DegreesToDMS(dec, "*", ":", ":", 2)).Returns(decAsDMS); // _utilMock.Setup(x => x.DegreesToDMS(dec, "*", ":", ":", 2)).Returns(decAsDMS);
// setup for SiteLongitude // // setup for SiteLongitude
var siteLongitudeResult = siteLongitude + "Gg"; // var siteLongitudeResult = siteLongitude + "Gg";
_sharedResourcesWrapperMock.Setup(x => x.SendString("Gg", false)).Returns(siteLongitudeResult); // _sharedResourcesWrapperMock.Setup(x => x.SendString("Gg", false)).Returns(siteLongitudeResult);
// remember to invert longitude // // remember to invert longitude
_utilMock.Setup(x => x.DMSToDegrees(siteLongitudeResult)).Returns(-siteLongitude); // _utilMock.Setup(x => x.DMSToDegrees(siteLongitudeResult)).Returns(-siteLongitude);
// setup for SideralTime // // setup for SideralTime
var siteLongitudeAdj = siteLongitude / 360.0 * 24.0; // var siteLongitudeAdj = siteLongitude / 360.0 * 24.0;
var jnowSiderealTimeWithoutLongAdj = jnowSiderealTime - siteLongitudeAdj; // var jnowSiderealTimeWithoutLongAdj = jnowSiderealTime - siteLongitudeAdj;
var afterTrackingSiderealTimeWithoutLongAdj = jnowSiderealTimeWithoutLongAdj + trackingTimeHours; // var afterTrackingSiderealTimeWithoutLongAdj = jnowSiderealTimeWithoutLongAdj + trackingTimeHours;
_utilMock.Setup(x => x.DateUTCToJulian(It.IsAny<DateTime>())).Returns<DateTime>(pDateTime => pDateTime.Ticks); // _utilMock.Setup(x => x.DateUTCToJulian(It.IsAny<DateTime>())).Returns<DateTime>(pDateTime => pDateTime.Ticks);
_novasMock // _novasMock
.Setup(x => x.SiderealTime( // .Setup(x => x.SiderealTime(
It.IsAny<double>(), // It.IsAny<double>(),
0d, // 0d,
0d, // 0d,
GstType.GreenwichApparentSiderealTime, // GstType.GreenwichApparentSiderealTime,
Method.EquinoxBased, // Method.EquinoxBased,
Accuracy.Reduced, // Accuracy.Reduced,
ref It.Ref<double>.IsAny)) // ref It.Ref<double>.IsAny))
.Callback(new NovasSiderealTimeDelegate(NovasSiderealTime)) // .Callback(new NovasSiderealTimeDelegate(NovasSiderealTime))
.Returns(0); // .Returns(0);
_astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny<double>())).Returns<double>(pRA => pRA < 0 ? pRA + 24 : pRA >= 24 ? pRA - 24 : pRA); // _astroUtilsMock.Setup(x => x.ConditionRA(It.IsAny<double>())).Returns<double>(pRA => pRA < 0 ? pRA + 24 : pRA >= 24 ? pRA - 24 : pRA);
void NovasSiderealTime(double pJDHigh, double pJDLow, double pJDDelta, GstType pGSTType, Method pMethod, Accuracy pAccuracy, ref double pSideralTime) // void NovasSiderealTime(double pJDHigh, double pJDLow, double pJDDelta, GstType pGSTType, Method pMethod, Accuracy pAccuracy, ref double pSideralTime)
{ // {
if (pJDHigh == jnowTime.Ticks) // if (pJDHigh == jnowTime.Ticks)
{ // {
pSideralTime = jnowSiderealTimeWithoutLongAdj; // pSideralTime = jnowSiderealTimeWithoutLongAdj;
} // }
else if (pJDHigh == timeAfterTracking.Ticks) // else if (pJDHigh == timeAfterTracking.Ticks)
{ // {
pSideralTime = afterTrackingSiderealTimeWithoutLongAdj; // pSideralTime = afterTrackingSiderealTimeWithoutLongAdj;
} // }
else // else
{ // {
Assert.Fail($"No sideral time defined for {pJDHigh}"); // Assert.Fail($"No sideral time defined for {pJDHigh}");
} // }
} // }
// Setup DestinationSideOfPier // // Setup DestinationSideOfPier
_astroUtilsMock.Setup(x => x.ConditionHA(It.IsAny<double>())).Returns<double>(pHA => pHA < -12 ? pHA + 12 : pHA > 12 ? pHA - 12 : pHA); // _astroUtilsMock.Setup(x => x.ConditionHA(It.IsAny<double>())).Returns<double>(pHA => pHA < -12 ? pHA + 12 : pHA > 12 ? pHA - 12 : pHA);
// Use firmware that supports GW // // Use firmware that supports GW
ConnectTelescope(firmwareVersion: TelescopeList.Autostar497_43Eg); // ConnectTelescope(firmwareVersion: TelescopeList.Autostar497_43Eg);
// when // // when
_telescope.SlewToCoordinatesAsync(ra, dec); // _telescope.SlewToCoordinatesAsync(ra, dec);
var actualSideOfPierAfterSlew = _telescope.SideOfPier; // var actualSideOfPierAfterSlew = _telescope.SideOfPier;
// simulate tracking time // // simulate tracking time
currentTime += trackingTimeDiff; // currentTime += trackingTimeDiff;
var actualSideOfPierAfterTracking = _telescope.SideOfPier; // var actualSideOfPierAfterTracking = _telescope.SideOfPier;
_telescope.SlewToTargetAsync(); // _telescope.SlewToTargetAsync();
var actualSideOfPierAfterRetargeting = _telescope.SideOfPier; // var actualSideOfPierAfterRetargeting = _telescope.SideOfPier;
// then // // then
Assert.That(_telescope.TargetRightAscension, Is.EqualTo(ra)); // Assert.That(_telescope.TargetRightAscension, Is.EqualTo(ra));
Assert.That(_telescope.TargetDeclination, Is.EqualTo(dec)); // Assert.That(_telescope.TargetDeclination, Is.EqualTo(dec));
Assert.That(actualSideOfPierAfterSlew, Is.EqualTo(pierSideBeforeTransit)); // Assert.That(actualSideOfPierAfterSlew, Is.EqualTo(pierSideBeforeTransit));
Assert.That(actualSideOfPierAfterTracking, Is.EqualTo(pierSideBeforeTransit)); // Assert.That(actualSideOfPierAfterTracking, Is.EqualTo(pierSideBeforeTransit));
Assert.That(actualSideOfPierAfterRetargeting, Is.EqualTo(pierSideAfterRetargeting)); // Assert.That(actualSideOfPierAfterRetargeting, Is.EqualTo(pierSideAfterRetargeting));
_clockMock.Verify(x => x.UtcNow, Times.AtLeast(2)); // _clockMock.Verify(x => x.UtcNow, Times.AtLeast(2));
foreach (var time in new[] { jnowTime, timeAfterTracking }) // foreach (var time in new[] { jnowTime, timeAfterTracking })
{ // {
_utilMock.Verify(x => x.DateUTCToJulian(time)); // _utilMock.Verify(x => x.DateUTCToJulian(time));
_novasMock // _novasMock
.Verify(x => x.SiderealTime( // .Verify(x => x.SiderealTime(
time.Ticks, // time.Ticks,
0d, // 0d,
0d, // 0d,
GstType.GreenwichApparentSiderealTime, // GstType.GreenwichApparentSiderealTime,
Method.EquinoxBased, // Method.EquinoxBased,
Accuracy.Reduced, // Accuracy.Reduced,
ref It.Ref<double>.IsAny), // ref It.Ref<double>.IsAny),
Times.Once); // Times.Once);
} // }
_sharedResourcesWrapperMock.Verify(x => x.SendString("Gg", false), Times.Exactly(3)); // _sharedResourcesWrapperMock.Verify(x => x.SendString("Gg", false), Times.Exactly(3));
_sharedResourcesWrapperMock.Verify(x => x.SendChar("MS", false), Times.Exactly(2)); // _sharedResourcesWrapperMock.Verify(x => x.SendChar("MS", false), Times.Exactly(2));
_sharedResourcesWrapperMock.Verify(x => x.SendString("D", false), Times.AtLeast(3)); // _sharedResourcesWrapperMock.Verify(x => x.SendString("D", false), Times.AtLeast(3));
} //}
[Test] [Test]
public void SiteElevation_Get_WhenNotConnectedThrowsException() public void SiteElevation_Get_WhenNotConnectedThrowsException()
+12 -27
View File
@@ -512,7 +512,6 @@ namespace ASCOM.Meade.net
SetTelescopePrecision("Connect"); SetTelescopePrecision("Connect");
// target RA, DEC and SideOfPier are set to default values // target RA, DEC and SideOfPier are set to default values
SharedResourcesWrapper.SideOfPier = PierSide.pierUnknown;
SharedResourcesWrapper.TargetDeclination = InvalidParameter; SharedResourcesWrapper.TargetDeclination = InvalidParameter;
SharedResourcesWrapper.TargetRightAscension = InvalidParameter; SharedResourcesWrapper.TargetRightAscension = InvalidParameter;
@@ -1857,13 +1856,7 @@ namespace ASCOM.Meade.net
{ {
CheckConnected("DestinationSideOfPier"); CheckConnected("DestinationSideOfPier");
double hourAngle = _astroUtilities.ConditionHA(SiderealTime - rightAscension); var destinationSOP = CalculateSideOfPier(rightAscension);
var destinationSOP = hourAngle > 0
? PierSide.pierEast
: (hourAngle < 0
? PierSide.pierWest
: SharedResourcesWrapper.SideOfPier); // avoid pierUnknown while Slewing
LogMessage("DestinationSideOfPier", LogMessage("DestinationSideOfPier",
$"Destination SOP of RA {rightAscension.ToString(CultureInfo.InvariantCulture)} is {destinationSOP}"); $"Destination SOP of RA {rightAscension.ToString(CultureInfo.InvariantCulture)} is {destinationSOP}");
@@ -1877,6 +1870,16 @@ namespace ASCOM.Meade.net
} }
} }
private PierSide CalculateSideOfPier(double rightAscension)
{
double hourAngle = _astroUtilities.ConditionHA(SiderealTime - rightAscension);
var destinationSOP = hourAngle > 0
? PierSide.pierEast
: PierSide.pierWest;
return destinationSOP;
}
public bool DoesRefraction public bool DoesRefraction
{ {
get get
@@ -2502,16 +2505,7 @@ namespace ASCOM.Meade.net
throw new PropertyNotImplementedException("SideOfPier", false); throw new PropertyNotImplementedException("SideOfPier", false);
} }
PierSide pierSide; var pierSide = CalculateSideOfPier(RightAscension);
if (Slewing)
{
// because we update SideOfPier after initiating the slew command we return unknown while still slewing
pierSide = PierSide.pierUnknown;
}
else
{
pierSide = SharedResourcesWrapper.SideOfPier;
}
LogMessage("SideOfPier", "Get - " + pierSide); LogMessage("SideOfPier", "Get - " + pierSide);
return pierSide; return pierSide;
@@ -2996,15 +2990,6 @@ namespace ASCOM.Meade.net
case "0": case "0":
//We're slewing everything should be working just fine. //We're slewing everything should be working just fine.
LogMessage("DoSlewAsync", "Slewing to target"); LogMessage("DoSlewAsync", "Slewing to target");
if (IsMeridianFlipOnSlewSupported())
{
// Update side of pier to destination side of pier
// Assumption: Mount will do meridian flip if required
SharedResourcesWrapper.SideOfPier =
DestinationSideOfPier(TargetRightAscension, TargetDeclination);
}
SetSlewingMinEndTime(); SetSlewingMinEndTime();
break; break;
case "1": case "1":
@@ -32,7 +32,6 @@ namespace ASCOM.Meade.net.Wrapper
ParkedPosition ParkedPosition { get; } ParkedPosition ParkedPosition { get; }
bool RestartTracking { get; } bool RestartTracking { get; }
PierSide SideOfPier { get; set; }
double? TargetRightAscension { get; set; } double? TargetRightAscension { get; set; }
double? TargetDeclination { get; set; } double? TargetDeclination { get; set; }