Initial support of LXD600 mount: no StarPatch, no long format, no park support for this mount.

This commit is contained in:
Olivier Balitch
2025-09-27 11:46:00 +02:00
parent a89b1c8fa6
commit c24b4c1161
5 changed files with 152 additions and 24 deletions
+30 -22
View File
@@ -632,22 +632,26 @@ namespace ASCOM.Meade.net
{
var isStarPatch = false;
var firmwareVersionArray = SharedResourcesWrapper.FirmwareVersion.ToCharArray();
if (firmwareVersionArray.Length > 1)
//LXD600 is based on LX-200 classic Meade and does not support StarPatch
if (SharedResourcesWrapper.ProductName != TelescopeList.LXD600)
{
//If last character is a number
var lastChr = firmwareVersionArray[firmwareVersionArray.Length - 1];
if (char.IsNumber(lastChr))
var firmwareVersionArray = SharedResourcesWrapper.FirmwareVersion.ToCharArray();
if (firmwareVersionArray.Length > 1)
{
// Get case of second to last character
var secondLastChar = firmwareVersionArray[firmwareVersionArray.Length - 2];
// lower case = StarPatch, upper case = Meade
isStarPatch = char.IsLower(secondLastChar);
}
else
{
// lower case = Meade, upper case = StarPatch
isStarPatch = char.IsUpper(lastChr);
//If last character is a number
var lastChr = firmwareVersionArray[firmwareVersionArray.Length - 1];
if (char.IsNumber(lastChr))
{
// Get case of second to last character
var secondLastChar = firmwareVersionArray[firmwareVersionArray.Length - 2];
// lower case = StarPatch, upper case = Meade
isStarPatch = char.IsLower(secondLastChar);
}
else
{
// lower case = Meade, upper case = StarPatch
isStarPatch = char.IsUpper(lastChr);
}
}
}
@@ -765,7 +769,8 @@ namespace ASCOM.Meade.net
private bool IsLongFormatSupported()
{
if (SharedResourcesWrapper.ProductName == TelescopeList.LX200CLASSIC)
if ((SharedResourcesWrapper.ProductName == TelescopeList.LX200CLASSIC) ||
(SharedResourcesWrapper.ProductName == TelescopeList.LXD600))
{
return false;
}
@@ -1532,7 +1537,8 @@ namespace ASCOM.Meade.net
{
try
{
var canPark = SharedResourcesWrapper.ProductName != TelescopeList.LX200CLASSIC;
var canPark = ((SharedResourcesWrapper.ProductName != TelescopeList.LX200CLASSIC) &&
(SharedResourcesWrapper.ProductName != TelescopeList.LXD600));
LogMessage("CanPark", "Get - " + canPark);
return canPark;
}
@@ -1810,7 +1816,8 @@ namespace ASCOM.Meade.net
TelescopeList.LX200GPS,
TelescopeList.RCX400,
TelescopeList.LX200CLASSIC,
TelescopeList.LX800
TelescopeList.LX800,
TelescopeList.LXD600
};
return unParkableScopes.Contains(SharedResourcesWrapper.ProductName);
@@ -2294,7 +2301,8 @@ namespace ASCOM.Meade.net
var isTracking = Tracking;
if (SharedResourcesWrapper.ProductName != TelescopeList.LX200CLASSIC)
if ((SharedResourcesWrapper.ProductName != TelescopeList.LX200CLASSIC) &&
(SharedResourcesWrapper.ProductName != TelescopeList.LXD600))
{
SharedResourcesWrapper.SendBlind(Tl, "hP");
//:hP# Autostar, Autostar II and LX 16" Slew to Park Position
@@ -2302,7 +2310,7 @@ namespace ASCOM.Meade.net
}
else
{
LogMessage("Park", $"LX200 Classic does not support parking");
LogMessage("Park", $"LX200 Classic or LXD600 do not support parking");
throw new NotImplementedException("Park");
}
@@ -2953,7 +2961,7 @@ namespace ASCOM.Meade.net
LogMessage("TargetAltitude Set", $"{command}");
var response = SharedResourcesWrapper.SendBool(Tl, command);
//:SasDD*MM#
// Set target object altitude to sDD*MM# or sDD*MMSS# [LX 16, Autostar, Autostar II]
// Set target object altitude to sDD*MM# or sDD*MMSS# [LX 16, Autostar, Autostar II]
// Returns:
// 1 Object within slew range
// 0 Object out of slew range
@@ -2990,9 +2998,9 @@ namespace ASCOM.Meade.net
LogMessage("TargetAzimuth Set", $"{command}");
var response = SharedResourcesWrapper.SendBool(Tl, command);
//:SzDDD*MM#
// Sets the target Object Azimuth[LX 16 and Autostar II only]
// Sets the target Object Azimuth[LX 16 and Autostar II only]
// Returns:
// 0 Invalid
// 0 Invalid
// 1 - Valid
if (!response)
throw new InvalidOperationException("Target Azimuth out of slew range.");