Upgraded the align mode command to have a retry and added support for land mode.
This commit is contained in:
@@ -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}");
|
||||||
|
|||||||
Reference in New Issue
Block a user