001// Copyright (c) FIRST and other WPILib contributors.
002// Open Source Software; you can modify and/or share it under the terms of
003// the WPILib BSD license file in the root directory of this project.
004
005package org.wpilib.math.kinematics.proto;
006
007import org.wpilib.math.geometry.Rotation2d;
008import org.wpilib.math.kinematics.SwerveModuleAcceleration;
009import org.wpilib.math.proto.ProtobufSwerveModuleAcceleration;
010import org.wpilib.util.protobuf.Protobuf;
011import us.hebi.quickbuf.Descriptors.Descriptor;
012
013public class SwerveModuleAccelerationProto
014    implements Protobuf<SwerveModuleAcceleration, ProtobufSwerveModuleAcceleration> {
015  @Override
016  public Class<SwerveModuleAcceleration> getTypeClass() {
017    return SwerveModuleAcceleration.class;
018  }
019
020  @Override
021  public Descriptor getDescriptor() {
022    return ProtobufSwerveModuleAcceleration.getDescriptor();
023  }
024
025  @Override
026  public ProtobufSwerveModuleAcceleration createMessage() {
027    return ProtobufSwerveModuleAcceleration.newInstance();
028  }
029
030  @Override
031  public SwerveModuleAcceleration unpack(ProtobufSwerveModuleAcceleration msg) {
032    return new SwerveModuleAcceleration(
033        msg.getAcceleration(), Rotation2d.proto.unpack(msg.getAngle()));
034  }
035
036  @Override
037  public void pack(ProtobufSwerveModuleAcceleration msg, SwerveModuleAcceleration value) {
038    msg.setAcceleration(value.acceleration);
039    Rotation2d.proto.pack(msg.getMutableAngle(), value.angle);
040  }
041}