diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs index 8a94096..a088691 100644 --- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs +++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs @@ -2783,6 +2783,8 @@ namespace Meade.net.Telescope.UnitTests [TestCase(DriveRates.driveSidereal, "+60.1")] [TestCase(DriveRates.driveSolar, "+60.0")] [TestCase(DriveRates.driveLunar, "+57.9")] + [TestCase(DriveRates.driveLunar, "57.3")] + [TestCase(DriveRates.driveLunar, "58.9")] public void TrackingRate_Get_WhenConnected_ThenSendsCommandToTelescope(DriveRates rate, string trackingRate) { _siderealTrackingRate = trackingRate; diff --git a/Meade.net.Telescope/Meade.net.Telescope.csproj b/Meade.net.Telescope/Meade.net.Telescope.csproj index a884ce0..f51673b 100644 --- a/Meade.net.Telescope/Meade.net.Telescope.csproj +++ b/Meade.net.Telescope/Meade.net.Telescope.csproj @@ -128,6 +128,7 @@ + @@ -187,6 +188,7 @@ Meade.net + diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs index e7aae54..e417173 100644 --- a/Meade.net.Telescope/Telescope.cs +++ b/Meade.net.Telescope/Telescope.cs @@ -2643,25 +2643,20 @@ namespace ASCOM.Meade.net rate = rate.Replace("+", string.Empty); + var rateDouble = double.Parse(rate); + DriveRates result; - switch (rate) - { - case "60.1": - result = DriveRates.driveSidereal; - break; - case "60.0": - result = DriveRates.driveSolar; - break; - case "57.9": - result = DriveRates.driveLunar; - break; - default: - result = DriveRates.driveKing; - //If this is ever returned it is representing a fail condition. - break; - } - + if (rateDouble.Equals(60.1)) + result = DriveRates.driveSidereal; + else if (rateDouble.Equals(60.0)) + result = DriveRates.driveSolar; + else if (rateDouble.Between(57.3, 58.9)) + result = DriveRates.driveLunar; + else + //If this is ever returned it is representing a fail condition. + //result = DriveRates.driveKing; + throw new ASCOM.InvalidValueException($"{rate} is not a supported tracking rate for meade mounts"); LogMessage("TrackingRate Get", $"{rate} {result}");