diff --git a/pom.xml b/pom.xml index e3c76f7..adfb23d 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ usb4java jar usb4java - 0.1.2-SNAPSHOT + 0.2.0-SNAPSHOT http://www.ailis.de/~k/projects/usb4java USB library for Java based on libusb-0.1.x and implementing javax.usb diff --git a/src/changes/changes.xml b/src/changes/changes.xml index e8c80b1..f7d29d8 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -8,6 +8,12 @@ Klaus Reimer + + + Implemented configuration to control the scan mode and to improve + scan performance by filtering for specific vendor and product ids. + + libusb reports broken bus root devices when detaching USB devices diff --git a/src/main/java/de/ailis/usb4java/Services.java b/src/main/java/de/ailis/usb4java/Services.java index 1f30417..8784858 100644 --- a/src/main/java/de/ailis/usb4java/Services.java +++ b/src/main/java/de/ailis/usb4java/Services.java @@ -34,7 +34,7 @@ public final class Services implements UsbServices "usb4java JSR-80 implementation"; /** The implementation version. */ - private static final String IMP_VERSION = "0.1.0"; + private static final String IMP_VERSION = "0.2.0"; /** The API version. */ private static final String API_VERSION = "1.0.1"; diff --git a/src/site/apt/configuration.apt.vm b/src/site/apt/configuration.apt.vm new file mode 100644 index 0000000..8005e0e --- /dev/null +++ b/src/site/apt/configuration.apt.vm @@ -0,0 +1,67 @@ + ----------------------------------------------------------------------------- + Configuration + ----------------------------------------------------------------------------- + +Configuration + + To tell the USB Host Manager of to use the + implementation you have to put the following property into the + file which must be located in the root of + your classpath: + ++----+ +javax.usb.services = de.ailis.usb4java.Services ++----+ + + can be configured by adding more properties to this file as + described in the following sections. + + +* Hierarchy scanning + + Normally USB devices in are maintained in a tree. The root of + the tree is a virtual USB hub provided by . All physical root + hubs are connected to this virtual hub and all child hubs and devices are + connected to these root hubs. Unfortunately has problems on + platforms like Mac OS X to read the real USB device hierarchy from the operating + system. So to allow to be used on Mac OS X this hierachy scan + can be disabled (and is disabled by default when running on Mac OS X). The + result is that all USB devices are directly connected to the virtual root + USB hub. At least this allows finding and communicating with the devices but + you can't check which devices are connected to which hub in this case. + + To disable hierarchy scanning add this to the file: + ++----+ +de.ailis.usb4java.scanHierarchy = false ++----+ + + When you want to enable it on Mac OS X for some reason then set it to + <<>>. + + +* Device filtering + + To improve USB device scan performance you can configure device filters + with these two properties: + ++----+ +de.ailis.usb4java.vendors = 12ab cd56 +de.ailis.usb4java.products = 01aa ++----+ + + With a configuration like this ignores all devices which does + not have vendor ID <<<12ab>>> or <<>> and not product ID <<<01aa>>>. + + The purpose of this device filtering is performance. When your machine + has many USB devices connected then it may slow down your application when + has to read all the descriptors of all connected devices on + startup and everytime a USB device has been attached or detached. + So filtering for vendor ID and/or product ID will hide all + uninteresting devices from . When using this feature then it is + recommended to disable hierarchy scan, too, because then hubs can be totally + ignored. With enabled hierarchy scan has to traverse all hubs to + find interesting devices. + + + \ No newline at end of file diff --git a/src/site/apt/quickstart.apt.vm b/src/site/apt/quickstart.apt.vm index 0dd3f77..34217f1 100644 --- a/src/site/apt/quickstart.apt.vm +++ b/src/site/apt/quickstart.apt.vm @@ -112,8 +112,8 @@ The high-level API * Configuration To use the implementation you have to create a file named - in the root of your class path with the following - content: + <{{{./configuration.html}javax.usb.properties}}> in the root of your class + path with the following content: +-----------------------------------------------------------------------------+ javax.usb.services = de.ailis.usb4java.Services diff --git a/src/site/site.xml b/src/site/site.xml index 8f373f2..fd6685b 100644 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -23,6 +23,7 @@ +