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 bbcc033dc8..10533eadd1 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Solenoid.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/Solenoid.java @@ -35,6 +35,13 @@ public class Solenoid extends SolenoidBase implements LiveWindowSendable { checkSolenoidModule(m_moduleNumber); checkSolenoidChannel(m_channel); + try { + m_allocated.allocate(m_moduleNumber * kSolenoidChannels + m_channel); + } catch (CheckedAllocationException e) { + 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_solenoid_port = SolenoidJNI.initializeSolenoidPort(port); @@ -69,8 +76,7 @@ public class Solenoid extends SolenoidBase implements LiveWindowSendable { * Destructor. */ public synchronized void free() { - // m_allocated.free((m_moduleNumber - 1) * kSolenoidChannels + m_channel - - // 1); + m_allocated.free(m_moduleNumber * kSolenoidChannels + m_channel); } /** diff --git a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/SolenoidBase.java b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/SolenoidBase.java index 6462ab1fd3..53168a9d15 100644 --- a/wpilibj/src/athena/java/edu/wpi/first/wpilibj/SolenoidBase.java +++ b/wpilibj/src/athena/java/edu/wpi/first/wpilibj/SolenoidBase.java @@ -18,7 +18,7 @@ public abstract class SolenoidBase extends SensorBase { private long[] m_ports; protected int m_moduleNumber; // /< The number of the solenoid module being // used. - protected Resource m_allocated = new Resource(63 * SensorBase.kSolenoidChannels); + protected static Resource m_allocated = new Resource(63 * SensorBase.kSolenoidChannels); /** * Constructor.