namespace MultiWheelC.TrajectoryPlanning.EMPlanner;

/// <summary>轨迹执行器的换向安全状态；所有离开 Following 的状态都禁止非零运动，直到方向已确认。</summary>
public enum GearSwitchState
{
    /// <summary>正常跟随当前方向段的轨迹运动。</summary>
    Following,
    /// <summary>目标方向不同，正在接近精确换向边界。</summary>
    ApproachingGearSwitch,
    /// <summary>位于换向边界并保持零速度，等待满足停稳 dwell。</summary>
    HoldingZero,
    /// <summary>零速 dwell 已满足；本次更新发送一次方向变更请求。</summary>
    RequestingDirectionChange,
    /// <summary>请求已发出，保持制动直到调用方确认实际方向改变。</summary>
    AwaitingDirectionConfirmation,
    /// <summary>到达 Goal 或 RollingSafetyStop，永久保持零运动。</summary>
    Completed,
}
