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 edu.wpi.first.wpilibj.simulation;
006
007import edu.wpi.first.hal.SimDouble;
008import edu.wpi.first.wpilibj.ADXRS450_Gyro;
009
010/** Class to control a simulated ADXRS450 gyroscope. */
011@SuppressWarnings({"TypeName", "AbbreviationAsWordInName"})
012public class ADXRS450_GyroSim {
013  private final SimDouble m_simAngle;
014  private final SimDouble m_simRate;
015
016  /**
017   * Constructs from an ADXRS450_Gyro object.
018   *
019   * @param gyro ADXRS450_Gyro to simulate
020   */
021  public ADXRS450_GyroSim(ADXRS450_Gyro gyro) {
022    SimDeviceSim wrappedSimDevice = new SimDeviceSim("Gyro:ADXRS450" + "[" + gyro.getPort() + "]");
023    m_simAngle = wrappedSimDevice.getDouble("angle_x");
024    m_simRate = wrappedSimDevice.getDouble("rate_x");
025  }
026
027  /**
028   * Sets the angle in degrees (clockwise positive).
029   *
030   * @param angleDegrees The angle.
031   */
032  public void setAngle(double angleDegrees) {
033    m_simAngle.set(angleDegrees);
034  }
035
036  /**
037   * Sets the angular rate in degrees per second (clockwise positive).
038   *
039   * @param rateDegreesPerSecond The angular rate.
040   */
041  public void setRate(double rateDegreesPerSecond) {
042    m_simRate.set(rateDegreesPerSecond);
043  }
044}