001/************************ PROJECT ZIXI ************************/
002/* Copyright (c) 2026 StuyPulse Robotics. All rights reserved.*/
003/* This work is licensed under the terms of the MIT license.  */
004/**************************************************************/
005package com.stuypulse.robot.subsystems.swerve;
006
007import static org.wpilib.units.Units.Radians;
008import static org.wpilib.units.Units.RadiansPerSecond;
009
010import org.wpilib.math.geometry.Rotation2d;
011import org.wpilib.units.measure.Angle;
012import org.wpilib.units.measure.AngularVelocity;
013
014import org.littletonrobotics.junction.AutoLog;
015
016public interface GyroIO {
017    @AutoLog
018    public static class GyroIOInputs {
019        public boolean connected = false;
020        public Angle yawPosition = Radians.zero();
021        public AngularVelocity yawVelocityRadPerSec = RadiansPerSecond.zero();
022        public double[] odometryYawTimestamps = new double[] {}; // double is better for timestamps
023        public Rotation2d[] odometryYawPositions = new Rotation2d[] {};
024        // rotation2d expected by swerve & other downstreams, would require too much allocation to
025        // be worth it
026    }
027
028    public default void updateInputs(GyroIOInputs inputs) {}
029}