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.units;
006
007/**
008 * Unit of electic current dimension.
009 *
010 * <p>This is the base type for units of current dimension. It is also used to specify the dimension
011 * for {@link Measure}: <code>Measure&lt;Current&gt;</code>.
012 *
013 * <p>Actual units (such as {@link Units#Amps} and {@link Units#Milliamps}) can be found in the
014 * {@link Units} class.
015 */
016public class Current extends Unit<Current> {
017  Current(double baseUnitEquivalent, String name, String symbol) {
018    super(Current.class, baseUnitEquivalent, name, symbol);
019  }
020
021  Current(
022      UnaryFunction toBaseConverter, UnaryFunction fromBaseConverter, String name, String symbol) {
023    super(Current.class, toBaseConverter, fromBaseConverter, name, symbol);
024  }
025
026  /**
027   * Constructs a unit of power equivalent to this unit of electrical current multiplied by another
028   * unit of voltage. For example, {@code Amps.times(Volts)} will return a unit of power equivalent
029   * to one Watt; {@code Amps.times(Millivolts)} will return a unit of power equivalent to a
030   * milliwatt, and so on.
031   *
032   * @param voltage the voltage unit to multiply by
033   * @param name the name of the resulting unit of power
034   * @param symbol the symbol used to represent the unit of power
035   * @return the power unit
036   */
037  public Power times(Unit<Voltage> voltage, String name, String symbol) {
038    return new Power(this.toBaseUnits(1) * voltage.toBaseUnits(1), name, symbol);
039  }
040}