From 966e4be36a48ed7bd93109914b5895ba4097c473 Mon Sep 17 00:00:00 2001 From: Thad House Date: Sat, 22 Aug 2015 20:19:41 -0700 Subject: [PATCH] artf4162: Fixes multiple solenoid creations in java Change-Id: Iff1d6cb608c1c95723fa3121fd6c24629952f4dd --- .../athena/java/edu/wpi/first/wpilibj/Solenoid.java | 10 ++++++++-- .../java/edu/wpi/first/wpilibj/SolenoidBase.java | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) 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.