diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/AnalogPotentiometer.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/AnalogPotentiometer.java index 5e896623a8..26076c514c 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/AnalogPotentiometer.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/AnalogPotentiometer.java @@ -20,25 +20,12 @@ import edu.wpi.first.wpilibj.tables.ITable; * @author Colby Skeggs (rail voltage) */ public class AnalogPotentiometer implements Potentiometer, LiveWindowSendable { - private double m_fullRange; - private double m_offset; private AnalogInput m_analogInput; private boolean m_initAnalogInput; + private double m_fullRange; + private double m_offset; protected PIDSourceType m_pidSource = PIDSourceType.kDisplacement; - /** - * Common initialization code called by all constructors. - * - * @param input The {@link AnalogInput} this potentiometer is plugged into. - * @param fullRange The scaling to multiply the voltage by to get a meaningful unit. - * @param offset The offset to add to the scaled value for controlling the zero value - */ - private void initPot(final AnalogInput input, double fullRange, double offset) { - m_fullRange = fullRange; - m_offset = offset; - m_analogInput = input; - } - /** * AnalogPotentiometer constructor. * @@ -53,9 +40,8 @@ public class AnalogPotentiometer implements Potentiometer, LiveWindowSendable { * @param offset The offset to add to the scaled value for controlling the zero value */ public AnalogPotentiometer(final int channel, double fullRange, double offset) { - AnalogInput input = new AnalogInput(channel); + this(new AnalogInput(channel), fullRange, offset); m_initAnalogInput = true; - initPot(input, fullRange, offset); } /** @@ -72,8 +58,11 @@ public class AnalogPotentiometer implements Potentiometer, LiveWindowSendable { * @param offset The offset to add to the scaled value for controlling the zero value */ public AnalogPotentiometer(final AnalogInput input, double fullRange, double offset) { + m_analogInput = input; m_initAnalogInput = false; - initPot(input, fullRange, offset); + + m_fullRange = fullRange; + m_offset = offset; } /** diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/AnalogTrigger.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/AnalogTrigger.java index 14da664b0d..087f521161 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/AnalogTrigger.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/AnalogTrigger.java @@ -16,6 +16,8 @@ import edu.wpi.first.wpilibj.communication.UsageReporting; import edu.wpi.first.wpilibj.hal.AnalogJNI; import edu.wpi.first.wpilibj.util.BoundaryException; +import static java.util.Objects.requireNonNull; + /** * Class for creating and configuring Analog Triggers. * @@ -46,11 +48,11 @@ public class AnalogTrigger { protected int m_index; /** - * Initialize an analog trigger from a channel. + * Constructor for an analog trigger given a channel number. * * @param channel the port to use for the analog trigger */ - protected void initTrigger(final int channel) { + public AnalogTrigger(final int channel) { final long portPointer = AnalogJNI.getPort((byte) channel); ByteBuffer index = ByteBuffer.allocateDirect(4); index.order(ByteOrder.LITTLE_ENDIAN); @@ -62,16 +64,6 @@ public class AnalogTrigger { UsageReporting.report(tResourceType.kResourceType_AnalogTrigger, channel); } - /** - * Constructor for an analog trigger given a channel number. - * - * @param channel the port to use for the analog trigger 0-3 are on-board, 4-7 are on the MXP - * port - */ - public AnalogTrigger(final int channel) { - initTrigger(channel); - } - /** * Construct an analog trigger given an analog channel. This should be used in the case of sharing * an analog channel between the trigger and an analog input object. @@ -79,10 +71,7 @@ public class AnalogTrigger { * @param channel the AnalogInput to use for the analog trigger */ public AnalogTrigger(AnalogInput channel) { - if (channel == null) { - throw new NullPointerException("The Analog Input given was null"); - } - initTrigger(channel.getChannel()); + this(requireNonNull(channel, "The Analog Input given was null").getChannel()); } /** diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Compressor.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Compressor.java index d3099a52c2..1c1c966144 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Compressor.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Compressor.java @@ -24,15 +24,17 @@ public class Compressor extends SensorBase implements LiveWindowSendable { private long m_pcm; /** - * Create an instance of the Compressor. + * Constructor. * *
Most robots that use PCM will have a single module. Use this for supporting a second module * other than the default. * - * @param pcmId The PCM CAN device ID. + * @param module The PCM CAN device ID. */ - public Compressor(int pcmId) { - initCompressor(pcmId); + public Compressor(int module) { + m_table = null; + + m_pcm = CompressorJNI.initializeCompressor((byte) module); } /** @@ -41,13 +43,7 @@ public class Compressor extends SensorBase implements LiveWindowSendable { * ID. */ public Compressor() { - initCompressor(getDefaultSolenoidModule()); - } - - private void initCompressor(int module) { - m_table = null; - - m_pcm = CompressorJNI.initializeCompressor((byte) module); + this(getDefaultSolenoidModule()); } /** diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Counter.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Counter.java index fe8e46bab2..062a0c3a38 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Counter.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Counter.java @@ -70,7 +70,10 @@ public class Counter extends SensorBase implements CounterBase, LiveWindowSendab private PIDSourceType m_pidSource; private double m_distancePerPulse; // distance of travel for each tick - private void initCounter(final Mode mode) { + /** + * Create an instance of a counter with the given mode. + */ + public Counter(final Mode mode) { ByteBuffer index = ByteBuffer.allocateDirect(4); // set the byte order index.order(ByteOrder.LITTLE_ENDIAN); @@ -94,7 +97,7 @@ public class Counter extends SensorBase implements CounterBase, LiveWindowSendab *
The counter will start counting immediately. */ public Counter() { - initCounter(Mode.kTwoPulse); + this(Mode.kTwoPulse); } /** @@ -107,10 +110,10 @@ public class Counter extends SensorBase implements CounterBase, LiveWindowSendab * @param source the digital source to count */ public Counter(DigitalSource source) { + this(); if (source == null) { throw new NullPointerException("Digital Source given was null"); } - initCounter(Mode.kTwoPulse); setUpSource(source); } @@ -122,7 +125,7 @@ public class Counter extends SensorBase implements CounterBase, LiveWindowSendab * @param channel the DIO channel to use as the up source. 0-9 are on-board, 10-25 are on the MXP */ public Counter(int channel) { - initCounter(Mode.kTwoPulse); + this(); setUpSource(channel); } @@ -139,11 +142,10 @@ public class Counter extends SensorBase implements CounterBase, LiveWindowSendab */ public Counter(EncodingType encodingType, DigitalSource upSource, DigitalSource downSource, boolean inverted) { - initCounter(Mode.kExternalDirection); + this(Mode.kExternalDirection); if (encodingType == null) { throw new NullPointerException("Encoding type given was null"); } - if (encodingType != EncodingType.k1X && encodingType != EncodingType.k2X) { throw new RuntimeException("Counters only support 1X and 2X quadreature decoding!"); } @@ -176,10 +178,10 @@ public class Counter extends SensorBase implements CounterBase, LiveWindowSendab * @param trigger the analog trigger to count */ public Counter(AnalogTrigger trigger) { + this(); if (trigger == null) { throw new NullPointerException("The Analog Trigger given was null"); } - initCounter(Mode.kTwoPulse); setUpSource(trigger.createOutput(AnalogTriggerType.kState)); } diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/DoubleSolenoid.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/DoubleSolenoid.java index b91a889457..d008387892 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/DoubleSolenoid.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/DoubleSolenoid.java @@ -39,9 +39,28 @@ public class DoubleSolenoid extends SolenoidBase implements LiveWindowSendable { private byte m_reverseMask; // /< The mask for the reverse channel. /** - * Common function to implement constructor behavior. + * Constructor. Uses the default PCM ID of 0. + * + * @param forwardChannel The forward channel number on the PCM (0..7). + * @param reverseChannel The reverse channel number on the PCM (0..7). */ - private synchronized void initSolenoid() { + public DoubleSolenoid(final int forwardChannel, final int reverseChannel) { + this(getDefaultSolenoidModule(), forwardChannel, reverseChannel); + } + + /** + * Constructor. + * + * @param moduleNumber The module number of the solenoid module to use. + * @param forwardChannel The forward channel on the module to control (0..7). + * @param reverseChannel The reverse channel on the module to control (0..7). + */ + public DoubleSolenoid(final int moduleNumber, final int forwardChannel, + final int reverseChannel) { + super(moduleNumber); + m_forwardChannel = forwardChannel; + m_reverseChannel = reverseChannel; + checkSolenoidModule(m_moduleNumber); checkSolenoidChannel(m_forwardChannel); checkSolenoidChannel(m_reverseChannel); @@ -66,34 +85,6 @@ public class DoubleSolenoid extends SolenoidBase implements LiveWindowSendable { LiveWindow.addActuator("DoubleSolenoid", m_moduleNumber, m_forwardChannel, this); } - /** - * Constructor. Uses the default PCM ID of 0. - * - * @param forwardChannel The forward channel number on the PCM (0..7). - * @param reverseChannel The reverse channel number on the PCM (0..7). - */ - public DoubleSolenoid(final int forwardChannel, final int reverseChannel) { - super(getDefaultSolenoidModule()); - m_forwardChannel = forwardChannel; - m_reverseChannel = reverseChannel; - initSolenoid(); - } - - /** - * Constructor. - * - * @param moduleNumber The module number of the solenoid module to use. - * @param forwardChannel The forward channel on the module to control (0..7). - * @param reverseChannel The reverse channel on the module to control (0..7). - */ - public DoubleSolenoid(final int moduleNumber, final int forwardChannel, - final int reverseChannel) { - super(moduleNumber); - m_forwardChannel = forwardChannel; - m_reverseChannel = reverseChannel; - initSolenoid(); - } - /** * Destructor. */ diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Jaguar.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Jaguar.java index 0dabd45559..3c8021b6d5 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Jaguar.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Jaguar.java @@ -19,9 +19,14 @@ import edu.wpi.first.wpilibj.livewindow.LiveWindow; public class Jaguar extends PWMSpeedController { /** - * Common initialization code called by all constructors. + * Constructor. + * + * @param channel The PWM channel that the Jaguar is attached to. 0-9 are on-board, 10-19 are on + * the MXP port */ - private void initJaguar() { + public Jaguar(final int channel) { + super(channel); + /* * Input profile defined by Luminary Micro. * @@ -38,15 +43,4 @@ public class Jaguar extends PWMSpeedController { UsageReporting.report(tResourceType.kResourceType_Jaguar, getChannel()); LiveWindow.addActuator("Jaguar", getChannel(), this); } - - /** - * Constructor. - * - * @param channel The PWM channel that the Jaguar is attached to. 0-9 are on-board, 10-19 are on - * the MXP port - */ - public Jaguar(final int channel) { - super(channel); - initJaguar(); - } } diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/PWM.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/PWM.java index 88dc2abcd3..729741e816 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/PWM.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/PWM.java @@ -98,15 +98,11 @@ public class PWM extends SensorBase implements LiveWindowSendable { private int m_minPwm; /** - * Initialize PWMs given a channel. - * - *
This method is private and is the common path for all the constructors for creating PWM - * instances. Checks channel value ranges and allocates the appropriate channel. The allocation is - * only done to help users ensure that they don't double assign channels. + * Allocate a PWM given a channel. * * @param channel The PWM channel number. 0-9 are on-board, 10-19 are on the MXP port */ - private void initPWM(final int channel) { + public PWM(final int channel) { checkPWMChannel(channel); m_channel = channel; @@ -123,15 +119,6 @@ public class PWM extends SensorBase implements LiveWindowSendable { UsageReporting.report(tResourceType.kResourceType_PWM, channel); } - /** - * Allocate a PWM given a channel. - * - * @param channel The PWM channel. - */ - public PWM(final int channel) { - initPWM(channel); - } - /** * Free the PWM channel. * diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/SafePWM.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/SafePWM.java index 5d51acf892..d334e0b5a2 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/SafePWM.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/SafePWM.java @@ -24,6 +24,7 @@ public class SafePWM extends PWM implements MotorSafety { */ public SafePWM(final int channel) { super(channel); + m_safetyHelper = new MotorSafetyHelper(this); m_safetyHelper.setExpiration(0.0); m_safetyHelper.setSafetyEnabled(false); diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Servo.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Servo.java index 6d2c0982f1..b7049fbec9 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Servo.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Servo.java @@ -27,20 +27,6 @@ public class Servo extends PWM { protected static final double kDefaultMaxServoPWM = 2.4; protected static final double kDefaultMinServoPWM = .6; - /** - * Common initialization code called by all constructors. - * - *
InitServo() assigns defaults for the period multiplier for the servo PWM control signal, as
- * well as the minimum and maximum PWM values supported by the servo.
- */
- private void initServo() {
- setBounds(kDefaultMaxServoPWM, 0, 0, 0, kDefaultMinServoPWM);
- setPeriodMultiplier(PeriodMultiplier.k4X);
-
- LiveWindow.addActuator("Servo", getChannel(), this);
- UsageReporting.report(tResourceType.kResourceType_Servo, getChannel());
- }
-
/**
* Constructor.
*
@@ -52,7 +38,11 @@ public class Servo extends PWM {
*/
public Servo(final int channel) {
super(channel);
- initServo();
+ setBounds(kDefaultMaxServoPWM, 0, 0, 0, kDefaultMinServoPWM);
+ setPeriodMultiplier(PeriodMultiplier.k4X);
+
+ LiveWindow.addActuator("Servo", getChannel(), this);
+ UsageReporting.report(tResourceType.kResourceType_Servo, getChannel());
}
diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Solenoid.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Solenoid.java
index 1f35951a4c..e89fb70d43 100644
--- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Solenoid.java
+++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Solenoid.java
@@ -28,36 +28,13 @@ public class Solenoid extends SolenoidBase implements LiveWindowSendable {
private final int m_channel; // /< The channel to control.
private long m_solenoidPort;
- /**
- * Common function to implement constructor behavior.
- */
- private synchronized void initSolenoid() {
- checkSolenoidModule(m_moduleNumber);
- checkSolenoidChannel(m_channel);
-
- try {
- allocated.allocate(m_moduleNumber * kSolenoidChannels + m_channel);
- } catch (CheckedAllocationException ex) {
- throw new AllocationException("Solenoid channel " + m_channel + " on module "
- + m_moduleNumber + " is already allocated");
- }
-
- long port = SolenoidJNI.getPortWithModule((byte) m_moduleNumber, (byte) m_channel);
- m_solenoidPort = SolenoidJNI.initializeSolenoidPort(port);
-
- LiveWindow.addActuator("Solenoid", m_moduleNumber, m_channel, this);
- UsageReporting.report(tResourceType.kResourceType_Solenoid, m_channel, m_moduleNumber);
- }
-
/**
* Constructor using the default PCM ID (0)
*
* @param channel The channel on the PCM to control (0..7).
*/
public Solenoid(final int channel) {
- super(getDefaultSolenoidModule());
- m_channel = channel;
- initSolenoid();
+ this(getDefaultSolenoidModule(), channel);
}
/**
@@ -69,7 +46,22 @@ public class Solenoid extends SolenoidBase implements LiveWindowSendable {
public Solenoid(final int moduleNumber, final int channel) {
super(moduleNumber);
m_channel = channel;
- initSolenoid();
+
+ checkSolenoidModule(m_moduleNumber);
+ checkSolenoidChannel(m_channel);
+
+ try {
+ allocated.allocate(m_moduleNumber * kSolenoidChannels + m_channel);
+ } catch (CheckedAllocationException ex) {
+ throw new AllocationException("Solenoid channel " + m_channel + " on module "
+ + m_moduleNumber + " is already allocated");
+ }
+
+ long port = SolenoidJNI.getPortWithModule((byte) m_moduleNumber, (byte) m_channel);
+ m_solenoidPort = SolenoidJNI.initializeSolenoidPort(port);
+
+ LiveWindow.addActuator("Solenoid", m_moduleNumber, m_channel, this);
+ UsageReporting.report(tResourceType.kResourceType_Solenoid, m_channel, m_moduleNumber);
}
/**
diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Talon.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Talon.java
index 70a78c9ecc..8b2b49cde7 100644
--- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Talon.java
+++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Talon.java
@@ -17,7 +17,7 @@ import edu.wpi.first.wpilibj.livewindow.LiveWindow;
public class Talon extends PWMSpeedController {
/**
- * Common initialization code called by all constructors.
+ * Constructor for a Talon (original or Talon SR).
*
*
Note that the Talon uses the following bounds for PWM values. These values should work * reasonably well for most controllers, but if users experience issues such as asymmetric @@ -28,8 +28,13 @@ public class Talon extends PWMSpeedController { *
- 2.037ms = full "forward" - 1.539ms = the "high end" of the deadband range - 1.513ms = * center of the deadband range (off) - 1.487ms = the "low end" of the deadband range - .989ms * = full "reverse" + * + * @param channel The PWM channel that the Talon is attached to. 0-9 are on-board, 10-19 are on + * the MXP port */ - private void initTalon() { + public Talon(final int channel) { + super(channel); + setBounds(2.037, 1.539, 1.513, 1.487, .989); setPeriodMultiplier(PeriodMultiplier.k1X); setRaw(m_centerPwm); @@ -38,15 +43,4 @@ public class Talon extends PWMSpeedController { LiveWindow.addActuator("Talon", getChannel(), this); UsageReporting.report(tResourceType.kResourceType_Talon, getChannel()); } - - /** - * Constructor for a Talon (original or Talon SR). - * - * @param channel The PWM channel that the Talon is attached to. 0-9 are on-board, 10-19 are on - * the MXP port - */ - public Talon(final int channel) { - super(channel); - initTalon(); - } } diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/TalonSRX.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/TalonSRX.java index c89fdb894c..2b66c7e6ea 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/TalonSRX.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/TalonSRX.java @@ -19,7 +19,7 @@ import edu.wpi.first.wpilibj.livewindow.LiveWindow; public class TalonSRX extends PWMSpeedController { /** - * Common initialization code called by all constructors. + * Constructor for a TalonSRX connected via PWM. * *
Note that the TalonSRX uses the following bounds for PWM values. These values should work * reasonably well for most controllers, but if users experience issues such as asymmetric @@ -31,8 +31,13 @@ public class TalonSRX extends PWMSpeedController { * center * of the deadband range (off) - 1.48ms = the "low end" of the deadband range - .997ms = full * "reverse" + * + * @param channel The PWM channel that the TalonSRX is attached to. 0-9 are on-board, 10-19 are + * on the MXP port */ - protected void initTalonSRX() { + public TalonSRX(final int channel) { + super(channel); + setBounds(2.004, 1.52, 1.50, 1.48, .997); setPeriodMultiplier(PeriodMultiplier.k1X); setRaw(m_centerPwm); @@ -41,15 +46,4 @@ public class TalonSRX extends PWMSpeedController { LiveWindow.addActuator("TalonSRX", getChannel(), this); UsageReporting.report(tResourceType.kResourceType_TalonSRX, getChannel()); } - - /** - * Constructor for a TalonSRX connected via PWM. - * - * @param channel The PWM channel that the TalonSRX is attached to. 0-9 are on-board, 10-19 are on - * the MXP port - */ - public TalonSRX(final int channel) { - super(channel); - initTalonSRX(); - } } diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Victor.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Victor.java index a66f213e1d..31cb12b699 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Victor.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Victor.java @@ -18,7 +18,7 @@ import edu.wpi.first.wpilibj.livewindow.LiveWindow; public class Victor extends PWMSpeedController { /** - * Common initialization code called by all constructors. + * Constructor. * *
Note that the Victor uses the following bounds for PWM values. These values were determined * empirically and optimized for the Victor 888. These values should work reasonably well for @@ -30,8 +30,13 @@ public class Victor extends PWMSpeedController { *
- 2.027ms = full "forward" - 1.525ms = the "high end" of the deadband range - 1.507ms = * center of the deadband range (off) - 1.49ms = the "low end" of the deadband range - 1.026ms = * full "reverse" + * + * @param channel The PWM channel that the Victor is attached to. 0-9 are + * on-board, 10-19 are on the MXP port */ - private void initVictor() { + public Victor(final int channel) { + super(channel); + setBounds(2.027, 1.525, 1.507, 1.49, 1.026); setPeriodMultiplier(PeriodMultiplier.k2X); setRaw(m_centerPwm); @@ -40,15 +45,4 @@ public class Victor extends PWMSpeedController { LiveWindow.addActuator("Victor", getChannel(), this); UsageReporting.report(tResourceType.kResourceType_Victor, getChannel()); } - - /** - * Constructor. - * - * @param channel The PWM channel that the Victor is attached to. 0-9 are on-board, 10-19 are on - * the MXP port - */ - public Victor(final int channel) { - super(channel); - initVictor(); - } } diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/VictorSP.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/VictorSP.java index d2f888cab0..1a457be3b3 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/VictorSP.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/VictorSP.java @@ -17,7 +17,7 @@ import edu.wpi.first.wpilibj.livewindow.LiveWindow; public class VictorSP extends PWMSpeedController { /** - * Common initialization code called by all constructors. + * Constructor. * *
Note that the VictorSP uses the following bounds for PWM values. These values should work * reasonably well for most controllers, but if users experience issues such as asymmetric @@ -28,8 +28,13 @@ public class VictorSP extends PWMSpeedController { *
- 2.004ms = full "forward" - 1.52ms = the "high end" of the deadband range - 1.50ms = * center of the deadband range (off) - 1.48ms = the "low end" of the deadband range - .997ms = * full "reverse" + * + * @param channel The PWM channel that the VictorSP is attached to. 0-9 are + * on-board, 10-19 are on the MXP port */ - protected void initVictorSP() { + public VictorSP(final int channel) { + super(channel); + setBounds(2.004, 1.52, 1.50, 1.48, .997); setPeriodMultiplier(PeriodMultiplier.k1X); setRaw(m_centerPwm); @@ -38,15 +43,4 @@ public class VictorSP extends PWMSpeedController { LiveWindow.addActuator("VictorSP", getChannel(), this); UsageReporting.report(tResourceType.kResourceType_VictorSP, getChannel()); } - - /** - * Constructor. - * - * @param channel The PWM channel that the VictorSP is attached to. 0-9 are on-board, 10-19 are on - * the MXP port - */ - public VictorSP(final int channel) { - super(channel); - initVictorSP(); - } } diff --git a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/AnalogPotentiometer.java b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/AnalogPotentiometer.java index 2212845ae6..54756e4ed3 100644 --- a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/AnalogPotentiometer.java +++ b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/AnalogPotentiometer.java @@ -24,19 +24,6 @@ public class AnalogPotentiometer implements Potentiometer, LiveWindowSendable { private boolean m_init_analog_input; protected PIDSourceType m_pidSource = PIDSourceType.kDisplacement; - /** - * Common initialization code called by all constructors. - * - * @param input The {@link AnalogInput} this potentiometer is plugged into. - * @param scale The scaling to multiply the voltage by to get a meaningful unit. - * @param offset The offset to add to the scaled value for controlling the zero value - */ - private void initPot(final AnalogInput input, double scale, double offset) { - this.m_scale = scale; - this.m_offset = offset; - m_analog_input = input; - } - /** * AnalogPotentiometer constructor. * @@ -50,9 +37,8 @@ public class AnalogPotentiometer implements Potentiometer, LiveWindowSendable { * @param offset The offset to add to the scaled value for controlling the zero value */ public AnalogPotentiometer(final int channel, double scale, double offset) { - AnalogInput input = new AnalogInput(channel); + this(new AnalogInput(channel), scale, offset); m_init_analog_input = true; - initPot(input, scale, offset); } /** @@ -69,7 +55,10 @@ public class AnalogPotentiometer implements Potentiometer, LiveWindowSendable { */ public AnalogPotentiometer(final AnalogInput input, double scale, double offset) { m_init_analog_input = false; - initPot(input, scale, offset); + + m_scale = scale; + m_offset = offset; + m_analog_input = input; } /** diff --git a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/DoubleSolenoid.java b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/DoubleSolenoid.java index 9845cad28d..d0e6f85476 100644 --- a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/DoubleSolenoid.java +++ b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/DoubleSolenoid.java @@ -45,25 +45,6 @@ public class DoubleSolenoid implements LiveWindowSendable { private SimSpeedController m_impl; private Value m_value; - /** - * Common function to implement constructor behavior. - */ - private synchronized void initSolenoid(int moduleNumber, int forwardChannel, int reverseChannel) { - m_forwardChannel = forwardChannel; - m_reverseChannel = reverseChannel; - m_moduleNumber = moduleNumber; -// LiveWindow.addActuator("DoubleSolenoid", m_moduleNumber, m_forwardChannel, this); - - if (reverseChannel < forwardChannel) { // Swap ports - int channel = forwardChannel; - forwardChannel = reverseChannel; - reverseChannel = channel; - m_reverseDirection = true; - } - m_impl = new SimSpeedController("simulator/pneumatic/" + moduleNumber + "/" + forwardChannel - + "/" + moduleNumber + "/" + reverseChannel); - } - /** * Constructor. * @@ -71,7 +52,7 @@ public class DoubleSolenoid implements LiveWindowSendable { * @param reverseChannel The reverse channel on the module to control. */ public DoubleSolenoid(final int forwardChannel, final int reverseChannel) { - initSolenoid(1, forwardChannel, reverseChannel); + this(1, forwardChannel, reverseChannel); } /** @@ -83,7 +64,17 @@ public class DoubleSolenoid implements LiveWindowSendable { */ public DoubleSolenoid(final int moduleNumber, final int forwardChannel, final int reverseChannel) { - initSolenoid(moduleNumber, forwardChannel, reverseChannel); + m_moduleNumber = moduleNumber; +// LiveWindow.addActuator("DoubleSolenoid", m_moduleNumber, m_forwardChannel, this); + + if (reverseChannel < forwardChannel) { // Swap ports + int channel = forwardChannel; + m_forwardChannel = reverseChannel; + m_reverseChannel = channel; + m_reverseDirection = true; + } + m_impl = new SimSpeedController("simulator/pneumatic/" + moduleNumber + "/" + forwardChannel + + "/" + moduleNumber + "/" + reverseChannel); } /** diff --git a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Jaguar.java b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Jaguar.java index 1cab5ce47e..1e335c9742 100644 --- a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Jaguar.java +++ b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Jaguar.java @@ -21,9 +21,11 @@ public class Jaguar implements SpeedController, PIDOutput, MotorSafety, LiveWind private SimSpeedController impl; /** - * Common initialization code called by all constructors. + * Constructor. + * + * @param channel The PWM channel that the Jaguar is attached to. */ - private void initJaguar(final int channel) { + public Jaguar(final int channel) { this.channel = channel; impl = new SimSpeedController("simulator/pwm/" + channel); @@ -34,15 +36,6 @@ public class Jaguar implements SpeedController, PIDOutput, MotorSafety, LiveWind LiveWindow.addActuator("Jaguar", channel, this); } - /** - * Constructor. - * - * @param channel The PWM channel that the Jaguar is attached to. - */ - public Jaguar(final int channel) { - initJaguar(channel); - } - /** * Set the PWM value. * diff --git a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Relay.java b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Relay.java index ac8b169383..7750d6e3df 100644 --- a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Relay.java +++ b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Relay.java @@ -24,7 +24,6 @@ import edu.wpi.first.wpilibj.tables.ITableListener; */ public class Relay extends SensorBase implements MotorSafety, LiveWindowSendable { private MotorSafetyHelper m_safetyHelper; - /** * This class represents errors in trying to set relay values contradictory to the direction to * which the relay is set. @@ -146,9 +145,7 @@ public class Relay extends SensorBase implements MotorSafety, LiveWindowSendable * @param channel The channel number for this relay. */ public Relay(final int channel) { - m_channel = channel; - m_direction = Direction.kBoth; - initRelay(); + this(channel, Direction.kBoth); } public void free() { diff --git a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Servo.java b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Servo.java index 358cd4c1d1..d7ad469337 100644 --- a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Servo.java +++ b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Servo.java @@ -30,17 +30,6 @@ public class Servo implements SpeedController, LiveWindowSendable { private SimSpeedController impl; private int channel; - /** - * Common initialization code called by all constructors. - * - * InitServo() assigns defaults for the period multiplier for the servo PWM control signal, as - * well as the minimum and maximum PWM values supported by the servo. - */ - private void initServo() { - LiveWindow.addActuator("Servo", channel, this); - impl = new SimSpeedController("simulator/pwm/" + channel); - } - /** * Write out the PID value as seen in the PIDOutput base object. * @@ -61,7 +50,8 @@ public class Servo implements SpeedController, LiveWindowSendable { */ public Servo(final int channel) { this.channel = channel; - initServo(); + LiveWindow.addActuator("Servo", channel, this); + impl = new SimSpeedController("simulator/pwm/" + channel); } private double getServoAngleRange() { diff --git a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Solenoid.java b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Solenoid.java index fe4314fed2..9c1db2e171 100644 --- a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Solenoid.java +++ b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Solenoid.java @@ -25,24 +25,13 @@ public class Solenoid implements LiveWindowSendable { private boolean m_value; private SimSpeedController m_impl; - /** - * Common function to implement constructor behavior. - */ - private synchronized void initSolenoid(int slot, int channel) { - m_moduleNumber = slot; - m_channel = channel; - m_impl = new SimSpeedController("simulator/pneumatic/" + slot + "/" + channel); - - LiveWindow.addActuator("Solenoid", m_moduleNumber, m_channel, this); - } - /** * Constructor. * * @param channel The channel on the module to control. */ public Solenoid(final int channel) { - initSolenoid(1, channel); + this(1, channel); } /** @@ -52,7 +41,11 @@ public class Solenoid implements LiveWindowSendable { * @param channel The channel on the module to control. */ public Solenoid(final int moduleNumber, final int channel) { - initSolenoid(moduleNumber, channel); + m_moduleNumber = moduleNumber; + m_channel = channel; + m_impl = new SimSpeedController("simulator/pneumatic/" + moduleNumber + "/" + channel); + + LiveWindow.addActuator("Solenoid", m_moduleNumber, m_channel, this); } /** diff --git a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Talon.java b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Talon.java index fdb497249c..88d4620121 100644 --- a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Talon.java +++ b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Talon.java @@ -21,7 +21,7 @@ public class Talon implements SpeedController, PIDOutput, MotorSafety, LiveWindo private SimSpeedController m_impl; /** - * Common initialization code called by all constructors. + * Constructor. * *
Note that the Talon uses the following bounds for PWM values. These values should work * reasonably well for most controllers, but if users experience issues such as asymmetric @@ -32,8 +32,10 @@ public class Talon implements SpeedController, PIDOutput, MotorSafety, LiveWindo *
- 2.037ms = full "forward" - 1.539ms = the "high end" of the deadband range - 1.513ms = * center of the deadband range (off) - 1.487ms = the "low end" of the deadband range - .989ms = * full "reverse" + * + * @param channel The PWM channel that the Talon is attached to. */ - private void initTalon(final int channel) { + public Talon(final int channel) { this.m_channel = channel; m_impl = new SimSpeedController("simulator/pwm/" + channel); @@ -44,15 +46,6 @@ public class Talon implements SpeedController, PIDOutput, MotorSafety, LiveWindo LiveWindow.addActuator("Talon", channel, this); } - /** - * Constructor. - * - * @param channel The PWM channel that the Talon is attached to. - */ - public Talon(final int channel) { - initTalon(channel); - } - /** * Set the PWM value. * diff --git a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Victor.java b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Victor.java index 6ea2931ac0..b58470180b 100644 --- a/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Victor.java +++ b/wpilibj/src/sim/java/edu/wpi/first/wpilibj/Victor.java @@ -21,7 +21,7 @@ public class Victor implements SpeedController, PIDOutput, MotorSafety, LiveWind private SimSpeedController m_impl; /** - * Common initialization code called by all constructors. + * Constructor. * *
Note that the Victor uses the following bounds for PWM values. These values were determined * empirically and optimized for the Victor 888. These values should work reasonably well for @@ -33,8 +33,10 @@ public class Victor implements SpeedController, PIDOutput, MotorSafety, LiveWind *
- 2.027ms = full "forward" - 1.525ms = the "high end" of the deadband range - 1.507ms = center * of the deadband range (off) - 1.49ms = the "low end" of the deadband range - 1.026ms = full * "reverse" + * + * @param channel The PWM channel that the Victor is attached to. */ - private void initVictor(final int channel) { + public Victor(final int channel) { this.m_channel = channel; m_impl = new SimSpeedController("simulator/pwm/" + channel); @@ -46,15 +48,6 @@ public class Victor implements SpeedController, PIDOutput, MotorSafety, LiveWind // UsageReporting.report(tResourceType.kResourceType_Talon, getChannel(), getModuleNumber()-1); } - /** - * Constructor. - * - * @param channel The PWM channel that the Victor is attached to. - */ - public Victor(final int channel) { - initVictor(channel); - } - /** * Set the PWM value. *