namespace RioJoy.Core.Calibration;

/// <summary>
/// One live calibration sample for gauge displays: the six virtual-joystick axis
/// outputs plus the calibrated pedal positions. The pedals are surfaced
/// separately because the ZR mix (<see cref="AxisCalibrationConfig.EnableZR"/>)
/// folds them into Rz and pins Rx/Ry to center — a pedal gauge fed from the axes
/// alone would freeze while the physical pedals move.
/// </summary>
public readonly struct AxisReadout
{
    /// <summary>The six virtual-joystick outputs (what the HID device receives).</summary>
    public AxisOutputs Axes { get; }

    /// <summary>Calibrated left-pedal position (<c>0..32766</c>), before the ZR mix.</summary>
    public int LeftPedal { get; }

    /// <summary>Calibrated right-pedal position (<c>0..32766</c>), before the ZR mix.</summary>
    public int RightPedal { get; }

    public AxisReadout(AxisOutputs axes, int leftPedal, int rightPedal)
    {
        Axes = axes;
        LeftPedal = leftPedal;
        RightPedal = rightPedal;
    }
}
