public class AxisInfo : INamed<string>
{
private const int DriveTypeBlockNumber = 0;
private const int FirmwareBlockNumber = 6;
private readonly int axisNumber;
private ComponentType? axisType;
private int? servoRate;
private float? maximumAmperage;
private float? maximumVoltage;
private CommandOutputType? commandOutputType;
private readonly Controller controller;
private MotionDriveInformation containingDrive;
private Version firmwareVersion;
private int fpgaVersion;
private FlashConfigStatus flashConfigStatus;
public int Number => axisNumber;
public ComponentType AxisType
{
get
{
if (!axisType.HasValue)
{
int pdwOne_ = 0;
int pdwTwo_ = 0;
int pdwThree_ = 0;
int pdwFour_ = 0;
ExceptionResolver.ResolveThrow(controller, Wrapper.AerStatusGetDriveInfoBlockEx(controller.Handle.Value, 0, axisNumber, ref pdwOne_, ref pdwTwo_, ref pdwThree_, ref pdwFour_));
if (!Global.CoreDriveIdMappings.TryGetValue((Drive)pdwFour_, out var value))
{
value = ComponentType.Unknown;
}
axisType = value;
}
return axisType.Value;
}
}
public int ServoRate
{
get
{
if (!servoRate.HasValue)
{
int pdwServoRate_ = 0;
ExceptionResolver.ResolveThrow(controller, Wrapper.AerStatusGetAxisServoRate(controller.Handle.Value, axisNumber, ref pdwServoRate_));
servoRate = pdwServoRate_;
}
return servoRate.Value;
}
}
public float MaximumAmperage
{
get
{
if (!maximumAmperage.HasValue)