diff --git a/java/.classpath b/java/.classpath
index 435f3b7..4eb8e08 100644
--- a/java/.classpath
+++ b/java/.classpath
@@ -1,7 +1,8 @@
+
+
-
diff --git a/java/.configure b/java/.configure
new file mode 100644
index 0000000..3974ee4
--- /dev/null
+++ b/java/.configure
@@ -0,0 +1,6 @@
+# enable or disable logging
+ch.ntb.usb/debug = true
+# set and configure individual loggers here
+# the format is: projectName/debug/ = /
+ch.ntb.usb/debug/logger0 = ch.ntb.usb/OFF
+ch.ntb.usb/debug/logger1 = ch.ntb.usb.test/INFO
diff --git a/java/.project b/java/.project
index b1a04ef..88c62bc 100644
--- a/java/.project
+++ b/java/.project
@@ -10,10 +10,21 @@
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
org.eclipse.jem.workbench.JavaEMFNature
org.eclipse.jdt.core.javanature
org.eclipse.jem.beaninfo.BeanInfoNature
+ org.eclipse.pde.PluginNature
diff --git a/java/.settings/org.eclipse.jdt.core.prefs b/java/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 6f26031..0000000
--- a/java/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,12 +0,0 @@
-#Wed Oct 26 15:55:07 CEST 2005
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/java/META-INF/MANIFEST.MF b/java/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8014251
--- /dev/null
+++ b/java/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Inf USB Library
+Bundle-SymbolicName: ch.ntb.usb
+Bundle-Version: 1.0.0
+Bundle-Localization: plugin
+Bundle-Vendor: inf.ntb.ch
+Eclipse-LazyStart: false
+Require-Bundle: org.junit4,
+ org.eclipse.swt
+Export-Package: ch.ntb.usb,
+ ch.ntb.usb.testApp,
+ ch.ntb.usb.usbView
diff --git a/java/build.properties b/java/build.properties
new file mode 100644
index 0000000..c7069a0
--- /dev/null
+++ b/java/build.properties
@@ -0,0 +1,4 @@
+source.. = src/,\
+ test/
+bin.includes = META-INF/,\
+ .
diff --git a/java/src/ch/ntb/usb/Device.java b/java/src/ch/ntb/usb/Device.java
index c27c6c7..c517323 100644
--- a/java/src/ch/ntb/usb/Device.java
+++ b/java/src/ch/ntb/usb/Device.java
@@ -1,9 +1,9 @@
package ch.ntb.usb;
import java.util.logging.Level;
+import java.util.logging.Logger;
import ch.ntb.usb.logger.LogUtil;
-import ch.ntb.usb.logger.UsbLogger;
/**
* This class represents an USB device.
@@ -14,7 +14,7 @@ import ch.ntb.usb.logger.UsbLogger;
*/
public class Device {
- private static UsbLogger logger = LogUtil.ch_ntb_usb;
+ private static Logger logger = LogUtil.getLogger("ch.ntb.usb");
private static final int TIMEOUT_ERROR_CODE = -116;
@@ -224,7 +224,8 @@ public class Device {
+ LibusbWin.usb_strerror());
}
- if (logger.getLevel().intValue() <= Level.INFO.intValue()) {
+ logger.info("length written: " + lenWritten);
+ if (logger.getLevel().intValue() <= Level.FINEST.intValue()) {
StringBuffer sb = new StringBuffer("bulkwrite, ep 0x"
+ Integer.toHexString(out_ep_address) + ": " + lenWritten
+ " Bytes sent: ");
@@ -283,7 +284,8 @@ public class Device {
+ LibusbWin.usb_strerror());
}
- if (logger.getLevel().intValue() <= Level.INFO.intValue()) {
+ logger.info("length read: " + lenRead);
+ if (logger.getLevel().intValue() <= Level.FINEST.intValue()) {
StringBuffer sb = new StringBuffer("bulkread, ep 0x"
+ Integer.toHexString(in_ep_address) + ": " + lenRead
+ " Bytes received: ");
@@ -343,7 +345,8 @@ public class Device {
+ LibusbWin.usb_strerror());
}
- if (logger.getLevel().intValue() <= Level.INFO.intValue()) {
+ logger.info("length written: " + lenWritten);
+ if (logger.getLevel().intValue() <= Level.FINEST.intValue()) {
StringBuffer sb = new StringBuffer("bulkwrite, ep 0x"
+ Integer.toHexString(out_ep_address) + ": " + lenWritten
+ " Bytes sent: ");
@@ -403,7 +406,8 @@ public class Device {
+ LibusbWin.usb_strerror());
}
- if (logger.getLevel().intValue() <= Level.INFO.intValue()) {
+ logger.info("length read: " + lenRead);
+ if (logger.getLevel().intValue() <= Level.FINEST.intValue()) {
StringBuffer sb = new StringBuffer("bulkread, ep 0x"
+ Integer.toHexString(in_ep_address) + ": " + lenRead
+ " Bytes received: ");
diff --git a/java/src/ch/ntb/usb/USB.java b/java/src/ch/ntb/usb/USB.java
index 0365ce9..1910486 100644
--- a/java/src/ch/ntb/usb/USB.java
+++ b/java/src/ch/ntb/usb/USB.java
@@ -2,9 +2,9 @@ package ch.ntb.usb;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.logging.Logger;
import ch.ntb.usb.logger.LogUtil;
-import ch.ntb.usb.logger.UsbLogger;
/**
* This class manages all USB devices and defines some USB specific constants.
@@ -26,7 +26,7 @@ public class USB {
*/
public static int FULLSPEED_MAX_BULK_PACKET_SIZE = 64;
- private static UsbLogger logger = LogUtil.ch_ntb_usb;
+ private static Logger logger = LogUtil.getLogger("ch.ntb.usb");
private static LinkedList devices = new LinkedList();
diff --git a/java/src/ch/ntb/usb/logger/LogLevel.java b/java/src/ch/ntb/usb/logger/LogLevel.java
deleted file mode 100644
index a28714e..0000000
--- a/java/src/ch/ntb/usb/logger/LogLevel.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package ch.ntb.usb.logger;
-
-import java.util.logging.Level;
-
-public class LogLevel extends Level {
-
- private static final long serialVersionUID = -8918592094095458645L;
-
- public static final Level DEBUG = new LogLevel("DEBUG", 750);
-
- protected LogLevel(String name, int value) {
- super(name, value);
- }
-
-}
diff --git a/java/src/ch/ntb/usb/logger/LogUtil.java b/java/src/ch/ntb/usb/logger/LogUtil.java
index f411723..148fceb 100644
--- a/java/src/ch/ntb/usb/logger/LogUtil.java
+++ b/java/src/ch/ntb/usb/logger/LogUtil.java
@@ -1,20 +1,25 @@
package ch.ntb.usb.logger;
+import java.io.FileInputStream;
+import java.util.Properties;
import java.util.logging.ConsoleHandler;
import java.util.logging.Handler;
import java.util.logging.Level;
+import java.util.logging.LogManager;
+import java.util.logging.Logger;
public class LogUtil {
- public static UsbLogger ch_ntb_usb, ch_ntb_usb_test;
+ private static final String PLUGIN_ID = "ch.ntb.usb";
+ private static final String PROPERTIES_FILE = ".configure";
+
+ private static boolean debugEnabled;
static {
- // set all loglevels here
- ch_ntb_usb = getLogger("ch.ntb.usb", Level.OFF);
- ch_ntb_usb_test = getLogger("ch.ntb.usb.test", Level.ALL);
+ createLoggersFromProperties();
}
- public static void setLevel(UsbLogger logger, Level loglevel) {
+ public static void setLevel(Logger logger, Level loglevel) {
Handler[] h = logger.getHandlers();
for (int i = 0; i < h.length; i++) {
h[i].setLevel(loglevel);
@@ -22,7 +27,19 @@ public class LogUtil {
logger.setLevel(loglevel);
}
- private static void initLevel(UsbLogger logger, Level loglevel) {
+ public static Logger getLogger(String name) {
+ LogManager manager = LogManager.getLogManager();
+ // check if logger is already registered
+ Logger logger = manager.getLogger(name);
+ if (logger == null) {
+ logger = Logger.getLogger(name);
+ manager.addLogger(logger);
+ }
+ logger.setLevel(null);
+ return logger;
+ }
+
+ private static void initLevel(Logger logger, Level loglevel) {
Handler[] h = logger.getHandlers();
for (int i = 0; i < h.length; i++) {
logger.removeHandler(h[i]);
@@ -34,9 +51,43 @@ public class LogUtil {
logger.setUseParentHandlers(false);
}
- private static UsbLogger getLogger(String name, Level loglevel) {
- UsbLogger logger = UsbLogger.getLogger(name);
- initLevel(logger, loglevel);
- return logger;
+ private static void createLoggersFromProperties() {
+ try {
+ FileInputStream fis = new FileInputStream(PROPERTIES_FILE);
+ Properties prop = new Properties();
+ prop.load(fis);
+ // get global debug enable flag
+ debugEnabled = Boolean.parseBoolean(prop.getProperty(PLUGIN_ID
+ + "/debug"));
+ // get and configure loggers
+ boolean moreLoggers = true;
+ int loggerCount = 0;
+ while (moreLoggers) {
+ String loggerProp = prop.getProperty(PLUGIN_ID
+ + "/debug/logger" + loggerCount);
+ loggerCount++;
+ if (loggerProp != null) {
+ // parse string and get logger name and log level
+ int slashIndex = loggerProp.indexOf('/');
+ String loggerName = loggerProp.substring(0, slashIndex)
+ .trim();
+ String logLevel = loggerProp.substring(slashIndex + 1,
+ loggerProp.length());
+ // register logger
+ Level level;
+ if (debugEnabled) {
+ level = Level.parse(logLevel);
+ } else {
+ level = Level.OFF;
+ }
+ Logger logger = getLogger(loggerName);
+ initLevel(logger, level);
+ } else {
+ moreLoggers = false;
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
diff --git a/java/src/ch/ntb/usb/logger/UsbLogger.java b/java/src/ch/ntb/usb/logger/UsbLogger.java
deleted file mode 100644
index a255841..0000000
--- a/java/src/ch/ntb/usb/logger/UsbLogger.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package ch.ntb.usb.logger;
-
-import java.util.logging.LogManager;
-import java.util.logging.Logger;
-
-public class UsbLogger extends Logger {
-
- protected UsbLogger(String name, String resourceBundleName) {
- super(name, resourceBundleName);
- }
-
- public void debug(String msg) {
- log(LogLevel.DEBUG, msg);
- }
-
- public static synchronized UsbLogger getLogger(String name) {
- LogManager manager = LogManager.getLogManager();
- UsbLogger result = (UsbLogger) manager.getLogger(name);
- if (result == null) {
- result = new UsbLogger(name, null);
- manager.addLogger(result);
- result = (UsbLogger) manager.getLogger(name);
- }
- result.setLevel(null);
- return result;
- }
-}
diff --git a/java/src/ch/ntb/usb/testApp/TestImplementation.java b/java/src/ch/ntb/usb/testApp/TestImplementation.java
index 05ebf56..c15bd95 100644
--- a/java/src/ch/ntb/usb/testApp/TestImplementation.java
+++ b/java/src/ch/ntb/usb/testApp/TestImplementation.java
@@ -10,7 +10,7 @@ import ch.ntb.usb.logger.LogUtil;
public class TestImplementation {
- private static Logger logger = LogUtil.ch_ntb_usb_test;
+ private static Logger logger = LogUtil.getLogger("ch.ntb.usb.test");
public static String sendData = "0x5b 0x02 0x01 0x00 0x03 0x03 0xf0 0xf0 0x1f";