using ClumsyCore;
using ClumsyCore.Interfaces;
using ClumsyCore.Pilot;
using FundamentalLib;
using MDCSToolBox.Clumsy.Pilot.MultiWheel;
namespace MultiWheelC;

public class PilotDefinition : MultiWheelPilotDefinition<PilotConfig, PilotDefinition>
{
    public new float CarLength = 1472f;
    public new float CarWidth = 948f;
    [AsLowerIO(desc = "车号")] public int CarNum = 1;
    public override void StandardInit() { }

    #region 夹臂变量
    [AsUpperIO(desc = "左夹臂下发速度")] public float SpeedLeftArm;

    [AsUpperIO(desc = "右夹臂下发速度")] public float SpeedRightArm;

    [AsLowerIO(desc = "左夹臂实际位置")] public float ActualPosLeftArm;

    [AsLowerIO(desc = "右夹臂实际位置")] public float ActualPosRightArm;

    [AsUpperIO(desc = "夹臂不同步报警")] public bool ClampOutOfSync = false;
    #endregion

    [AsLowerIO(desc = "左前左轮实际位置")] public float LFLActualPos;
    [AsLowerIO(desc = "左前右轮实际位置")] public float LFRActualPos;
    [AsLowerIO(desc = "右前左轮实际位置")] public float RFLActualPos;
    [AsLowerIO(desc = "右前右轮实际位置")] public float RFRActualPos;
    [AsLowerIO(desc = "左后左轮实际位置")] public float LRLActualPos;
    [AsLowerIO(desc = "左后右轮实际位置")] public float LRRActualPos;
    [AsLowerIO(desc = "右后左轮实际位置")] public float RRLActualPos;
    [AsLowerIO(desc = "右后右轮实际位置")] public float RRRActualPos;

    [AsLowerIO(desc = "左夹臂低限位")] public int LeftArmLowerPos;
    [AsLowerIO(desc = "左夹臂高限位")] public int LeftArmUpperPos;
    [AsLowerIO(desc = "右夹臂低限位")] public int RightArmLowerPos;
    [AsLowerIO(desc = "右夹臂高限位")] public int RightArmUpperPos;

    [AsUpperIO(desc = "从C往驱动器下使能")] public bool DisableFromC = false;
    [AsUpperIO(desc = "从C上复位")] public bool ResetFromC = false;
    [AsLowerIO(desc = "驱动轮使能状态")] public bool WheelAbleState = true;
}
