Upgraded the align mode command to have a retry and added support for land mode.

This commit is contained in:
2022-05-07 18:09:37 +01:00
parent a204f9c57f
commit 8eb093c13a
+37 -6
View File
@@ -979,10 +979,13 @@ namespace ASCOM.Meade.net
if (IsGwCommandSupported()) if (IsGwCommandSupported())
{ {
var alignmentStatus = GetScopeAlignmentStatus(); var alignmentStatus = GetScopeAlignmentStatus();
LogMessage("AlignmentMode Get", $"alignmode = {alignmentStatus.AlignmentMode}");
return alignmentStatus.AlignmentMode; return alignmentStatus.AlignmentMode;
} }
else
return Retry(6, () =>
{ {
LogMessage("AlignmentMode Get", $"Sending Ack code.");
const char ack = (char)6; const char ack = (char)6;
//ACK <0x06> Query of alignment mounting mode. //ACK <0x06> Query of alignment mounting mode.
//Returns: //Returns:
@@ -995,22 +998,29 @@ namespace ASCOM.Meade.net
switch (alignmentString) switch (alignmentString)
{ {
case "A": case "A":
LogMessage("AlignmentMode Get", $"Telescope is in AltAz");
alignmentMode = AlignmentModes.algAltAz; alignmentMode = AlignmentModes.algAltAz;
break; break;
case "P": case "P":
LogMessage("AlignmentMode Get", $"Telescope is in Polar");
alignmentMode = AlignmentModes.algPolar; alignmentMode = AlignmentModes.algPolar;
break; break;
case "L":
LogMessage("AlignmentMode Get", $"Telescope is in Land mode");
alignmentMode = AlignmentModes.algAltAz;
break;
//case "G": //case "G":
//alignmentMode = AlignmentModes.algGermanPolar; //alignmentMode = AlignmentModes.algGermanPolar;
//break; //break;
default: default:
throw new InvalidValueException( var msg = $"unknown alignment returned from telescope: {alignmentString}";
$"unknown alignment returned from telescope: {alignmentString}"); LogMessage("AlignmentMode Get", msg);
throw new InvalidValueException(msg);
} }
LogMessage("AlignmentMode Get", $"alignmode = {alignmentMode}"); LogMessage("AlignmentMode Get", $"alignmode = {alignmentMode}");
return alignmentMode; return alignmentMode;
} });
} }
set set
{ {
@@ -2422,6 +2432,27 @@ namespace ASCOM.Meade.net
} }
} }
private T Retry<T>(int i, Func<T> func)
{
while (true)
{
try
{
return func();
}
catch (Exception e)
{
LogMessage("Retry", $"Attempt failed {i} attempts remaining error: {e.Message}");
if (i > 0)
{
i--;
}
else
throw;
}
}
}
public void SlewToCoordinates(double rightAscension, double declination) public void SlewToCoordinates(double rightAscension, double declination)
{ {
LogMessage("SlewToCoordinates", $"Ra={rightAscension}, Dec={declination}"); LogMessage("SlewToCoordinates", $"Ra={rightAscension}, Dec={declination}");