From b7f2636bdaba247dae03d9da5179504a955163cb Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Tue, 7 Jun 2011 15:47:55 +0000 Subject: [PATCH] Wiimote device netter gemaakt. --- java/src/mimis/Manager.java | 2 +- .../mimis/device/wiimote/WiimoteDevice.java | 17 ++++--------- .../device/wiimote/WiimoteDiscovery.java | 24 +++++++++++++++++-- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/java/src/mimis/Manager.java b/java/src/mimis/Manager.java index 947f19d..603c917 100644 --- a/java/src/mimis/Manager.java +++ b/java/src/mimis/Manager.java @@ -16,7 +16,7 @@ import org.apache.commons.logging.LogFactory; public class Manager extends Worker { protected Log log = LogFactory.getLog(getClass()); protected static final long serialVersionUID = 1L; - protected static final int INTERVAL = 100; + protected static final int INTERVAL = 500; protected T[] manageableArray; protected Map> buttonMap; diff --git a/java/src/mimis/device/wiimote/WiimoteDevice.java b/java/src/mimis/device/wiimote/WiimoteDevice.java index 70ce75d..1815af0 100644 --- a/java/src/mimis/device/wiimote/WiimoteDevice.java +++ b/java/src/mimis/device/wiimote/WiimoteDevice.java @@ -53,6 +53,7 @@ public class WiimoteDevice extends Device implements GestureListener { /* Activation */ public void activate() throws ActivateException { + super.activate(); connect(); /*add( new Hold(WiimoteButton.A), @@ -175,14 +176,10 @@ public class WiimoteDevice extends Device implements GestureListener { log.error(e); } if (wiimote == null) { - wiimoteDiscovery.work(); - if (wiimote == null) { - wiimoteDiscovery.disconnect(); - try { - wiimoteDiscovery.activate(); - } catch (ActivateException e) { - log.error(e); - } + try { + wiimoteDiscovery.activate(); + } catch (ActivateException e) { + log.error(e); } } } @@ -193,11 +190,8 @@ public class WiimoteDevice extends Device implements GestureListener { //wiimote.activateMotionSensing(); try { wiimoteDiscovery.deactivate(); - super.activate(); } catch (DeactivateException e) { log.error(e); - } catch (ActivateException e) { - log.error(e); } } catch (DeviceNotFoundException e) { log.error(e); @@ -220,7 +214,6 @@ public class WiimoteDevice extends Device implements GestureListener { public boolean active() { if (wiimote != null) { - log.debug("Check activity"); connected = false; wiimote.getStatus(); synchronized (this) { diff --git a/java/src/mimis/device/wiimote/WiimoteDiscovery.java b/java/src/mimis/device/wiimote/WiimoteDiscovery.java index 8731bb2..70cc448 100644 --- a/java/src/mimis/device/wiimote/WiimoteDiscovery.java +++ b/java/src/mimis/device/wiimote/WiimoteDiscovery.java @@ -4,9 +4,13 @@ import java.io.IOException; import java.util.Scanner; import mimis.Worker; +import mimis.exception.worker.ActivateException; +import mimis.exception.worker.DeactivateException; public class WiimoteDiscovery extends Worker { protected WiimoteDevice wiimoteDevice; + protected Process process; + protected boolean disconnect; public WiimoteDiscovery(WiimoteDevice wiimoteDevice) { this.wiimoteDevice = wiimoteDevice; @@ -23,7 +27,7 @@ public class WiimoteDiscovery extends Worker { public boolean execute(String parameters) { String command = "native/wiiscan.exe -l none " + parameters; try { - Process process = Runtime.getRuntime().exec(command); + process = Runtime.getRuntime().exec(command); Scanner scanner = new Scanner(process.getInputStream()); while (scanner.hasNext()) { if (scanner.next().equals("[OK]")) { @@ -32,14 +36,30 @@ public class WiimoteDiscovery extends Worker { } } catch (IOException e) { log.error(e); + } finally { + process =null; } return false; } protected void work() { - log.debug("Discover wiimotes"); if (connect()) { wiimoteDevice.connected(); + } else if (disconnect) { + disconnect(); + } + disconnect = false; + } + + public void activate() throws ActivateException { + super.activate(); + disconnect = true; + } + + public void deactivate() throws DeactivateException { + super.deactivate(); + if (process != null) { + process.destroy(); } }