diff --git a/LibusbJava/.cdtproject b/LibusbJava/.cdtproject deleted file mode 100644 index b95c82a..0000000 --- a/LibusbJava/.cdtproject +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/LibusbJava/.cproject b/LibusbJava/.cproject deleted file mode 100644 index 26a6217..0000000 --- a/LibusbJava/.cproject +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/LibusbJava/.project b/LibusbJava/.project deleted file mode 100644 index 0032176..0000000 --- a/LibusbJava/.project +++ /dev/null @@ -1,90 +0,0 @@ - - - LibusbJava - - - - - - org.eclipse.cdt.make.core.makeBuilder - - - - org.eclipse.cdt.core.errorOutputParser - org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.VCErrorParser; - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.build.arguments - - - - org.eclipse.cdt.make.core.build.command - make - - - org.eclipse.cdt.make.core.build.location - - - - org.eclipse.cdt.make.core.build.target.auto - all - - - org.eclipse.cdt.make.core.build.target.clean - clean - - - org.eclipse.cdt.make.core.build.target.full - clean all - - - org.eclipse.cdt.make.core.build.target.inc - all - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - false - - - org.eclipse.cdt.make.core.enableFullBuild - false - - - org.eclipse.cdt.make.core.enabledIncrementalBuild - false - - - org.eclipse.cdt.make.core.environment - - - - org.eclipse.cdt.make.core.stopOnError - false - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - org.eclipse.cdt.make.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.make.core.makeNature - org.eclipse.cdt.make.core.ScannerConfigNature - org.eclipse.cdt.core.ccnature - - diff --git a/LibusbJava/.settings/org.eclipse.cdt.core.prefs b/LibusbJava/.settings/org.eclipse.cdt.core.prefs deleted file mode 100644 index ae32dbf..0000000 --- a/LibusbJava/.settings/org.eclipse.cdt.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Sat Aug 11 13:28:28 CEST 2007 -eclipse.preferences.version=1 -indexer/indexerId=org.eclipse.cdt.core.domsourceindexer -indexerId=org.eclipse.cdt.core.domsourceindexer diff --git a/LibusbJava/LibusbJava.cpp b/LibusbJava/LibusbJava.cpp deleted file mode 100644 index 4a72b65..0000000 --- a/LibusbJava/LibusbJava.cpp +++ /dev/null @@ -1,852 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ - -#include -#include -#include -#include -#include -#include -#include "LibusbJava.h" - -// Windows specific stuff -#ifdef WIN32 -#include -#endif - -//#define DEBUGON - -// global bus (updated when usb_get_busses() is called) -struct usb_bus *busses; - -// global flag for loading all class, method and field ID references -int java_references_loaded = 0; - -// if > 0 an LibusbJava specific error string is set -char *libusbJavaError = NULL; - -// macros to set and clear LibusbJava specific errors -#define setLibusbJavaError(error) libusbJavaError = error -#define clearLibusbJavaError() libusbJavaError = NULL - -// class references -jclass usb_busClazz, usb_devClazz, usb_devDescClazz, usb_confDescClazz, \ - usb_intClazz, usb_intDescClazz, usb_epDescClazz; - -// method ID references -jmethodID usb_busMid, usb_devMid, usb_devDescMid, usb_confDescMid, \ - usb_intMid, usb_intDescMid, usb_epDescMid; - -// field ID references -// usb_bus -jfieldID usb_busFID_next, usb_busFID_prev, usb_busFID_dirname, \ - usb_busFID_devices, usb_busFID_location, usb_busFID_root_dev; -// usb_device -jfieldID usb_devFID_next, usb_devFID_prev, usb_devFID_filename, \ - usb_devFID_bus, usb_devFID_descriptor, usb_devFID_config, \ - usb_devFID_devnum, usb_devFID_num_children, usb_devFID_children, \ - usb_devFID_devStructAddr; -// usb_deviceDescriptor -jfieldID usb_devDescFID_bLength, usb_devDescFID_bDescriptorType, \ - usb_devDescFID_bcdUSB, usb_devDescFID_bDeviceClass, \ - usb_devDescFID_bDeviceSubClass, usb_devDescFID_bDeviceProtocol, \ - usb_devDescFID_bMaxPacketSize0, usb_devDescFID_idVendor, \ - usb_devDescFID_idProduct, usb_devDescFID_bcdDevice, \ - usb_devDescFID_iManufacturer, usb_devDescFID_iProduct, \ - usb_devDescFID_iSerialNumber, usb_devDescFID_bNumConfigurations; -// usb_configurationDescriptor -jfieldID usb_confDescFID_bLength, usb_confDescFID_bDescriptorType, usb_confDescFID_wTotalLength, \ - usb_confDescFID_bNumInterfaces, usb_confDescFID_bConfigurationValue, \ - usb_confDescFID_iConfiguration, usb_confDescFID_bmAttributes, usb_confDescFID_MaxPower, \ - usb_confDescFID_interface_, usb_confDescFID_extra, usb_confDescFID_extralen; -// usb_interface -jfieldID usb_intFID_altsetting, usb_intFID_num_altsetting; -// usb_intDesc -jfieldID usb_intDescFID_bLength, usb_intDescFID_bDescriptorType, \ - usb_intDescFID_bInterfaceNumber, usb_intDescFID_bAlternateSetting, \ - usb_intDescFID_bNumEndpoints, usb_intDescFID_bInterfaceClass, \ - usb_intDescFID_bInterfaceSubClass, usb_intDescFID_bInterfaceProtocol, \ - usb_intDescFID_iInterface, usb_intDescFID_endpoint, usb_intDescFID_extra, \ - usb_intDescFID_extralen; -// usb_endpointDescriptor -jfieldID usb_epDescFID_bLength, usb_epDescFID_bDescriptorType, \ - usb_epDescFID_bEndpointAddress, usb_epDescFID_bmAttributes, \ - usb_epDescFID_wMaxPacketSize, usb_epDescFID_bInterval, \ - usb_epDescFID_bRefresh, usb_epDescFID_bSynchAddress, usb_epDescFID_extra, \ - usb_epDescFID_extralen; - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_set_debug - * Signature: (B)V - */ -JNIEXPORT void JNICALL Java_ch_ntb_usb_LibusbJava_usb_1set_1debug - (JNIEnv *env, jclass obj, jint level) - { - clearLibusbJavaError(); - usb_set_debug(level); - } -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_init - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_ch_ntb_usb_LibusbJava_usb_1init - (JNIEnv *env, jclass obj) - { - clearLibusbJavaError(); - usb_init(); - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_find_busses - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1find_1busses - (JNIEnv *env, jclass obj) - { - clearLibusbJavaError(); - return usb_find_busses(); - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_find_devices - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1find_1devices - (JNIEnv *env, jclass obj) - { - clearLibusbJavaError(); - return usb_find_devices(); - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_get_busses - * Signature: ()Lch/ntb/usb/Usb_Bus; - */ -JNIEXPORT jobject JNICALL Java_ch_ntb_usb_LibusbJava_usb_1get_1busses - (JNIEnv *env, jclass obj) - { - - clearLibusbJavaError(); - - // only load class, method and field ID references once - if (!java_references_loaded) { - // find classes and field ids - // usb_bus - usb_busClazz = env->FindClass("ch/ntb/usb/Usb_Bus"); - if (usb_busClazz == NULL) { return NULL; /* exception thrown */ } - usb_busMid = env->GetMethodID(usb_busClazz, "","()V"); - if (usb_busMid == NULL) { return NULL; } - - usb_busFID_next = env->GetFieldID(usb_busClazz, "next", "Lch/ntb/usb/Usb_Bus;"); - usb_busFID_prev = env->GetFieldID(usb_busClazz, "prev", "Lch/ntb/usb/Usb_Bus;"); - usb_busFID_dirname = env->GetFieldID(usb_busClazz, "dirname", "Ljava/lang/String;"); - usb_busFID_devices = env->GetFieldID(usb_busClazz, "devices", "Lch/ntb/usb/Usb_Device;"); - usb_busFID_location = env->GetFieldID(usb_busClazz, "location", "J"); - usb_busFID_root_dev = env->GetFieldID(usb_busClazz, "root_dev", "Lch/ntb/usb/Usb_Device;"); - - // usb_device - usb_devClazz = env->FindClass("ch/ntb/usb/Usb_Device"); - if (usb_devClazz == NULL) { return NULL; /* exception thrown */ } - usb_devMid = env->GetMethodID(usb_devClazz, "","()V"); - if (usb_devMid == NULL) { return NULL; } - - usb_devFID_next = env->GetFieldID(usb_devClazz, "next", "Lch/ntb/usb/Usb_Device;"); - usb_devFID_prev = env->GetFieldID(usb_devClazz, "prev", "Lch/ntb/usb/Usb_Device;"); - usb_devFID_filename = env->GetFieldID(usb_devClazz, "filename", "Ljava/lang/String;"); - usb_devFID_bus = env->GetFieldID(usb_devClazz, "bus", "Lch/ntb/usb/Usb_Bus;"); - usb_devFID_descriptor = env->GetFieldID(usb_devClazz, "descriptor", "Lch/ntb/usb/Usb_Device_Descriptor;"); - usb_devFID_config = env->GetFieldID(usb_devClazz, "config", "[Lch/ntb/usb/Usb_Config_Descriptor;"); - usb_devFID_devnum = env->GetFieldID(usb_devClazz, "devnum", "B"); - usb_devFID_num_children = env->GetFieldID(usb_devClazz, "num_children", "B"); - usb_devFID_children = env->GetFieldID(usb_devClazz, "children", "Lch/ntb/usb/Usb_Device;"); - usb_devFID_devStructAddr = env->GetFieldID(usb_devClazz, "devStructAddr", "J"); - - - // usb_device_descriptor - usb_devDescClazz = env->FindClass("ch/ntb/usb/Usb_Device_Descriptor"); - if (usb_devDescClazz == NULL) { return NULL; /* exception thrown */ } - usb_devDescMid = env->GetMethodID(usb_devDescClazz, "","()V"); - if (usb_devDescMid == NULL) { return NULL; } - - usb_devDescFID_bLength = env->GetFieldID(usb_devDescClazz, "bLength", "B"); - usb_devDescFID_bDescriptorType = env->GetFieldID(usb_devDescClazz, "bDescriptorType", "B"); - usb_devDescFID_bcdUSB = env->GetFieldID(usb_devDescClazz, "bcdUSB", "S"); - usb_devDescFID_bDeviceClass = env->GetFieldID(usb_devDescClazz, "bDeviceClass", "B"); - usb_devDescFID_bDeviceSubClass = env->GetFieldID(usb_devDescClazz, "bDeviceSubClass", "B"); - usb_devDescFID_bDeviceProtocol = env->GetFieldID(usb_devDescClazz, "bDeviceProtocol", "B"); - usb_devDescFID_bMaxPacketSize0 = env->GetFieldID(usb_devDescClazz, "bMaxPacketSize0", "B"); - usb_devDescFID_idVendor = env->GetFieldID(usb_devDescClazz, "idVendor", "S"); - usb_devDescFID_idProduct = env->GetFieldID(usb_devDescClazz, "idProduct", "S"); - usb_devDescFID_bcdDevice = env->GetFieldID(usb_devDescClazz, "bcdDevice", "S"); - usb_devDescFID_iManufacturer = env->GetFieldID(usb_devDescClazz, "iManufacturer", "B"); - usb_devDescFID_iProduct = env->GetFieldID(usb_devDescClazz, "iProduct", "B"); - usb_devDescFID_iSerialNumber = env->GetFieldID(usb_devDescClazz, "iSerialNumber", "B"); - usb_devDescFID_bNumConfigurations = env->GetFieldID(usb_devDescClazz, "bNumConfigurations", "B"); - - // usb_configuration_descriptor - usb_confDescClazz = env->FindClass("ch/ntb/usb/Usb_Config_Descriptor"); - if (usb_confDescClazz == NULL) { return NULL; /* exception thrown */ } - usb_confDescMid = env->GetMethodID(usb_confDescClazz, "","()V"); - if (usb_confDescMid == NULL) { return NULL; } - - usb_confDescFID_bLength = env->GetFieldID(usb_confDescClazz, "bLength", "B"); - usb_confDescFID_bDescriptorType = env->GetFieldID(usb_confDescClazz, "bDescriptorType", "B"); - usb_confDescFID_wTotalLength = env->GetFieldID(usb_confDescClazz, "wTotalLength", "S"); - usb_confDescFID_bNumInterfaces = env->GetFieldID(usb_confDescClazz, "bNumInterfaces", "B"); - usb_confDescFID_bConfigurationValue = env->GetFieldID(usb_confDescClazz, "bConfigurationValue", "B"); - usb_confDescFID_iConfiguration = env->GetFieldID(usb_confDescClazz, "iConfiguration", "B"); - usb_confDescFID_bmAttributes = env->GetFieldID(usb_confDescClazz, "bmAttributes", "B"); - usb_confDescFID_MaxPower = env->GetFieldID(usb_confDescClazz, "MaxPower", "B"); - usb_confDescFID_interface_ = env->GetFieldID(usb_confDescClazz, "interface_", "[Lch/ntb/usb/Usb_Interface;"); - usb_confDescFID_extra = env->GetFieldID(usb_confDescClazz, "extra", "[B"); - usb_confDescFID_extralen = env->GetFieldID(usb_confDescClazz, "extralen", "I"); - - // usb_interface - usb_intClazz = env->FindClass("ch/ntb/usb/Usb_Interface"); - if (usb_intClazz == NULL) { return NULL; /* exception thrown */ } - usb_intMid = env->GetMethodID(usb_intClazz, "","()V"); - if (usb_intMid == NULL) { return NULL; } - - usb_intFID_altsetting = env->GetFieldID(usb_intClazz, "altsetting", "[Lch/ntb/usb/Usb_Interface_Descriptor;"); - usb_intFID_num_altsetting = env->GetFieldID(usb_intClazz, "num_altsetting", "I"); - - // usb_interface_descriptor - usb_intDescClazz = env->FindClass("ch/ntb/usb/Usb_Interface_Descriptor"); - if (usb_intDescClazz == NULL) { return NULL; /* exception thrown */ } - usb_intDescMid = env->GetMethodID(usb_intDescClazz, "","()V"); - if (usb_intDescMid == NULL) { return NULL; } - - usb_intDescFID_bLength = env->GetFieldID(usb_intDescClazz, "bLength", "B"); - usb_intDescFID_bDescriptorType = env->GetFieldID(usb_intDescClazz, "bDescriptorType", "B"); - usb_intDescFID_bInterfaceNumber = env->GetFieldID(usb_intDescClazz, "bInterfaceNumber", "B"); - usb_intDescFID_bAlternateSetting = env->GetFieldID(usb_intDescClazz, "bAlternateSetting", "B"); - usb_intDescFID_bNumEndpoints = env->GetFieldID(usb_intDescClazz, "bNumEndpoints", "B"); - usb_intDescFID_bInterfaceClass = env->GetFieldID(usb_intDescClazz, "bInterfaceClass", "B"); - usb_intDescFID_bInterfaceSubClass = env->GetFieldID(usb_intDescClazz, "bInterfaceSubClass", "B"); - usb_intDescFID_bInterfaceProtocol = env->GetFieldID(usb_intDescClazz, "bInterfaceProtocol", "B"); - usb_intDescFID_iInterface = env->GetFieldID(usb_intDescClazz, "iInterface", "B"); - usb_intDescFID_endpoint = env->GetFieldID(usb_intDescClazz, "endpoint", "[Lch/ntb/usb/Usb_Endpoint_Descriptor;"); - usb_intDescFID_extra = env->GetFieldID(usb_intDescClazz, "extra", "[B"); - usb_intDescFID_extralen = env->GetFieldID(usb_intDescClazz, "extralen", "I"); - - // usb_endpoint_descriptor - usb_epDescClazz = env->FindClass("ch/ntb/usb/Usb_Endpoint_Descriptor"); - if (usb_epDescClazz == NULL) { return NULL; /* exception thrown */ } - usb_epDescMid = env->GetMethodID(usb_epDescClazz, "","()V"); - if (usb_epDescMid == NULL) { return NULL; } - - usb_epDescFID_bLength = env->GetFieldID(usb_epDescClazz, "bLength", "B"); - usb_epDescFID_bDescriptorType = env->GetFieldID(usb_epDescClazz, "bDescriptorType", "B"); - usb_epDescFID_bEndpointAddress = env->GetFieldID(usb_epDescClazz, "bEndpointAddress", "B"); - usb_epDescFID_bmAttributes = env->GetFieldID(usb_epDescClazz, "bmAttributes", "B"); - usb_epDescFID_wMaxPacketSize = env->GetFieldID(usb_epDescClazz, "wMaxPacketSize", "S"); - usb_epDescFID_bInterval = env->GetFieldID(usb_epDescClazz, "bInterval", "B"); - usb_epDescFID_bRefresh = env->GetFieldID(usb_epDescClazz, "bRefresh", "B"); - usb_epDescFID_bSynchAddress = env->GetFieldID(usb_epDescClazz, "bSynchAddress", "B"); - usb_epDescFID_extra = env->GetFieldID(usb_epDescClazz, "extra", "[B"); - usb_epDescFID_extralen = env->GetFieldID(usb_epDescClazz, "extralen", "I"); -#ifdef DEBUGON - printf("usb_get_busses: Field initialization done (1)\n"); -#endif - } - - //************************************************************************// - - struct usb_device *dev; - struct usb_bus *bus; - - busses = usb_get_busses(); - bus = busses; - if (!bus){ - return NULL; - } - - // objects - jobject main_usb_busObj, usb_busObj, usb_busObj_next, usb_busObj_prev, \ - main_usb_devObj, usb_devObj, usb_devObj_next, usb_devObj_prev, \ - usb_devDescObj, usb_confDescObj, usb_intObj, usb_intDescObj, \ - usb_epDescObj; - - jobjectArray usb_confDescObjArray, usb_intObjArray, usb_intDescObjArray, usb_epDescObjArray; - - usb_busObj = NULL; - usb_busObj_prev = NULL; - main_usb_busObj = NULL; - -#ifdef DEBUGON - printf("usb_get_busses: usb_get_busses done (2)\n"); -#endif - - while (bus){ -#ifdef DEBUGON - printf("\tusb_get_busses: bus %x (3)\n", bus); -#endif - - // create a new object for every bus - if (!usb_busObj) { - usb_busObj = env->NewObject(usb_busClazz, usb_busMid); - if (!usb_busObj) { - setLibusbJavaError("shared library error: Error NewObject (usb_busObj)"); - return NULL; - } - main_usb_busObj = usb_busObj; - } - - // fill the fields of the object - usb_busObj_next = NULL; - if (bus->next){ - usb_busObj_next = env->NewObject(usb_busClazz, usb_busMid); - if (!usb_busObj_next) { - setLibusbJavaError("shared library error: Error NewObject (usb_busObj_next)"); - return NULL; - } - } - env->SetObjectField(usb_busObj, usb_busFID_next, usb_busObj_next); - env->SetObjectField(usb_busObj, usb_busFID_prev, usb_busObj_prev); - env->SetObjectField(usb_busObj, usb_busFID_dirname, env->NewStringUTF(bus->dirname)); - env->SetLongField(usb_busObj, usb_busFID_location, bus->location); - - dev = bus->devices; - usb_devObj = NULL; - usb_devObj_prev = NULL; - main_usb_devObj = NULL; - - while (dev){ -#ifdef DEBUGON - printf("\tusb_get_busses: dev %x (4)\n", dev); -#endif - // create a new object for every device - if (!usb_devObj){ - usb_devObj = env->NewObject(usb_devClazz, usb_devMid); - if (!usb_devObj) { - setLibusbJavaError("shared library error: Error NewObject (usb_devObj)"); - return NULL; - } - main_usb_devObj = usb_devObj; - } - // fill the fields of the object - usb_devObj_next = NULL; - if (dev->next){ - usb_devObj_next = env->NewObject(usb_devClazz, usb_devMid); - if (!usb_devObj_next) { - setLibusbJavaError("shared library error: Error NewObject (usb_devObj_next)"); - return NULL; - } - } - env->SetObjectField(usb_devObj, usb_devFID_next, usb_devObj_next); - env->SetObjectField(usb_devObj, usb_devFID_prev, usb_devObj_prev); - env->SetObjectField(usb_devObj, usb_devFID_bus, usb_busObj); - env->SetObjectField(usb_devObj, usb_devFID_filename, env->NewStringUTF(dev->filename)); - env->SetByteField(usb_devObj, usb_devFID_devnum, dev->devnum); - env->SetByteField(usb_devObj, usb_devFID_num_children, dev->num_children); - env->SetLongField(usb_devObj, usb_devFID_devStructAddr, (jlong) dev); - - // device descriptor - usb_devDescObj = env->NewObject(usb_devDescClazz, usb_devDescMid); - if (!usb_devDescObj) { - setLibusbJavaError("shared library error: Error NewObject (usb_devDescObj)"); - return NULL; - } - env->SetByteField(usb_devDescObj, usb_devDescFID_bLength, dev->descriptor.bLength); - env->SetByteField(usb_devDescObj, usb_devDescFID_bDescriptorType, dev->descriptor.bDescriptorType); - env->SetShortField(usb_devDescObj, usb_devDescFID_bcdUSB, dev->descriptor.bcdUSB); - env->SetByteField(usb_devDescObj, usb_devDescFID_bDeviceClass, dev->descriptor.bDeviceClass); - env->SetByteField(usb_devDescObj, usb_devDescFID_bDeviceSubClass, dev->descriptor.bDeviceSubClass); - env->SetByteField(usb_devDescObj, usb_devDescFID_bDeviceProtocol, dev->descriptor.bDeviceProtocol); - env->SetByteField(usb_devDescObj, usb_devDescFID_bMaxPacketSize0, dev->descriptor.bMaxPacketSize0); - env->SetShortField(usb_devDescObj, usb_devDescFID_idVendor, dev->descriptor.idVendor); - env->SetShortField(usb_devDescObj, usb_devDescFID_idProduct, dev->descriptor.idProduct); - env->SetShortField(usb_devDescObj, usb_devDescFID_bcdDevice, dev->descriptor.bcdDevice); - env->SetByteField(usb_devDescObj, usb_devDescFID_iManufacturer, dev->descriptor.iManufacturer); - env->SetByteField(usb_devDescObj, usb_devDescFID_iProduct, dev->descriptor.iProduct); - env->SetByteField(usb_devDescObj, usb_devDescFID_iSerialNumber, dev->descriptor.iSerialNumber); - env->SetByteField(usb_devDescObj, usb_devDescFID_bNumConfigurations, dev->descriptor.bNumConfigurations); - - env->SetObjectField(usb_devObj, usb_devFID_descriptor, usb_devDescObj); - // configuration descriptor - // Loop through all of the configurations - usb_confDescObjArray = (jobjectArray) env->NewObjectArray(dev->descriptor.bNumConfigurations, usb_confDescClazz, NULL); - if (!usb_confDescObjArray) { - setLibusbJavaError("shared library error: Error NewObject 6"); - return NULL; - } - for (int c = 0; c < dev->descriptor.bNumConfigurations; c++){ -#ifdef DEBUGON - printf("\t\tusb_get_busses: configuration %x (5)\n", c); -#endif - if (dev->config == NULL) { - // this shouldn't happen, but it did occasionally (maybe this is (or probably was) a libusb bug) - setLibusbJavaError("shared library error: dev->config == NULL"); - return main_usb_busObj; - } - - usb_confDescObj = env->NewObject(usb_confDescClazz, usb_confDescMid); - if (!usb_confDescObj) { - setLibusbJavaError("shared library error: Error NewObject (usb_confDescObj)"); - return NULL; - } - env->SetObjectArrayElement(usb_confDescObjArray, c, usb_confDescObj); - env->SetByteField(usb_confDescObj, usb_confDescFID_bLength, dev->config[c].bLength); - env->SetByteField(usb_confDescObj, usb_confDescFID_bDescriptorType, dev->config[c].bDescriptorType); - env->SetShortField(usb_confDescObj, usb_confDescFID_wTotalLength, dev->config[c].wTotalLength); - env->SetByteField(usb_confDescObj, usb_confDescFID_bNumInterfaces, dev->config[c].bNumInterfaces); - env->SetByteField(usb_confDescObj, usb_confDescFID_bConfigurationValue, dev->config[c].bConfigurationValue); - env->SetByteField(usb_confDescObj, usb_confDescFID_iConfiguration, dev->config[c].iConfiguration); - env->SetByteField(usb_confDescObj, usb_confDescFID_bmAttributes, dev->config[c].bmAttributes); - env->SetByteField(usb_confDescObj, usb_confDescFID_MaxPower, dev->config[c].MaxPower); - env->SetIntField(usb_confDescObj, usb_confDescFID_extralen, dev->config[c].extralen); - if (dev->config[c].extra){ - jbyteArray jbExtraDesc = env->NewByteArray(dev->config[c].extralen); - env->SetByteArrayRegion(jbExtraDesc, 0, dev->config[c].extralen, (jbyte *) dev->config[c].extra); - env->SetObjectField(usb_confDescObj, usb_confDescFID_extra, jbExtraDesc); - } else { - env->SetObjectField(usb_confDescObj, usb_confDescFID_extra, NULL); - } - // interface - usb_intObjArray = (jobjectArray) env->NewObjectArray(dev->config[c].bNumInterfaces, usb_intClazz, NULL); - if (!usb_intObjArray) { - setLibusbJavaError("shared library error: Error NewObject (usb_intObjArray)"); - return NULL; - } - for (int i = 0; i < dev->config[c].bNumInterfaces; i++){ -#ifdef DEBUGON - printf("\t\t\tusb_get_busses: interface %x (6)\n", i); -#endif - if (dev->config[c].interface == NULL) { - // this shouldn't happen - printf("dev->config[c].interface == NULL"); - return main_usb_busObj; - } - - usb_intObj = env->NewObject(usb_intClazz, usb_intMid); - if (!usb_intObj) { - setLibusbJavaError("shared library error: Error NewObject (usb_intObj)"); - return NULL; - } - env->SetObjectArrayElement(usb_intObjArray, i, usb_intObj); - env->SetIntField(usb_intObj, usb_intFID_num_altsetting, dev->config[c].interface[i].num_altsetting); - // interface descriptor - usb_intDescObjArray = (jobjectArray) env->NewObjectArray(dev->config[c].interface[i].num_altsetting, usb_intDescClazz, NULL); - if (!usb_intDescObjArray) { - setLibusbJavaError("shared library error: Error NewObject (usb_intDescObjArray)"); - return NULL; - } - for (int a = 0; a < dev->config[c].interface[i].num_altsetting; a++){ -#ifdef DEBUGON - printf("\t\t\t\tusb_get_busses: interface descriptor %x (7)\n", a); -#endif - if (dev->config[c].interface[i].altsetting == NULL) { - // this shouldn't happen - printf("LibusbJava: usb_get_busses: dev->config[c].interface[i].altsetting == NULL\n"); - return main_usb_busObj; - } - - usb_intDescObj = env->NewObject(usb_intDescClazz, usb_intDescMid); - if (!usb_intDescObj) { - setLibusbJavaError("shared library error: Error NewObject (usb_intDescObj)"); - return NULL; - } - env->SetObjectArrayElement(usb_intDescObjArray, a, usb_intDescObj); - env->SetByteField(usb_intDescObj, usb_intDescFID_bLength, dev->config[c].interface[i].altsetting[a].bLength); - env->SetByteField(usb_intDescObj, usb_intDescFID_bDescriptorType, dev->config[c].interface[i].altsetting[a].bDescriptorType); - env->SetByteField(usb_intDescObj, usb_intDescFID_bInterfaceNumber, dev->config[c].interface[i].altsetting[a].bInterfaceNumber); - env->SetByteField(usb_intDescObj, usb_intDescFID_bAlternateSetting, dev->config[c].interface[i].altsetting[a].bAlternateSetting); - env->SetByteField(usb_intDescObj, usb_intDescFID_bNumEndpoints, dev->config[c].interface[i].altsetting[a].bNumEndpoints); - env->SetByteField(usb_intDescObj, usb_intDescFID_bInterfaceClass, dev->config[c].interface[i].altsetting[a].bInterfaceClass); - env->SetByteField(usb_intDescObj, usb_intDescFID_bInterfaceSubClass, dev->config[c].interface[i].altsetting[a].bInterfaceSubClass); - env->SetByteField(usb_intDescObj, usb_intDescFID_bInterfaceProtocol, dev->config[c].interface[i].altsetting[a].bInterfaceProtocol); - env->SetByteField(usb_intDescObj, usb_intDescFID_iInterface, dev->config[c].interface[i].altsetting[a].iInterface); - env->SetIntField(usb_intDescObj, usb_intDescFID_extralen, dev->config[c].interface[i].altsetting[a].extralen); - if (dev->config[c].interface[i].altsetting[a].extra){ - jbyteArray jbExtraDesc = env->NewByteArray(dev->config[c].interface[i].altsetting[a].extralen); - env->SetByteArrayRegion(jbExtraDesc, 0, dev->config[c].interface[i].altsetting[a].extralen, (jbyte *) dev->config[c].interface[i].altsetting[a].extra); - env->SetObjectField(usb_intDescObj, usb_intDescFID_extra, jbExtraDesc); - } else { - env->SetObjectField(usb_intDescObj, usb_intDescFID_extra, NULL); - } - // endpoint descriptor - usb_epDescObjArray = (jobjectArray) env->NewObjectArray(dev->config[c].interface[i].altsetting[a].bNumEndpoints, usb_epDescClazz, NULL); - if (!usb_epDescObjArray) { - setLibusbJavaError("shared library error: Error NewObject (usb_epDescObjArray)"); - return NULL; - } - for (int e = 0; e < dev->config[c].interface[i].altsetting[a].bNumEndpoints; e++){ -#ifdef DEBUGON - printf("\t\t\t\t\tusb_get_busses: endpoint descriptor %x (8)\n", e); -#endif - if (dev->config[c].interface[i].altsetting[a].endpoint == NULL) { - printf("LibusbJava: usb_get_busses: dev->config[c].interface[i].altsetting[a].endpoint == NULL\n"); - return main_usb_busObj; - } - - usb_epDescObj = env->NewObject(usb_epDescClazz, usb_epDescMid); - if (!usb_epDescObj) { - setLibusbJavaError("shared library error: Error NewObject (usb_epDescObj)"); - return NULL; - } - env->SetObjectArrayElement(usb_epDescObjArray, e, usb_epDescObj); - env->SetByteField(usb_epDescObj, usb_epDescFID_bLength, dev->config[c].interface[i].altsetting[a].endpoint[e].bLength); - env->SetByteField(usb_epDescObj, usb_epDescFID_bDescriptorType, dev->config[c].interface[i].altsetting[a].endpoint[e].bDescriptorType); - env->SetByteField(usb_epDescObj, usb_epDescFID_bEndpointAddress, dev->config[c].interface[i].altsetting[a].endpoint[e].bEndpointAddress); - env->SetByteField(usb_epDescObj, usb_epDescFID_bmAttributes, dev->config[c].interface[i].altsetting[a].endpoint[e].bmAttributes); - env->SetShortField(usb_epDescObj, usb_epDescFID_wMaxPacketSize, dev->config[c].interface[i].altsetting[a].endpoint[e].wMaxPacketSize); - env->SetByteField(usb_epDescObj, usb_epDescFID_bInterval, dev->config[c].interface[i].altsetting[a].endpoint[e].bInterval); - env->SetByteField(usb_epDescObj, usb_epDescFID_bRefresh, dev->config[c].interface[i].altsetting[a].endpoint[e].bRefresh); - env->SetByteField(usb_epDescObj, usb_epDescFID_bSynchAddress, dev->config[c].interface[i].altsetting[a].endpoint[e].bSynchAddress); - env->SetIntField(usb_epDescObj, usb_epDescFID_extralen, dev->config[c].interface[i].altsetting[a].endpoint[e].extralen); - if (dev->config[c].interface[i].altsetting[a].endpoint[e].extra){ - jbyteArray jbExtraDesc = env->NewByteArray(dev->config[c].interface[i].altsetting[a].endpoint[e].extralen); - env->SetByteArrayRegion(jbExtraDesc, 0, dev->config[c].interface[i].altsetting[a].endpoint[e].extralen, (jbyte *) dev->config[c].interface[i].altsetting[a].endpoint[e].extra); - env->SetObjectField(usb_epDescObj, usb_epDescFID_extra, jbExtraDesc); - } else { - env->SetObjectField(usb_epDescObj, usb_epDescFID_extra, NULL); - } - } - env->SetObjectField(usb_intDescObj, usb_intDescFID_endpoint, usb_epDescObjArray); - } - env->SetObjectField(usb_intObj, usb_intFID_altsetting, usb_intDescObjArray); - } - env->SetObjectField(usb_confDescObj, usb_confDescFID_interface_, usb_intObjArray); - } - - - env->SetObjectField(usb_devObj, usb_devFID_config, usb_confDescObjArray); - - usb_devObj_prev = usb_devObj; - usb_devObj = usb_devObj_next; - dev = dev->next; - } - env->SetObjectField(usb_busObj, usb_busFID_devices, main_usb_devObj); - env->SetObjectField(usb_busObj, usb_busFID_root_dev, main_usb_devObj); - - usb_busObj_prev = usb_busObj; - usb_busObj = usb_busObj_next; - bus = bus->next; - } - -#ifdef DEBUGON - printf("usb_get_busses: done\n"); -#endif - return main_usb_busObj; - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_open - * Signature: (Lch/ntb/usb/Usb_Device;)I - */ -JNIEXPORT jlong JNICALL Java_ch_ntb_usb_LibusbJava_usb_1open - (JNIEnv *env, jclass obj, jobject dev) - { - clearLibusbJavaError(); - if (busses == NULL) { - setLibusbJavaError("shared library error: busses is null"); - return 0; - } - - unsigned char devnum = env->GetByteField(dev, usb_devFID_devnum); - struct usb_device *usb_device_cmp; - jlong usb_device_cmp_addr = env->GetLongField(dev, usb_devFID_devStructAddr); - struct usb_bus *tmpBus; - - for (tmpBus = busses; tmpBus; tmpBus = tmpBus->next) { - struct usb_device *device; - for (device = tmpBus->devices; device; device = device->next) { - if ((jlong) device == usb_device_cmp_addr){ - return (jlong) usb_open(device); - } - } - } - setLibusbJavaError("shared library error: no device with dev.devnum found on busses"); - return 0; - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_close - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1close - (JNIEnv *env, jclass obj, jlong dev_handle) - { - clearLibusbJavaError(); - return (jint) usb_close((usb_dev_handle *) dev_handle); - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_set_configuration - * Signature: (II)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1set_1configuration - (JNIEnv *env, jclass obj, jlong dev_handle, jint configuration) - { - clearLibusbJavaError(); - return usb_set_configuration((usb_dev_handle *) dev_handle, configuration); - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_set_altinterface - * Signature: (II)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1set_1altinterface - (JNIEnv *env, jclass obj, jlong dev_handle, jint alternate) - { - clearLibusbJavaError(); - return usb_set_altinterface((usb_dev_handle *) dev_handle, alternate); - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_clear_halt - * Signature: (II)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1clear_1halt - (JNIEnv *env, jclass obj, jlong dev_handle, jint ep) - { - clearLibusbJavaError(); - return usb_clear_halt((usb_dev_handle *) dev_handle, (unsigned) ep); - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_reset - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1reset - (JNIEnv *env, jclass obj, jlong dev_handle) - { - clearLibusbJavaError(); - return usb_reset((usb_dev_handle *) dev_handle); - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_claim_interface - * Signature: (II)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1claim_1interface - (JNIEnv *env, jclass obj, jlong dev_handle, jint interface) - { - clearLibusbJavaError(); - return usb_claim_interface((usb_dev_handle *) dev_handle, interface); - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_release_interface - * Signature: (II)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1release_1interface - (JNIEnv *env, jclass obj, jlong dev_handle, jint interface) - { - clearLibusbJavaError(); - return usb_release_interface((usb_dev_handle *) dev_handle, interface); - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_control_msg - * Signature: (IIIII[BII)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1control_1msg - (JNIEnv *env, jclass obj, jlong dev_handle, jint requesttype, jint request, jint value, jint index, jbyteArray jbytes, jint size, jint timeout) - { - clearLibusbJavaError(); - jbyte *bytes = env->GetByteArrayElements(jbytes, NULL); - int num_bytes = usb_control_msg((usb_dev_handle *) dev_handle, requesttype, request, value, index, (char *) bytes, size, timeout); - env->SetByteArrayRegion(jbytes, 0, size, bytes); - env->ReleaseByteArrayElements(jbytes, bytes, 0); - return num_bytes; - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_get_string - * Signature: (III)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbJava_usb_1get_1string - (JNIEnv *env, jclass obj, jlong dev_handle, jint index, jint langid) - { - clearLibusbJavaError(); - char string[256]; - int retVal = usb_get_string((usb_dev_handle *) dev_handle, index, langid, string, 256); - if (retVal > 0) - return env->NewStringUTF(string); - return 0; - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_get_string_simple - * Signature: (II)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbJava_usb_1get_1string_1simple - (JNIEnv *env, jclass obj, jlong dev_handle, jint index) - { - clearLibusbJavaError(); - char string[256]; - int retVal = usb_get_string_simple((usb_dev_handle *) dev_handle, index, string, 256); - if (retVal > 0) - return env->NewStringUTF(string); - return 0; - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_get_descriptor - * Signature: (IBBI)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbJava_usb_1get_1descriptor - (JNIEnv *env, jclass obj, jlong dev_handle, jbyte type, jbyte index, jint size) - { - clearLibusbJavaError(); - char *string = (char *) malloc(size * sizeof(char)); - int retVal = usb_get_descriptor((usb_dev_handle *) dev_handle, (unsigned) type, - (unsigned) index, string, size); - if (retVal > 0) - return env->NewStringUTF(string); - return 0; - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_get_descriptor_by_endpoint - * Signature: (IIBBI)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbJava_usb_1get_1descriptor_1by_1endpoint - (JNIEnv *env, jclass obj, jlong dev_handle, jint ep, jbyte type, jbyte index, jint size) - { - clearLibusbJavaError(); - char *string = (char *) malloc(size * sizeof(char)); - int retVal = usb_get_descriptor_by_endpoint((usb_dev_handle *) dev_handle, ep, (unsigned) type, - (unsigned) index, string, size); - if (retVal > 0) - return env->NewStringUTF(string); - return 0; - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_bulk_write - * Signature: (II[BII)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1bulk_1write - (JNIEnv *env, jclass obj, jlong dev_handle, jint ep, jbyteArray jbytes, jint size, jint timeout) - { - clearLibusbJavaError(); - jbyte *bytes = env->GetByteArrayElements(jbytes, NULL); - int num_bytes = usb_bulk_write((usb_dev_handle *) dev_handle, ep, (char *) bytes, size, timeout); - env->ReleaseByteArrayElements(jbytes, bytes, 0); - return num_bytes; - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_bulk_read - * Signature: (II[BII)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1bulk_1read - (JNIEnv *env, jclass obj, jlong dev_handle, jint ep, jbyteArray jbytes, jint size, jint timeout) - { - clearLibusbJavaError(); - char *bytes = (char *) malloc(size * sizeof(char)); - int num_bytes = usb_bulk_read((usb_dev_handle *) dev_handle, ep, bytes, size, timeout); - if (!bytes) { return num_bytes; } - env->SetByteArrayRegion(jbytes, 0, size, (jbyte *) bytes); - free(bytes); - return num_bytes; - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_interrupt_write - * Signature: (II[BII)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1interrupt_1write - (JNIEnv *env, jclass obj, jlong dev_handle, jint ep, jbyteArray jbytes, jint size, jint timeout) - { - clearLibusbJavaError(); - jbyte *bytes = env->GetByteArrayElements(jbytes, NULL); - int num_bytes = usb_interrupt_write((usb_dev_handle *) dev_handle, ep, (char *) bytes, size, timeout); - env->ReleaseByteArrayElements(jbytes, bytes, 0); - return num_bytes; - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_interrupt_read - * Signature: (II[BII)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1interrupt_1read - (JNIEnv *env, jclass obj, jlong dev_handle, jint ep, jbyteArray jbytes, jint size, jint timeout) - { - clearLibusbJavaError(); - char *bytes = (char *) malloc(size * sizeof(char)); - int num_bytes = usb_interrupt_read((usb_dev_handle *) dev_handle, ep, bytes, size, timeout); - if (!bytes) { return num_bytes; } - env->SetByteArrayRegion(jbytes, 0, size, (jbyte *) bytes); - free(bytes); - return num_bytes; - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_strerror - * Signature: ()Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbJava_usb_1strerror - (JNIEnv *env, jclass obj){ - - char *str; - // check for LibusbJava specific errors first - if (libusbJavaError != NULL) { - str = libusbJavaError; - clearLibusbJavaError(); - } else { - str = usb_strerror(); - } - - return env->NewStringUTF(str); - } - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_error_no - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1error_1no - (JNIEnv *env, jclass obj, jint java_error_no){ - - switch (java_error_no) { - case 0: - return 0; - case 1: - return EBADF; - case 2: - return ENXIO; - case 3: - return EBUSY; - case 4: - return EINVAL; - case 5: - return ETIMEDOUT; - case 6: - return EIO; - case 7: - return ENOMEM; - default: - return 100000; - } -} diff --git a/LibusbJava/LibusbJava.h b/LibusbJava/LibusbJava.h deleted file mode 100644 index b1982cf..0000000 --- a/LibusbJava/LibusbJava.h +++ /dev/null @@ -1,205 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class ch_ntb_usb_LibusbJava */ - -#ifndef _Included_ch_ntb_usb_LibusbJava -#define _Included_ch_ntb_usb_LibusbJava -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_set_debug - * Signature: (I)V - */ -JNIEXPORT void JNICALL Java_ch_ntb_usb_LibusbJava_usb_1set_1debug - (JNIEnv *, jclass, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_init - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_ch_ntb_usb_LibusbJava_usb_1init - (JNIEnv *, jclass); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_find_busses - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1find_1busses - (JNIEnv *, jclass); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_find_devices - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1find_1devices - (JNIEnv *, jclass); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_get_busses - * Signature: ()Lch/ntb/usb/Usb_Bus; - */ -JNIEXPORT jobject JNICALL Java_ch_ntb_usb_LibusbJava_usb_1get_1busses - (JNIEnv *, jclass); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_open - * Signature: (Lch/ntb/usb/Usb_Device;)J - */ -JNIEXPORT jlong JNICALL Java_ch_ntb_usb_LibusbJava_usb_1open - (JNIEnv *, jclass, jobject); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_close - * Signature: (J)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1close - (JNIEnv *, jclass, jlong); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_set_configuration - * Signature: (JI)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1set_1configuration - (JNIEnv *, jclass, jlong, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_set_altinterface - * Signature: (JI)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1set_1altinterface - (JNIEnv *, jclass, jlong, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_clear_halt - * Signature: (JI)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1clear_1halt - (JNIEnv *, jclass, jlong, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_reset - * Signature: (J)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1reset - (JNIEnv *, jclass, jlong); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_claim_interface - * Signature: (JI)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1claim_1interface - (JNIEnv *, jclass, jlong, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_release_interface - * Signature: (JI)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1release_1interface - (JNIEnv *, jclass, jlong, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_control_msg - * Signature: (JIIII[BII)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1control_1msg - (JNIEnv *, jclass, jlong, jint, jint, jint, jint, jbyteArray, jint, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_get_string - * Signature: (JII)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbJava_usb_1get_1string - (JNIEnv *, jclass, jlong, jint, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_get_string_simple - * Signature: (JI)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbJava_usb_1get_1string_1simple - (JNIEnv *, jclass, jlong, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_get_descriptor - * Signature: (JBBI)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbJava_usb_1get_1descriptor - (JNIEnv *, jclass, jlong, jbyte, jbyte, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_get_descriptor_by_endpoint - * Signature: (JIBBI)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbJava_usb_1get_1descriptor_1by_1endpoint - (JNIEnv *, jclass, jlong, jint, jbyte, jbyte, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_bulk_write - * Signature: (JI[BII)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1bulk_1write - (JNIEnv *, jclass, jlong, jint, jbyteArray, jint, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_bulk_read - * Signature: (JI[BII)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1bulk_1read - (JNIEnv *, jclass, jlong, jint, jbyteArray, jint, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_interrupt_write - * Signature: (JI[BII)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1interrupt_1write - (JNIEnv *, jclass, jlong, jint, jbyteArray, jint, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_interrupt_read - * Signature: (JI[BII)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1interrupt_1read - (JNIEnv *, jclass, jlong, jint, jbyteArray, jint, jint); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_strerror - * Signature: ()Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbJava_usb_1strerror - (JNIEnv *, jclass); - -/* - * Class: ch_ntb_usb_LibusbJava - * Method: usb_error_no - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbJava_usb_1error_1no - (JNIEnv *, jclass, jint); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/LibusbJava/LibusbTest.cpp b/LibusbJava/LibusbTest.cpp deleted file mode 100644 index d4c14fd..0000000 --- a/LibusbJava/LibusbTest.cpp +++ /dev/null @@ -1,466 +0,0 @@ -/* - * testlibusb.c - * - * Test suite program - */ - -#include -#include -#include "usb.h" - -#define snprintf printf - -#define ID_PRODUCT 0x0200 -#define ID_VENDOR 0x8235 - -#define CONFIGURATION 1 -#define INTERFACE_ 0 -#define ALTINTERFACE 0 -#define TIMEOUT 5000 - -#define OUT_ENDPOINT 0x01 -#define IN_ENDPOINT 0x82 - -// #define SET_ALTINTERFACE_ONCE - -int verbose = 0; -unsigned char first = true; - -void print_endpoint(struct usb_endpoint_descriptor *endpoint) -{ - printf(" bEndpointAddress: %02xh\n", endpoint->bEndpointAddress); - printf(" bmAttributes: %02xh\n", endpoint->bmAttributes); - printf(" wMaxPacketSize: %d\n", endpoint->wMaxPacketSize); - printf(" bInterval: %d\n", endpoint->bInterval); - printf(" bRefresh: %d\n", endpoint->bRefresh); - printf(" bSynchAddress: %d\n", endpoint->bSynchAddress); -} - -void print_altsetting(struct usb_interface_descriptor *interface) -{ - int i; - - printf(" bInterfaceNumber: %d\n", interface->bInterfaceNumber); - printf(" bAlternateSetting: %d\n", interface->bAlternateSetting); - printf(" bNumEndpoints: %d\n", interface->bNumEndpoints); - printf(" bInterfaceClass: %d\n", interface->bInterfaceClass); - printf(" bInterfaceSubClass: %d\n", interface->bInterfaceSubClass); - printf(" bInterfaceProtocol: %d\n", interface->bInterfaceProtocol); - printf(" iInterface: %d\n", interface->iInterface); - - for (i = 0; i < interface->bNumEndpoints; i++) - print_endpoint(&interface->endpoint[i]); -} - -void print_interface(struct usb_interface *interface) -{ - int i; - - for (i = 0; i < interface->num_altsetting; i++) - print_altsetting(&interface->altsetting[i]); -} - -void print_configuration(struct usb_config_descriptor *config) -{ - int i; - - printf(" wTotalLength: %d\n", config->wTotalLength); - printf(" bNumInterfaces: %d\n", config->bNumInterfaces); - printf(" bConfigurationValue: %d\n", config->bConfigurationValue); - printf(" iConfiguration: %d\n", config->iConfiguration); - printf(" bmAttributes: %02xh\n", config->bmAttributes); - printf(" MaxPower: %d\n", config->MaxPower); - - for (i = 0; i < config->bNumInterfaces; i++) - print_interface(&config->interface[i]); -} - -int print_device(struct usb_device *dev, int level) -{ - usb_dev_handle *udev; - char description[256]; - char string[256]; - int ret, i; - - udev = usb_open(dev); - if (udev) { - if (dev->descriptor.iManufacturer) { - ret = usb_get_string_simple(udev, dev->descriptor.iManufacturer, string, sizeof(string)); - if (ret > 0) - snprintf(description, sizeof(description), "%s - ", string); - else - snprintf(description, sizeof(description), "%04X - ", - dev->descriptor.idVendor); - } else - snprintf(description, sizeof(description), "%04X - ", - dev->descriptor.idVendor); - - if (dev->descriptor.iProduct) { - ret = usb_get_string_simple(udev, dev->descriptor.iProduct, string, sizeof(string)); - if (ret > 0) - snprintf(description + strlen(description), sizeof(description) - - strlen(description), "%s", string); - else - snprintf(description + strlen(description), sizeof(description) - - strlen(description), "%04X", dev->descriptor.idProduct); - } else - snprintf(description + strlen(description), sizeof(description) - - strlen(description), "%04X", dev->descriptor.idProduct); - - } else - snprintf(description, sizeof(description), "%04X - %04X", - dev->descriptor.idVendor, dev->descriptor.idProduct); - - printf("%.*sDev #%d: %s\n", level * 2, " ", dev->devnum, - description); - - if (udev && verbose) { - if (dev->descriptor.iSerialNumber) { - ret = usb_get_string_simple(udev, dev->descriptor.iSerialNumber, string, sizeof(string)); - if (ret > 0) - printf("%.*s - Serial Number: %s\n", level * 2, - " ", string); - } - } - - if (udev) - usb_close(udev); - - if (verbose) { - if (!dev->config) { - printf(" Couldn't retrieve descriptors\n"); - return 0; - } - - for (i = 0; i < dev->descriptor.bNumConfigurations; i++) - print_configuration(&dev->config[i]); - } else { - for (i = 0; i < dev->num_children; i++) - print_device(dev->children[i], level + 1); - } - - return 0; -} - -int read(struct usb_dev_handle *handle) -{ - if (usb_claim_interface(handle, INTERFACE_) < 0) { - printf("error on usb_claim_interface: %s\n", usb_strerror()); - return -1; - } - printf("usb_claim_interface successful\n"); -#ifdef SET_ALTINTERFACE_ONCE - if (first) { - first = false; -#endif - if (usb_set_altinterface(handle, ALTINTERFACE) < 0){ - printf("usb_set_altinterface failed: %s\n", usb_strerror()); - } -#ifdef SET_ALTINTERFACE_ONCE - } -#endif - - int size = 512, res; - char *data = (char *) malloc(size*sizeof(char)); - res = usb_bulk_read(handle, IN_ENDPOINT, data, size, TIMEOUT); - if (res < 0){ - printf("usb_bulk_read failed: %s\n", usb_strerror()); - } - printf("usb_bulk_read: %d bytes read: ", res); - for (int i = 0; i < res; ++i) { - printf("%3x ", data[i]); - } - printf("\n"); - - usb_release_interface(handle, INTERFACE_); - free(data); -} - -int write(struct usb_dev_handle *handle) -{ - int size = 12; - char *data = (char *) malloc(size*sizeof(char)); - data[0] = 0x33; - data[1] = 0x5B; - data[2] = 0x02; - data[3] = 0x01; - data[4] = 0x00; - data[5] = 0x05; - data[6] = 0x01; - data[7] = 0x03; - data[8] = 0x07; - data[9] = 0x0F; - data[10] = 0x7F; - data[11] = 0x1F; - // data = {0x33, 0x5B, 0x02, 0x01, 0x00, 0x05, 0x01, 0x03, 0x07, 0x0F, 0x7F, 0x1F}; - - if (usb_claim_interface(handle, INTERFACE_) < 0) { - printf("error on usb_claim_interface: %s\n", usb_strerror()); - return -1; - } - printf("usb_claim_interface successful\n"); -#ifdef SET_ALTINTERFACE_ONCE - if (first) { - first = false; -#endif - if (usb_set_altinterface(handle, ALTINTERFACE) < 0){ - printf("usb_set_altinterface failed: %s\n", usb_strerror()); - } -#ifdef SET_ALTINTERFACE_ONCE - } -#endif - - printf("usb_bulk_write: writing %d bytes: ", size); - for (int i = 0; i < size; ++i) { - printf("%3x ", data[i]); - } - printf("\n"); - - int res = usb_bulk_write(handle, OUT_ENDPOINT, data, size, TIMEOUT); - if (res < 0){ - printf("usb_bulk_write failed: %s\n", usb_strerror()); - return -1; - } - - printf("usb_bulk_write: %d bytes written\n", res); - - usb_release_interface(handle, INTERFACE_); - free(data); -} - -int readWrite(struct usb_dev_handle *handle) -{ - - int size = 512; - char *data = (char *) malloc(size*sizeof(char)); - - printf("type a string...\n"); - scanf("%s", data); // Get a string - - if (usb_claim_interface(handle, INTERFACE_) < 0) { - printf("error on usb_claim_interface: %s\n", usb_strerror()); - system("PAUSE"); - return -1; - } - printf("usb_claim_interface successful\n"); -#ifdef SET_ALTINTERFACE_ONCE - if (first) { - first = false; -#endif - if (usb_set_altinterface(handle, ALTINTERFACE) < 0){ - printf("usb_set_altinterface failed: %s\n", usb_strerror()); - } -#ifdef SET_ALTINTERFACE_ONCE - } -#endif - - if (usb_bulk_write(handle, OUT_ENDPOINT, data, strlen(data), 3000) < 0){ - printf("usb_bulk_write failed: %s\n", usb_strerror()); - system("PAUSE"); - return -1; - } - - strcpy(data, "12345678901234567890"); - printf("%s\n", "read data"); - if (usb_bulk_read(handle, IN_ENDPOINT, data, size, 3000) < 0){ - printf("usb_bulk_read failed: %s\n", usb_strerror()); - } - printf("output %d, %s\n", size, data); -// for (int i = 0; i < size; ++i) { -// printf("%4x ", data[i]); -// } - - usb_release_interface(handle, INTERFACE_); - free(data); -} - -int readWriteLoop(struct usb_dev_handle *handle) -{ - int NOF_LOOPS = 20; - int size = 12; - char *data = (char *) malloc(size*sizeof(char)); - data[0] = 0x33; - data[1] = 0x5B; - data[2] = 0x02; - data[3] = 0x01; - data[4] = 0x00; - data[5] = 0x05; - data[6] = 0x01; - data[7] = 0x03; - data[8] = 0x07; - data[9] = 0x0F; - data[10] = 0x7F; - data[11] = 0x1F; - // data = {0x33, 0x5B, 0x02, 0x01, 0x00, 0x05, 0x01, 0x03, 0x07, 0x0F, 0x7F, 0x1F}; - - if (usb_claim_interface(handle, INTERFACE_) < 0) { - printf("error on usb_claim_interface: %s\n", usb_strerror()); - return -1; - } - printf("usb_claim_interface successful\n"); -#ifdef SET_ALTINTERFACE_ONCE - if (first) { - first = false; -#endif - if (usb_set_altinterface(handle, ALTINTERFACE) < 0){ - printf("usb_set_altinterface failed: %s\n", usb_strerror()); - } -#ifdef SET_ALTINTERFACE_ONCE - } -#endif - - printf("usb_bulk_write: writing %d bytes: ", size); - for (int i = 0; i < size; ++i) { - printf("%3x ", data[i]); - } - printf("\n------------------------\n"); - - for (int var = 0; var < NOF_LOOPS; ++var) { - - int res = usb_bulk_write(handle, OUT_ENDPOINT, data, size, TIMEOUT); - if (res < 0){ - printf("usb_bulk_write failed: %s\n", usb_strerror()); - return -1; - } - - printf("usb_bulk_write: %d bytes written\n", res); - - int size = 64; - char *data = (char *) malloc(size*sizeof(char)); - res = usb_bulk_read(handle, IN_ENDPOINT, data, size, TIMEOUT); - if (res < 0){ - printf("usb_bulk_read failed: %s\n", usb_strerror()); - } - printf("usb_bulk_read: %d bytes read: ", res); - for (int i = 0; i < res; ++i) { - printf("%3x ", data[i]); - } - printf("\n"); - } - - usb_release_interface(handle, INTERFACE_); - free(data); -} - -void logDevices() -{ - struct usb_bus *bus; - - printf("log devices...\n"); - for (bus = usb_get_busses(); bus; bus = bus->next) { - if (bus->root_dev && !verbose) - print_device(bus->root_dev, 0); - else { - struct usb_device *dev; - - for (dev = bus->devices; dev; dev = dev->next) - print_device(dev, 0); - } - } -} - -int main(int argc, char *argv[]) -{ - struct usb_bus *bus; - struct usb_device *dev; - struct usb_dev_handle *handle; - - bool run = true; - - if (argc > 1 && !strcmp(argv[1], "-v")) - verbose = 1; - - usb_set_debug(255); - - printf("initialize libraray, find busses and devices\n"); - usb_init(); - - usb_find_busses(); - usb_find_devices(); - - if (verbose) - logDevices(); - - int size = 512; - char *data = (char *) malloc(size*sizeof(char)); - - printf("Search for device with idVendor 0x%x and idProduct 0x%x\n", ID_VENDOR, ID_PRODUCT); - for (bus = usb_get_busses(); bus; bus = bus->next) { - if (verbose) - printf("Found bus %s\n", bus->dirname); - for (dev = bus->devices; dev; dev = dev->next) { - if (verbose) - printf("Found device with idVendor 0x%x and idProduct 0x%x\n", dev->descriptor.idVendor, dev->descriptor.idProduct); - if ((dev->descriptor.idProduct == ID_PRODUCT) && (dev->descriptor.idVendor == ID_VENDOR)){ - printf("Device found -> open\n"); - handle = usb_open(dev); - if (!handle) { - printf("invalid handle: %s\n", usb_strerror()); - system("PAUSE"); - return -1; - } - printf("Set configuration\n"); - if (usb_set_configuration(handle, CONFIGURATION) < 0) { - printf("error on usb_set_configuration: %s\n", usb_strerror()); - system("PAUSE"); - return -1; - } - - printf("Set altinterface (must failed)\n"); -#ifdef SET_ALTINTERFACE_ONCE - if (first) { - first = false; -#endif - if (usb_set_altinterface(handle, ALTINTERFACE) < 0){ - printf("usb_set_altinterface failed: %s\n", usb_strerror()); - } -#ifdef SET_ALTINTERFACE_ONCE - } -#endif - - printf("w=write, r=read, x=exit, t=write+read, u=write+read(2), l=r/w loop, z=reset and open\n"); - - while (run) { - scanf("%s", data); - - switch (data[0]) { - case 'w': // write - write(handle); - break; - case 'r': // read - read(handle); - break; - case 'x': // exit - run = false; - break; - case 't': // write + read - if (write(handle)) { - read(handle); - } - break; - case 'u': // write + read - readWrite(handle); - break; - case 'l': // loop - readWriteLoop(handle); - break; - case 's': // reset first flag (set_altinterface()) - first = true; - break; - case 'z': // reset and open - usb_reset(handle); - handle = usb_open(dev); - break; - default: - break; - } - } - printf("\ndone\n"); - } - } - } - free(data); - system("PAUSE"); - - return 1; -} diff --git a/LibusbJava/build.xml b/LibusbJava/build.xml deleted file mode 100644 index eba4149..0000000 --- a/LibusbJava/build.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - Build file for LibusbJava Shared Library - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/LibusbJava/common.rc b/LibusbJava/common.rc deleted file mode 100644 index b15e284..0000000 --- a/LibusbJava/common.rc +++ /dev/null @@ -1,35 +0,0 @@ -#include - -#define RT_MANIFEST 24 -#define ID_MANIFEST 1 - -VS_VERSION_INFO VERSIONINFO -FILEVERSION RC_VERSION -PRODUCTVERSION RC_VERSION -FILEFLAGSMASK 0x3FL -FILEFLAGS 0x0L -FILEOS VOS_NT_WINDOWS32 -FILETYPE RC_FILE_TYPE -FILESUBTYPE RC_FILE_SUB_TYPE -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "CompanyName", "http://libusbjava.sourceforge.net" - VALUE "FileDescription", RC_PRODUCT_STR - VALUE "FileVersion", RC_VERSION_STR - VALUE "InternalName", RC_FILE_NAME_STR - VALUE "LegalCopyright", "2008 spandi@users.sourceforge.net" - VALUE "OriginalFilename",RC_FILE_NAME_STR - VALUE "ProductName", RC_PRODUCT_STR - VALUE "ProductVersion", RC_VERSION_STR - END - END - - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - diff --git a/LibusbJava/error.h b/LibusbJava/error.h deleted file mode 100644 index a9b600c..0000000 --- a/LibusbJava/error.h +++ /dev/null @@ -1,23 +0,0 @@ -// copied from libusb-win32.sourceforge.net -#ifndef __ERROR_H__ -#define __ERROR_H__ - -/* Connection timed out */ -#define ETIMEDOUT 116 - -typedef enum { - USB_ERROR_TYPE_NONE = 0, - USB_ERROR_TYPE_STRING, - USB_ERROR_TYPE_ERRNO, -} usb_error_type_t; - - -void usb_error(char *format, ...); -void usb_message(char *format, ...); -const char *usb_win_error_to_string(void); -int usb_win_error_to_errno(void); - - - -#endif /* _ERROR_H_ */ - diff --git a/LibusbJava/libusb.a b/LibusbJava/libusb.a deleted file mode 100644 index 7a0cc46..0000000 Binary files a/LibusbJava/libusb.a and /dev/null differ diff --git a/LibusbJava/project.properties b/LibusbJava/project.properties deleted file mode 100644 index d84b4ae..0000000 --- a/LibusbJava/project.properties +++ /dev/null @@ -1,54 +0,0 @@ -############################ -# common build properties # -############################ -# folders -build.dir.src=src -build.dir.bin=bin - -# filenames -build.lib.libusb=libusb.a -build.lib.libusbpp=libusbpp.a -build.linux.lib.libusb=libusb.so -build.linux.lib.libusbpp=libusbpp.so -build.mac.lib.libusb=libusb.dylib -build.mac.lib.libusbpp=libusbpp.dylib -build.shlib.srcname=LibusbJava.cpp -build.shlib.win.shlibname=LibusbJava.dll -build.shlib.linux.shlibname=libusbJava.so -build.shlib.mac.shlibname=libusbJava.jnilib - -build.test.srcname=LibusbTest -build.test.execname=LibusbTest - -##################################### -# Windows specific build properties # -##################################### -build.win.compiler=g++ -build.win.windres=windres -build.win.resource.rc=resource.rc -build.win.resource.obj=resource.o - -#################################### -# Linux specific build properties # -#################################### -build.linux.compiler=g++ -build.linux.includes=/usr/lib -build.linux.includes2=${build.linux.includes} -build.linux.includes3=${build.linux.includes} - -## set the following properties if you require additional include paths -# -## e.g. on ubuntu linux (with gcj) -# build.linux.includes2=/usr/lib/jvm/java-1.4.2.gcj-4.1-1.4.2.0/include -# -## e.g. on ubuntu linux (with jdk 6) use -# build.linux.includes2=/usr/lib/jvm/java-6-sun-1.6.0.00/include -# build.linux.includes3=${build.linux.includes2}/linux - -#################################### -# Mac specific build properties # -#################################### -build.mac.compiler=gcc -build.mac.jni=/System/Library/Frameworks/JavaVM.framework/Headers/ -build.mac.includes=/usr/local/lib -build.mac.stdclib=stdc++ diff --git a/LibusbJava/resource.rc b/LibusbJava/resource.rc deleted file mode 100644 index ed5bed5..0000000 --- a/LibusbJava/resource.rc +++ /dev/null @@ -1,7 +0,0 @@ -#define RC_FILE_TYPE VFT_DLL -#define RC_FILE_SUB_TYPE VFT2_UNKNOWN -#define RC_PRODUCT_STR "Java LibUsb-Win32 wrapper - DLL" -#define RC_FILE_NAME_STR "LibusbJava.dll" -#define RC_VERSION_STR "0.2.4.0" - -#include "common.rc" diff --git a/LibusbJava/usb.h b/LibusbJava/usb.h deleted file mode 100644 index 4f814df..0000000 --- a/LibusbJava/usb.h +++ /dev/null @@ -1,394 +0,0 @@ -#ifndef __USB_H__ -#define __USB_H__ - -#include -#include - -/* - * 'interface' is defined somewhere in the Windows header files. This macro - * is deleted here to avoid conflicts and compile errors. - */ - -#ifdef interface -#undef interface -#endif - -/* - * PATH_MAX from limits.h can't be used on Windows if the dll and - * import libraries are build/used by different compilers - */ - -#define LIBUSB_PATH_MAX 512 - - -/* - * USB spec information - * - * This is all stuff grabbed from various USB specs and is pretty much - * not subject to change - */ - -/* - * Device and/or Interface Class codes - */ -#define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */ -#define USB_CLASS_AUDIO 1 -#define USB_CLASS_COMM 2 -#define USB_CLASS_HID 3 -#define USB_CLASS_PRINTER 7 -#define USB_CLASS_MASS_STORAGE 8 -#define USB_CLASS_HUB 9 -#define USB_CLASS_DATA 10 -#define USB_CLASS_VENDOR_SPEC 0xff - -/* - * Descriptor types - */ -#define USB_DT_DEVICE 0x01 -#define USB_DT_CONFIG 0x02 -#define USB_DT_STRING 0x03 -#define USB_DT_INTERFACE 0x04 -#define USB_DT_ENDPOINT 0x05 - -#define USB_DT_HID 0x21 -#define USB_DT_REPORT 0x22 -#define USB_DT_PHYSICAL 0x23 -#define USB_DT_HUB 0x29 - -/* - * Descriptor sizes per descriptor type - */ -#define USB_DT_DEVICE_SIZE 18 -#define USB_DT_CONFIG_SIZE 9 -#define USB_DT_INTERFACE_SIZE 9 -#define USB_DT_ENDPOINT_SIZE 7 -#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */ -#define USB_DT_HUB_NONVAR_SIZE 7 - - -/* ensure byte-packed structures */ -#include - - -/* All standard descriptors have these 2 fields in common */ -struct usb_descriptor_header { - unsigned char bLength; - unsigned char bDescriptorType; -}; - -/* String descriptor */ -struct usb_string_descriptor { - unsigned char bLength; - unsigned char bDescriptorType; - unsigned short wData[1]; -}; - -/* HID descriptor */ -struct usb_hid_descriptor { - unsigned char bLength; - unsigned char bDescriptorType; - unsigned short bcdHID; - unsigned char bCountryCode; - unsigned char bNumDescriptors; -}; - -/* Endpoint descriptor */ -#define USB_MAXENDPOINTS 32 -struct usb_endpoint_descriptor { - unsigned char bLength; - unsigned char bDescriptorType; - unsigned char bEndpointAddress; - unsigned char bmAttributes; - unsigned short wMaxPacketSize; - unsigned char bInterval; - unsigned char bRefresh; - unsigned char bSynchAddress; - - unsigned char *extra; /* Extra descriptors */ - int extralen; -}; - -#define USB_ENDPOINT_ADDRESS_MASK 0x0f /* in bEndpointAddress */ -#define USB_ENDPOINT_DIR_MASK 0x80 - -#define USB_ENDPOINT_TYPE_MASK 0x03 /* in bmAttributes */ -#define USB_ENDPOINT_TYPE_CONTROL 0 -#define USB_ENDPOINT_TYPE_ISOCHRONOUS 1 -#define USB_ENDPOINT_TYPE_BULK 2 -#define USB_ENDPOINT_TYPE_INTERRUPT 3 - -/* Interface descriptor */ -#define USB_MAXINTERFACES 32 -struct usb_interface_descriptor { - unsigned char bLength; - unsigned char bDescriptorType; - unsigned char bInterfaceNumber; - unsigned char bAlternateSetting; - unsigned char bNumEndpoints; - unsigned char bInterfaceClass; - unsigned char bInterfaceSubClass; - unsigned char bInterfaceProtocol; - unsigned char iInterface; - - struct usb_endpoint_descriptor *endpoint; - - unsigned char *extra; /* Extra descriptors */ - int extralen; -}; - -#define USB_MAXALTSETTING 128 /* Hard limit */ - -struct usb_interface { - struct usb_interface_descriptor *altsetting; - - int num_altsetting; -}; - -/* Configuration descriptor information.. */ -#define USB_MAXCONFIG 8 -struct usb_config_descriptor { - unsigned char bLength; - unsigned char bDescriptorType; - unsigned short wTotalLength; - unsigned char bNumInterfaces; - unsigned char bConfigurationValue; - unsigned char iConfiguration; - unsigned char bmAttributes; - unsigned char MaxPower; - - struct usb_interface *interface; - - unsigned char *extra; /* Extra descriptors */ - int extralen; -}; - -/* Device descriptor */ -struct usb_device_descriptor { - unsigned char bLength; - unsigned char bDescriptorType; - unsigned short bcdUSB; - unsigned char bDeviceClass; - unsigned char bDeviceSubClass; - unsigned char bDeviceProtocol; - unsigned char bMaxPacketSize0; - unsigned short idVendor; - unsigned short idProduct; - unsigned short bcdDevice; - unsigned char iManufacturer; - unsigned char iProduct; - unsigned char iSerialNumber; - unsigned char bNumConfigurations; -}; - -struct usb_ctrl_setup { - unsigned char bRequestType; - unsigned char bRequest; - unsigned short wValue; - unsigned short wIndex; - unsigned short wLength; -}; - -/* - * Standard requests - */ -#define USB_REQ_GET_STATUS 0x00 -#define USB_REQ_CLEAR_FEATURE 0x01 -/* 0x02 is reserved */ -#define USB_REQ_SET_FEATURE 0x03 -/* 0x04 is reserved */ -#define USB_REQ_SET_ADDRESS 0x05 -#define USB_REQ_GET_DESCRIPTOR 0x06 -#define USB_REQ_SET_DESCRIPTOR 0x07 -#define USB_REQ_GET_CONFIGURATION 0x08 -#define USB_REQ_SET_CONFIGURATION 0x09 -#define USB_REQ_GET_INTERFACE 0x0A -#define USB_REQ_SET_INTERFACE 0x0B -#define USB_REQ_SYNCH_FRAME 0x0C - -#define USB_TYPE_STANDARD (0x00 << 5) -#define USB_TYPE_CLASS (0x01 << 5) -#define USB_TYPE_VENDOR (0x02 << 5) -#define USB_TYPE_RESERVED (0x03 << 5) - -#define USB_RECIP_DEVICE 0x00 -#define USB_RECIP_INTERFACE 0x01 -#define USB_RECIP_ENDPOINT 0x02 -#define USB_RECIP_OTHER 0x03 - -/* - * Various libusb API related stuff - */ - -#define USB_ENDPOINT_IN 0x80 -#define USB_ENDPOINT_OUT 0x00 - -/* Error codes */ -#define USB_ERROR_BEGIN 500000 - -/* - * This is supposed to look weird. This file is generated from autoconf - * and I didn't want to make this too complicated. - */ -#define USB_LE16_TO_CPU(x) - -/* Data types */ -/* struct usb_device; */ -/* struct usb_bus; */ - -struct usb_device { - struct usb_device *next, *prev; - - char filename[LIBUSB_PATH_MAX]; - - struct usb_bus *bus; - - struct usb_device_descriptor descriptor; - struct usb_config_descriptor *config; - - void *dev; /* Darwin support */ - - unsigned char devnum; - - unsigned char num_children; - struct usb_device **children; -}; - -struct usb_bus { - struct usb_bus *next, *prev; - - char dirname[LIBUSB_PATH_MAX]; - - struct usb_device *devices; - unsigned long location; - - struct usb_device *root_dev; -}; - -/* Version information, Windows specific */ -struct usb_version { - struct { - int major; - int minor; - int micro; - int nano; - } dll; - struct { - int major; - int minor; - int micro; - int nano; - } driver; -}; - - -struct usb_dev_handle; -typedef struct usb_dev_handle usb_dev_handle; - -/* Variables */ -#ifndef __USB_C__ -#define usb_busses usb_get_busses() -#endif - - - -#include - - -#ifdef __cplusplus -extern "C" { -#endif - - /* Function prototypes */ - - /* usb.c */ - usb_dev_handle *usb_open(struct usb_device *dev); - int usb_close(usb_dev_handle *dev); - int usb_get_string(usb_dev_handle *dev, int index, int langid, char *buf, - size_t buflen); - int usb_get_string_simple(usb_dev_handle *dev, int index, char *buf, - size_t buflen); - - /* descriptors.c */ - int usb_get_descriptor_by_endpoint(usb_dev_handle *udev, int ep, - unsigned char type, unsigned char index, - void *buf, int size); - int usb_get_descriptor(usb_dev_handle *udev, unsigned char type, - unsigned char index, void *buf, int size); - - /* .c */ - int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, - int timeout); - int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, - int timeout); - int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size, - int timeout); - int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, - int timeout); - int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, - int value, int index, char *bytes, int size, - int timeout); - int usb_set_configuration(usb_dev_handle *dev, int configuration); - int usb_claim_interface(usb_dev_handle *dev, int interface); - int usb_release_interface(usb_dev_handle *dev, int interface); - int usb_set_altinterface(usb_dev_handle *dev, int alternate); - int usb_resetep(usb_dev_handle *dev, unsigned int ep); - int usb_clear_halt(usb_dev_handle *dev, unsigned int ep); - int usb_reset(usb_dev_handle *dev); - - char *usb_strerror(void); - - void usb_init(void); - void usb_set_debug(int level); - int usb_find_busses(void); - int usb_find_devices(void); - struct usb_device *usb_device(usb_dev_handle *dev); - struct usb_bus *usb_get_busses(void); - - - /* Windows specific functions */ - - #define LIBUSB_HAS_INSTALL_SERVICE_NP 1 - int usb_install_service_np(void); - void CALLBACK usb_install_service_np_rundll(HWND wnd, HINSTANCE instance, - LPSTR cmd_line, int cmd_show); - - #define LIBUSB_HAS_UNINSTALL_SERVICE_NP 1 - int usb_uninstall_service_np(void); - void CALLBACK usb_uninstall_service_np_rundll(HWND wnd, HINSTANCE instance, - LPSTR cmd_line, int cmd_show); - - #define LIBUSB_HAS_INSTALL_DRIVER_NP 1 - int usb_install_driver_np(const char *inf_file); - void CALLBACK usb_install_driver_np_rundll(HWND wnd, HINSTANCE instance, - LPSTR cmd_line, int cmd_show); - - #define LIBUSB_HAS_TOUCH_INF_FILE_NP 1 - int usb_touch_inf_file_np(const char *inf_file); - void CALLBACK usb_touch_inf_file_np_rundll(HWND wnd, HINSTANCE instance, - LPSTR cmd_line, int cmd_show); - - #define LIBUSB_HAS_INSTALL_NEEDS_RESTART_NP 1 - int usb_install_needs_restart_np(void); - - const struct usb_version *usb_get_version(void); - - int usb_isochronous_setup_async(usb_dev_handle *dev, void **context, - unsigned char ep, int pktsize); - int usb_bulk_setup_async(usb_dev_handle *dev, void **context, - unsigned char ep); - int usb_interrupt_setup_async(usb_dev_handle *dev, void **context, - unsigned char ep); - - int usb_submit_async(void *context, char *bytes, int size); - int usb_reap_async(void *context, int timeout); - int usb_reap_async_nocancel(void *context, int timeout); - int usb_cancel_async(void *context); - int usb_free_async(void **context); - - -#ifdef __cplusplus -} -#endif - -#endif /* __USB_H__ */ - diff --git a/LibusbJava/version.properties b/LibusbJava/version.properties deleted file mode 100644 index 52e5578..0000000 --- a/LibusbJava/version.properties +++ /dev/null @@ -1,5 +0,0 @@ -# NOTE: if the version is changed -> change the define in resource.rc -version.major=0 -version.minor=2 -version.micro=4 -version.nano=0 \ No newline at end of file diff --git a/java/.classpath b/java/.classpath deleted file mode 100644 index 4eb8e08..0000000 --- a/java/.classpath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/java/.project b/java/.project deleted file mode 100644 index 88c62bc..0000000 --- a/java/.project +++ /dev/null @@ -1,30 +0,0 @@ - - - ch.ntb.usb - - - - - - org.eclipse.jdt.core.javabuilder - - - - - 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.ui.prefs b/java/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 1b61afb..0000000 --- a/java/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Oct 06 09:12:32 CEST 2005 -eclipse.preferences.version=1 -internal.default.compliance=default diff --git a/java/LGPL.txt b/java/LGPL.txt deleted file mode 100644 index 5faba9d..0000000 --- a/java/LGPL.txt +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/java/META-INF/MANIFEST.MF b/java/META-INF/MANIFEST.MF deleted file mode 100644 index c3b6940..0000000 --- a/java/META-INF/MANIFEST.MF +++ /dev/null @@ -1,9 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Java libusb wrapper -Bundle-SymbolicName: ch.ntb.usb -Bundle-Version: 1.0.2 -Bundle-Vendor: libusbjava.sourceforge.net -Require-Bundle: org.junit4 -Export-Package: ch.ntb.usb -Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/java/README.txt b/java/README.txt deleted file mode 100644 index c5dc21f..0000000 --- a/java/README.txt +++ /dev/null @@ -1,27 +0,0 @@ -Project description -------------------- -Java libusb wrapper is a Java wrapper for the libsub and libusb-win32 USB library. -* libusb aim is to create a library for use by user level applications to access USB devices regardless of OS. -* libusb-win32 is a port of the libusb library to the Windows operating systems. The library allows user space applications to access any USB device on Windows in a generic way without writing any line of kernel driver code. - -For more information about libusb visit: - http://libusb.sourceforge.net/ - -For more information about LibUsb-Win32 visit: - http://libusb-win32.sourceforge.net - http://sourceforge.net/projects/libusb-win32 - -For more information about Java LibUsb-Win32 wrapper visit: - http://libusbjava.sourceforge.net - http://sourceforge.net/projects/libusbjava - -License -------- -The Java libusb wrapper library is released under the LGPL. See LGPL.txt -for more information. -For licensing information about libusb see http://sourceforge.net/projects/libusb/. -For licensing information about LibUsb-Win32 see http://libusb-win32.sourceforge.net/#license. - -Authors -------- -Andreas Schläpfer diff --git a/java/build.properties b/java/build.properties deleted file mode 100644 index c7069a0..0000000 --- a/java/build.properties +++ /dev/null @@ -1,4 +0,0 @@ -source.. = src/,\ - test/ -bin.includes = META-INF/,\ - . diff --git a/java/build.xml b/java/build.xml deleted file mode 100644 index 20fe9d7..0000000 --- a/java/build.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - Ant tasks for ch.ntb.usb - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Building Version ${version.major}.${version.minor}.${version.release} - - - - - - - - - - -
- - - -
-
-
- - -
- - - - - - -
diff --git a/java/deployment.properties b/java/deployment.properties deleted file mode 100644 index 148931a..0000000 --- a/java/deployment.properties +++ /dev/null @@ -1,8 +0,0 @@ -java2html.dir.lib=D:/MyDocuments/Download/Programming/java2html -java2html.dir.src=test/ch/ntb/usb/demo/ - -project.server.name=shell.sourceforge.net -project.server.dir=/home/groups/l/li/libusbjava/htdocs/wp/res -project.server.dir.doc=${project.server.dir}/doc -project.server.dir.bin=${project.server.dir}/bin -project.server.dir.demos=${project.server.dir}/demos diff --git a/java/deployment.xml b/java/deployment.xml deleted file mode 100644 index 07ead7d..0000000 --- a/java/deployment.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - Ant deployment tasks for ch.ntb.usb - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/java/project.properties b/java/project.properties deleted file mode 100644 index 561a532..0000000 --- a/java/project.properties +++ /dev/null @@ -1,10 +0,0 @@ -#Thu Aug 24 14:28:28 CEST 2006 -project.name=ch.ntb.usb -project.vendor=inf.ntb.ch -project.dir.src=src -project.dir.bin=bin -project.dir.lib=lib -project.dir.doc=doc -project.dir.demos=demos -project.jarfile=${project.name} -project.manifest.mainclass=ch.ntb.usb.usbView.UsbView diff --git a/java/src/.configure b/java/src/.configure deleted file mode 100644 index 3974ee4..0000000 --- a/java/src/.configure +++ /dev/null @@ -1,6 +0,0 @@ -# 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/src/ch/ntb/usb/testApp/AbstractDeviceInfo.java b/java/src/ch/ntb/usb/testApp/AbstractDeviceInfo.java deleted file mode 100644 index 871a397..0000000 --- a/java/src/ch/ntb/usb/testApp/AbstractDeviceInfo.java +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.testApp; - -public abstract class AbstractDeviceInfo { - - private short idVendor; - - private short idProduct; - - private String filename = null; - - private String busName = null; - - private int timeout; - - private int configuration; - - private int interface_; - - private int altinterface; - - private int outEPBulk = -1; - - private int inEPBulk = -1; - - private int outEPInt = -1; - - private int inEPInt = -1; - - private int sleepTimeout; - - private int maxDataSize; - - private TransferMode mode; - - private boolean compareData = true; - - private String manufacturer = null; - - private String product = null; - - private String serialVersion = null; - - public static enum TransferMode { - Bulk, Interrupt - } - - public AbstractDeviceInfo() { - initValues(); - } - - abstract public void initValues(); - - public int getAltinterface() { - return altinterface; - } - - public int getConfiguration() { - return configuration; - } - - public short getIdProduct() { - return idProduct; - } - - public short getIdVendor() { - return idVendor; - } - - public int getInEPBulk() { - return inEPBulk; - } - - public int getInEPInt() { - return inEPInt; - } - - public int getInterface() { - return interface_; - } - - public int getMaxDataSize() { - return maxDataSize; - } - - public int getOutEPBulk() { - return outEPBulk; - } - - public int getOutEPInt() { - return outEPInt; - } - - public int getSleepTimeout() { - return sleepTimeout; - } - - public int getTimeout() { - return timeout; - } - - public void setAltinterface(int altinterface) { - this.altinterface = altinterface; - } - - public void setConfiguration(int configuration) { - this.configuration = configuration; - } - - public void setIdProduct(short idProduct) { - this.idProduct = idProduct; - } - - public void setIdVendor(short idVendor) { - this.idVendor = idVendor; - } - - public void setInEPBulk(int in_ep_bulk) { - this.inEPBulk = in_ep_bulk; - } - - public void setInEPInt(int in_ep_int) { - this.inEPInt = in_ep_int; - } - - public void setInterface(int interface_) { - this.interface_ = interface_; - } - - public void setMaxDataSize(int maxDataSize) { - this.maxDataSize = maxDataSize; - } - - public void setOutEPBulk(int out_ep_bulk) { - this.outEPBulk = out_ep_bulk; - } - - public void setOutEPInt(int out_ep_int) { - this.outEPInt = out_ep_int; - } - - public void setSleepTimeout(int sleepTimeout) { - this.sleepTimeout = sleepTimeout; - } - - public void setTimeout(int timeout) { - this.timeout = timeout; - } - - public TransferMode getMode() { - return mode; - } - - public void setMode(TransferMode mode) { - this.mode = mode; - } - - public boolean doCompareData() { - return compareData; - } - - public void setDoCompareData(boolean compareData) { - this.compareData = compareData; - } - - public String getManufacturer() { - return manufacturer; - } - - public void setManufacturer(String manufacturer) { - this.manufacturer = manufacturer; - } - - public String getProduct() { - return product; - } - - public void setProduct(String product) { - this.product = product; - } - - public String getSerialVersion() { - return serialVersion; - } - - public void setSerialVersion(String serialVersion) { - this.serialVersion = serialVersion; - } - - public String getFilename() { - return filename; - } - - public void setFilename(String filename) { - this.filename = filename; - } - - public String getBusName() { - return busName; - } - - public void setBusName(String busName) { - this.busName = busName; - } -} diff --git a/java/src/ch/ntb/usb/testApp/TestApp.java b/java/src/ch/ntb/usb/testApp/TestApp.java deleted file mode 100644 index c521666..0000000 --- a/java/src/ch/ntb/usb/testApp/TestApp.java +++ /dev/null @@ -1,709 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.testApp; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.Font; -import java.awt.GridBagConstraints; -import java.awt.event.ItemEvent; - -import javax.swing.BorderFactory; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.UIManager; -import javax.swing.border.TitledBorder; - -public class TestApp extends JFrame { - - private static final long serialVersionUID = 994508729204158681L; - TestDevice dev; - private JPanel rootPanel = null; - private JPanel sendReceivePanel = null; - private JPanel settingsPanel = null; - private JButton openDeviceButton = null; - private JButton closeDevice = null; - private JButton resetButton = null; - private JPanel settingsPanelTop = null; - private JPanel settingsPanelBottom = null; - JTextField vendorIDText = null; - JTextField productIDText = null; - private JPanel vendorIDPanel = null; - private JPanel productIDPanel = null; - private JPanel configurationPanel = null; - JTextField configurationText = null; - private JPanel interfacePanel = null; - JTextField interfaceText = null; - private JPanel altInterfacePanel = null; - JTextField altInterfaceText = null; - private JPanel settingsPanelTop2Left = null; - private JPanel settingsPanelTop2Right = null; - private JPanel outEpPanel = null; - JTextField outEpText = null; - private JPanel inEpPanel = null; - JTextField inEpText = null; - private JPanel timeoutPanel = null; - private JTextField timeoutText = null; - private JPanel sendDataPanel = null; - private JPanel sendRecButtonsPanel = null; - private JButton sendButton = null; - private JButton recButton = null; - JTextField sendDataText = null; - JComboBox sendTypeComboBox = null; - private JComboBox recTypeComboBox = null; - private JPanel sendRecButtonsPanelTop = null; - private JPanel sendRecButtonsPanelBottom = null; - - public TestApp(TestDevice devInfo) { - super(); - this.dev = devInfo; - initialize(); - } - - private void initialize() { - - this.setTitle("USB Test Application"); - - this.setContentPane(getRootPanel()); - - // read default values - this.vendorIDText.setText(toHexString(dev.getIdVendor() & 0xffff)); - this.productIDText.setText(toHexString(dev.getIdProduct() & 0xffff)); - this.configurationText.setText(new Integer(dev.getConfiguration()) - .toString()); - this.interfaceText.setText(new Integer(dev.getInterface()).toString()); - this.altInterfaceText.setText(new Integer(dev.getAltinterface()) - .toString()); - this.timeoutText.setText(new Integer(dev.getTimeout()).toString()); - this.sendDataText.setText(dev.getSendData()); - setOutEpAddr(); - setInEpAddr(); - - this.pack(); - this.setVisible(true); - } - - void setOutEpAddr() { - switch (dev.getOutMode()) { - case Bulk: - this.outEpText.setText(toHexString(dev.getOutEPBulk())); - break; - case Interrupt: - this.outEpText.setText(toHexString(dev.getOutEPInt())); - break; - default: - break; - } - } - - void setInEpAddr() { - switch (dev.getInMode()) { - case Bulk: - this.inEpText.setText(toHexString(dev.getInEPBulk())); - break; - case Interrupt: - this.inEpText.setText(toHexString(dev.getInEPInt())); - break; - default: - break; - } - } - - private JPanel getRootPanel() { - if (rootPanel == null) { - rootPanel = new JPanel(); - rootPanel - .setLayout(new BoxLayout(getRootPanel(), BoxLayout.Y_AXIS)); - rootPanel.add(getSettingsPanel(), null); - rootPanel.add(getSendReceivePanel(), null); - } - return rootPanel; - } - - private JPanel getSendReceivePanel() { - if (sendReceivePanel == null) { - BorderLayout borderLayout2 = new BorderLayout(); - borderLayout2.setHgap(5); - sendReceivePanel = new JPanel(); - sendReceivePanel.setLayout(borderLayout2); - sendReceivePanel.setBorder(BorderFactory.createTitledBorder(null, - "Send and Receive Data", - TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - sendReceivePanel.add(getSendRecButtonsPanel(), BorderLayout.NORTH); - sendReceivePanel.add(getSendDataPanel(), BorderLayout.SOUTH); - } - return sendReceivePanel; - } - - private JPanel getSettingsPanel() { - if (settingsPanel == null) { - settingsPanel = new JPanel(); - settingsPanel.setLayout(new BoxLayout(getSettingsPanel(), - BoxLayout.Y_AXIS)); - settingsPanel.setBorder(BorderFactory.createTitledBorder(null, - "Device Settings", TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - settingsPanel.add(getSettingsPanelTop(), null); - settingsPanel.add(getSettingsPanelBottom(), null); - } - return settingsPanel; - } - - private JButton getOpenDeviceButton() { - if (openDeviceButton == null) { - openDeviceButton = new JButton(); - openDeviceButton.setText("Open Device"); - openDeviceButton - .addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent e) { - // update values for the device - dev.setIdVendor((short) parseInt(vendorIDText - .getText().trim())); - dev.setIdProduct((short) parseInt(productIDText - .getText().trim())); - dev.setConfiguration(parseInt(configurationText - .getText().trim())); - dev.setInterface(parseInt(interfaceText.getText() - .trim())); - dev.setAltinterface(parseInt(altInterfaceText - .getText().trim())); - // opent the device - dev.openUsbDevice(); - } - }); - } - return openDeviceButton; - } - - private JButton getCloseDevice() { - if (closeDevice == null) { - closeDevice = new JButton(); - closeDevice.setText("Close Device"); - closeDevice.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent e) { - dev.closeUsbDevice(); - } - }); - } - return closeDevice; - } - - private JButton getResetButton() { - if (resetButton == null) { - resetButton = new JButton(); - resetButton.setText("Reset Device"); - resetButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent e) { - dev.resetUsbDevice(); - } - }); - } - return resetButton; - } - - private JPanel getSettingsPanelTop() { - if (settingsPanelTop == null) { - FlowLayout flowLayout = new FlowLayout(); - flowLayout.setVgap(1); - flowLayout.setAlignment(FlowLayout.LEFT); - settingsPanelTop = new JPanel(); - settingsPanelTop.setLayout(flowLayout); - settingsPanelTop.add(getVendorIDPanel(), null); - settingsPanelTop.add(getProductIDPanel(), null); - settingsPanelTop.add(getConfigurationPanel(), null); - settingsPanelTop.add(getInterfacePanel(), null); - settingsPanelTop.add(getAltInterfacePanel(), null); - } - return settingsPanelTop; - } - - private JPanel getSettingsPanelBottom() { - if (settingsPanelBottom == null) { - FlowLayout flowLayout1 = new FlowLayout(); - flowLayout1.setVgap(1); - flowLayout1.setHgap(0); - flowLayout1.setAlignment(FlowLayout.LEFT); - GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); - gridBagConstraints1.gridx = -1; - gridBagConstraints1.gridy = -1; - settingsPanelBottom = new JPanel(); - settingsPanelBottom.setLayout(flowLayout1); - settingsPanelBottom.add(getSettingsPanelTop2Left(), null); - settingsPanelBottom.add(getSettingsPanelTop2Right(), null); - } - return settingsPanelBottom; - } - - private JTextField getVendorIDText() { - if (vendorIDText == null) { - vendorIDText = new JTextField(); - vendorIDText.setPreferredSize(new Dimension(100, 20)); - } - return vendorIDText; - } - - private JTextField getProductIDText() { - if (productIDText == null) { - productIDText = new JTextField(); - productIDText.setPreferredSize(new Dimension(100, 20)); - } - return productIDText; - } - - private JPanel getVendorIDPanel() { - if (vendorIDPanel == null) { - GridBagConstraints gridBagConstraints3 = new GridBagConstraints(); - gridBagConstraints3.fill = GridBagConstraints.VERTICAL; - gridBagConstraints3.gridy = -1; - gridBagConstraints3.weightx = 1.0; - gridBagConstraints3.gridx = -1; - GridBagConstraints gridBagConstraints5 = new GridBagConstraints(); - gridBagConstraints5.gridx = -1; - gridBagConstraints5.gridy = -1; - vendorIDPanel = new JPanel(); - vendorIDPanel.setBorder(BorderFactory.createTitledBorder(null, - "VendorID", TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - vendorIDPanel.setLayout(new BoxLayout(getVendorIDPanel(), - BoxLayout.X_AXIS)); - vendorIDPanel.add(getVendorIDText(), null); - } - return vendorIDPanel; - } - - private JPanel getProductIDPanel() { - if (productIDPanel == null) { - GridBagConstraints gridBagConstraints4 = new GridBagConstraints(); - gridBagConstraints4.fill = GridBagConstraints.VERTICAL; - gridBagConstraints4.gridy = -1; - gridBagConstraints4.weightx = 1.0; - gridBagConstraints4.gridx = -1; - productIDPanel = new JPanel(); - productIDPanel.setBorder(BorderFactory.createTitledBorder(null, - "ProductID", TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - productIDPanel.setLayout(new BoxLayout(getProductIDPanel(), - BoxLayout.X_AXIS)); - productIDPanel.add(getProductIDText(), null); - } - return productIDPanel; - } - - private JPanel getConfigurationPanel() { - if (configurationPanel == null) { - configurationPanel = new JPanel(); - configurationPanel.setLayout(new BoxLayout(getConfigurationPanel(), - BoxLayout.X_AXIS)); - configurationPanel.setBorder(BorderFactory.createTitledBorder(null, - "Configuration", TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - configurationPanel.add(getConfigurationText(), null); - } - return configurationPanel; - } - - private JTextField getConfigurationText() { - if (configurationText == null) { - configurationText = new JTextField(); - configurationText.setPreferredSize(new Dimension(100, 20)); - } - return configurationText; - } - - private JPanel getInterfacePanel() { - if (interfacePanel == null) { - interfacePanel = new JPanel(); - interfacePanel.setLayout(new BoxLayout(getInterfacePanel(), - BoxLayout.X_AXIS)); - interfacePanel.setBorder(BorderFactory.createTitledBorder(null, - "Interface", TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - interfacePanel.add(getInterfaceText(), null); - } - return interfacePanel; - } - - private JTextField getInterfaceText() { - if (interfaceText == null) { - interfaceText = new JTextField(); - interfaceText.setPreferredSize(new Dimension(100, 20)); - } - return interfaceText; - } - - private JPanel getAltInterfacePanel() { - if (altInterfacePanel == null) { - altInterfacePanel = new JPanel(); - altInterfacePanel.setLayout(new BoxLayout(getAltInterfacePanel(), - BoxLayout.X_AXIS)); - altInterfacePanel.setBorder(BorderFactory.createTitledBorder(null, - "Alternate Int", TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - altInterfacePanel.add(getAltInterfaceText(), null); - } - return altInterfacePanel; - } - - private JTextField getAltInterfaceText() { - if (altInterfaceText == null) { - altInterfaceText = new JTextField(); - altInterfaceText.setPreferredSize(new Dimension(100, 20)); - } - return altInterfaceText; - } - - private JPanel getSettingsPanelTop2Left() { - if (settingsPanelTop2Left == null) { - FlowLayout flowLayout2 = new FlowLayout(); - flowLayout2.setVgap(2); - flowLayout2.setAlignment(FlowLayout.LEFT); - flowLayout2.setHgap(5); - settingsPanelTop2Left = new JPanel(); - settingsPanelTop2Left.setLayout(flowLayout2); - settingsPanelTop2Left.add(getOutEpPanel(), null); - settingsPanelTop2Left.add(getInEpPanel(), null); - settingsPanelTop2Left.add(getTimeoutPanel(), null); - } - return settingsPanelTop2Left; - } - - private JPanel getSettingsPanelTop2Right() { - if (settingsPanelTop2Right == null) { - FlowLayout flowLayout3 = new FlowLayout(); - flowLayout3.setVgap(2); - settingsPanelTop2Right = new JPanel(); - settingsPanelTop2Right.setLayout(flowLayout3); - settingsPanelTop2Right.add(getOpenDeviceButton(), null); - settingsPanelTop2Right.add(getCloseDevice(), null); - settingsPanelTop2Right.add(getResetButton(), null); - } - return settingsPanelTop2Right; - } - - private JPanel getOutEpPanel() { - if (outEpPanel == null) { - outEpPanel = new JPanel(); - outEpPanel.setLayout(new BoxLayout(getOutEpPanel(), - BoxLayout.X_AXIS)); - outEpPanel.setBorder(BorderFactory.createTitledBorder(null, - "OUT EP", TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - outEpPanel.add(getOutEpText(), null); - } - return outEpPanel; - } - - private JTextField getOutEpText() { - if (outEpText == null) { - outEpText = new JTextField(); - outEpText.setPreferredSize(new Dimension(100, 20)); - } - return outEpText; - } - - private JPanel getInEpPanel() { - if (inEpPanel == null) { - inEpPanel = new JPanel(); - inEpPanel - .setLayout(new BoxLayout(getInEpPanel(), BoxLayout.X_AXIS)); - inEpPanel.setBorder(BorderFactory.createTitledBorder(null, "IN EP", - TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - inEpPanel.add(getInEpText(), null); - } - return inEpPanel; - } - - private JTextField getInEpText() { - if (inEpText == null) { - inEpText = new JTextField(); - inEpText.setPreferredSize(new Dimension(100, 20)); - } - return inEpText; - } - - private JPanel getTimeoutPanel() { - if (timeoutPanel == null) { - timeoutPanel = new JPanel(); - timeoutPanel.setLayout(new BoxLayout(getTimeoutPanel(), - BoxLayout.X_AXIS)); - timeoutPanel.setBorder(BorderFactory.createTitledBorder(null, - "Timeout", TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - timeoutPanel.add(getTimeoutText(), null); - } - return timeoutPanel; - } - - private JTextField getTimeoutText() { - if (timeoutText == null) { - timeoutText = new JTextField(); - timeoutText.setPreferredSize(new Dimension(100, 20)); - } - return timeoutText; - } - - private JPanel getSendDataPanel() { - if (sendDataPanel == null) { - FlowLayout flowLayout4 = new FlowLayout(); - flowLayout4.setAlignment(FlowLayout.LEFT); - sendDataPanel = new JPanel(); - sendDataPanel.setLayout(flowLayout4); - sendDataPanel.setBorder(BorderFactory.createTitledBorder(null, - "Data to send [hex]", TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - sendDataPanel.add(getSendRecDataText(), null); - } - return sendDataPanel; - } - - private JPanel getSendRecButtonsPanel() { - if (sendRecButtonsPanel == null) { - FlowLayout flowLayout5 = new FlowLayout(); - flowLayout5.setAlignment(FlowLayout.LEFT); - flowLayout5.setVgap(0); - sendRecButtonsPanel = new JPanel(); - sendRecButtonsPanel.setLayout(flowLayout5); - sendRecButtonsPanel.add(getSendRecButtonsPanelTop(), null); - sendRecButtonsPanel.add(getSendRecButtonsPanelBottom(), null); - } - return sendRecButtonsPanel; - } - - private JButton getSendButton() { - if (sendButton == null) { - sendButton = new JButton(); - sendButton.setText("Send"); - sendButton.setName("sendButton"); - sendButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent e) { - int index = sendTypeComboBox.getSelectedIndex(); - if (index == TestDevice.TransferMode.Bulk.ordinal()) { - dev.setOutEPBulk(parseInt(outEpText.getText().trim())); - dev.setMode(TestDevice.TransferMode.Bulk); - } else if (index == TestDevice.TransferMode.Interrupt - .ordinal()) { - dev.setOutEPInt(parseInt(outEpText.getText().trim())); - dev.setMode(TestDevice.TransferMode.Interrupt); - } - byte[] data = parseByteArray(sendDataText.getText().trim()); - dev.write(data, data.length); - } - }); - } - return sendButton; - } - - private JButton getRecButton() { - if (recButton == null) { - recButton = new JButton(); - recButton.setText("Receive"); - recButton.setName("recButton"); - recButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent e) { - int index = sendTypeComboBox.getSelectedIndex(); - if (index == TestDevice.TransferMode.Bulk.ordinal()) { - dev.setInEPBulk(parseInt(inEpText.getText().trim())); - dev.setMode(TestDevice.TransferMode.Bulk); - } else if (index == TestDevice.TransferMode.Interrupt - .ordinal()) { - dev.setInEPInt(parseInt(inEpText.getText().trim())); - dev.setMode(TestDevice.TransferMode.Interrupt); - } - dev.read(); - } - }); - } - return recButton; - } - - private JTextField getSendRecDataText() { - if (sendDataText == null) { - sendDataText = new JTextField(); - sendDataText.setPreferredSize(new Dimension(650, 20)); - } - return sendDataText; - } - - int parseInt(String s) { - if (s == "") - return 0; - if (s.indexOf('x') > 0) { - // is hex number - if (s.length() <= 2) { // exception for "0x" - return 0; - } - return Integer.parseInt( - s.substring(s.indexOf('x') + 1, s.length()), 16); - } - // is decimal number - return Integer.parseInt(s); - } - - byte[] parseByteArray(String s) { - final int HEX_WIDTH = 5; - - StringBuffer sb = new StringBuffer(); - int stringIndex = 0, spaceIndex = 0; - String ss; - while (stringIndex + 3 < s.length()) { - ss = s.substring(spaceIndex, spaceIndex + 4); - spaceIndex = s.indexOf(' ', stringIndex) + 1; - sb.append((char) parseInt(ss)); - stringIndex += HEX_WIDTH; - } - return sb.toString().getBytes(); - } - - private static String toHexString(int value) { - return "0x" + Integer.toHexString(value); - } - - /** - * This method initializes sendTypeComboBox - * - * @return javax.swing.JComboBox - */ - private JComboBox getSendTypeComboBox() { - if (sendTypeComboBox == null) { - sendTypeComboBox = new JComboBox(dev.getTransferTypes()); - sendTypeComboBox.setSelectedIndex(dev.getOutMode().ordinal()); - sendTypeComboBox.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - String mode = (String) e.getItem(); - if (mode.equalsIgnoreCase("Bulk")) { - dev.setOutMode(TestDevice.TransferMode.Bulk); - setOutEpAddr(); - } else if (mode.equalsIgnoreCase("Interrupt")) { - dev.setOutMode(TestDevice.TransferMode.Interrupt); - setOutEpAddr(); - } - } - } - }); - } - return sendTypeComboBox; - } - - /** - * This method initializes recTypeComboBox - * - * @return javax.swing.JComboBox - */ - private JComboBox getRecTypeComboBox() { - if (recTypeComboBox == null) { - recTypeComboBox = new JComboBox(dev.getTransferTypes()); - recTypeComboBox.setSelectedIndex(dev.getInMode().ordinal()); - recTypeComboBox.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - String mode = (String) e.getItem(); - if (mode.equalsIgnoreCase("Bulk")) { - dev.setInMode(TestDevice.TransferMode.Bulk); - setInEpAddr(); - } else if (mode.equalsIgnoreCase("Interrupt")) { - dev.setInMode(TestDevice.TransferMode.Interrupt); - setInEpAddr(); - } - } - } - }); - // recTypeComboBox.addActionListener(new - // java.awt.event.ActionListener() { - // public void actionPerformed(java.awt.event.ActionEvent e) { - // JComboBox source = (JComboBox) e.getSource(); - // String mode = ""; - // } if (mode.equalsIgnoreCase("Bulk")) { - // dev.setInMode(TestDevice.TransferMode.Bulk); - // setInEpAddr(); - // } else if (mode.equalsIgnoreCase("Interrupt")) { - // dev.setInMode(TestDevice.TransferMode.Interrupt); - // setInEpAddr(); - // } - // - // }); - } - return recTypeComboBox; - } - - /** - * This method initializes sendRecButtonsPanelTop - * - * @return javax.swing.JPanel - */ - private JPanel getSendRecButtonsPanelTop() { - if (sendRecButtonsPanelTop == null) { - BorderLayout borderLayout1 = new BorderLayout(); - borderLayout1.setHgap(5); - sendRecButtonsPanelTop = new JPanel(); - sendRecButtonsPanelTop.setBorder(BorderFactory.createTitledBorder( - null, "OUT", TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - sendRecButtonsPanelTop.setLayout(borderLayout1); - sendRecButtonsPanelTop.add(getSendButton(), BorderLayout.EAST); - sendRecButtonsPanelTop - .add(getSendTypeComboBox(), BorderLayout.WEST); - } - return sendRecButtonsPanelTop; - } - - /** - * This method initializes sendRecButtonsPanelBottom - * - * @return javax.swing.JPanel - */ - private JPanel getSendRecButtonsPanelBottom() { - if (sendRecButtonsPanelBottom == null) { - BorderLayout borderLayout = new BorderLayout(); - borderLayout.setHgap(5); - sendRecButtonsPanelBottom = new JPanel(); - sendRecButtonsPanelBottom.setBorder(BorderFactory - .createTitledBorder(null, "IN", - TitledBorder.DEFAULT_JUSTIFICATION, - TitledBorder.DEFAULT_POSITION, new Font("Dialog", - Font.BOLD, 12), new Color(51, 51, 51))); - sendRecButtonsPanelBottom.setLayout(borderLayout); - sendRecButtonsPanelBottom.add(getRecButton(), BorderLayout.EAST); - sendRecButtonsPanelBottom.add(getRecTypeComboBox(), - BorderLayout.WEST); - } - return sendRecButtonsPanelBottom; - } - - public static void main(String[] args) { - // set LookAndFeel - try { - UIManager - .setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); - } catch (Exception e) { - e.printStackTrace(); - } - TestApp app = new TestApp(new TestDevice()); - app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - } -} diff --git a/java/src/ch/ntb/usb/testApp/TestDevice.java b/java/src/ch/ntb/usb/testApp/TestDevice.java deleted file mode 100644 index 4c67257..0000000 --- a/java/src/ch/ntb/usb/testApp/TestDevice.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.testApp; - -import java.util.Vector; -import java.util.logging.Level; -import java.util.logging.Logger; - -import ch.ntb.usb.Device; -import ch.ntb.usb.USB; -import ch.ntb.usb.USBException; -import ch.ntb.usb.logger.LogUtil; - -public class TestDevice extends AbstractDeviceInfo { - - private static final Logger logger = LogUtil.getLogger("ch.ntb.usb.test"); - - private String sendData = "0x5b 0x02 0x01 0x00 0x03 0x03 0xf0 0xf0 0x1f"; - - private Vector transferTypes; - - private static Device dev = null; - - private TransferMode inMode; - private TransferMode outMode; - - public TestDevice() { - logger.setLevel(Level.ALL); - // create a vector for transfer types - transferTypes = new Vector(); - transferTypes - .add(TransferMode.Bulk.ordinal(), TransferMode.Bulk.name()); - transferTypes.add(TransferMode.Interrupt.ordinal(), - TransferMode.Interrupt.name()); - inMode = TransferMode.Bulk; - outMode = TransferMode.Bulk; - } - - @Override - public void initValues() { - setIdVendor((short) 0x8235); - setIdProduct((short) 0x0222); - setTimeout(2000); - setConfiguration(1); - setInterface(0); - setAltinterface(-1); - setOutEPBulk(0x01); - setInEPBulk(0x82); - setOutEPInt(0x03); - setInEPInt(0x84); - setSleepTimeout(2000); - setMaxDataSize(USB.FULLSPEED_MAX_BULK_PACKET_SIZE); - setMode(TransferMode.Bulk); - } - - public void openUsbDevice() { - dev = USB.getDevice(getIdVendor(), getIdProduct()); - try { - dev.open(getConfiguration(), getInterface(), getAltinterface()); - logger.info("device opened, interface claimed"); - } catch (USBException e) { - e.printStackTrace(); - } - } - - public void closeUsbDevice() { - try { - if (dev != null) { - dev.close(); - logger.info("device closed"); - } else { - logger.warning("no device to close -> open first"); - } - } catch (USBException e) { - e.printStackTrace(); - } - } - - public void resetUsbDevice() { - try { - if (dev != null) { - dev.reset(); - logger.info("device reset"); - } else { - logger.warning("no device to reset -> open first"); - } - } catch (USBException e) { - e.printStackTrace(); - } - } - - public void write(byte[] data, int length) { - int lenWritten = 0; - try { - if (dev != null) { - StringBuffer sb = new StringBuffer(); - switch (getOutMode()) { - case Bulk: - lenWritten = dev.writeBulk(getOutEPBulk(), data, length, - getTimeout(), false); - sb.append("write_bulk, ep: 0x" - + Integer.toHexString(getOutEPBulk()) + ", " - + lenWritten + " Bytes sent: "); - break; - case Interrupt: - lenWritten = dev.writeInterrupt(getOutEPInt(), data, - length, getTimeout(), false); - sb.append("write_interrupt, ep: 0x" - + Integer.toHexString(getOutEPInt()) + ", " - + lenWritten + " Bytes sent: "); - break; - } - for (int i = 0; i < lenWritten; i++) { - sb.append("0x" + String.format("%1$02X", data[i]) + " "); - } - logger.info(sb.toString()); - } else { - logger.warning("no device opened"); - } - } catch (USBException e) { - e.printStackTrace(); - } - } - - public void read() { - if (dev != null) { - byte[] data = new byte[dev.getMaxPacketSize()]; - int lenRead = 0; - try { - StringBuffer sb = new StringBuffer(); - switch (getInMode()) { - case Bulk: - lenRead = dev.readBulk(getInEPBulk(), data, dev - .getMaxPacketSize(), getTimeout(), false); - sb.append("read_bulk, ep: 0x" - + Integer.toHexString(getInEPBulk()) + ", " - + lenRead + " Bytes received: Data: "); - break; - case Interrupt: - lenRead = dev.readInterrupt(getInEPInt(), data, dev - .getMaxPacketSize(), getTimeout(), false); - sb.append("read_interrupt, ep: 0x" - + Integer.toHexString(getInEPInt()) + ", " - + lenRead + " Bytes received: Data: "); - break; - } - for (int i = 0; i < lenRead; i++) { - sb.append("0x" + String.format("%1$02X", data[i]) + " "); - } - logger.info(sb.toString()); - } catch (USBException e) { - e.printStackTrace(); - } - } else { - logger.warning("no device opened"); - } - } - - public String getSendData() { - return sendData; - } - - public void setSendData(String sendData) { - this.sendData = sendData; - } - - public Vector getTransferTypes() { - return transferTypes; - } - - public TransferMode getOutMode() { - return outMode; - } - - public void setOutMode(TransferMode outMode) { - this.outMode = outMode; - } - - public TransferMode getInMode() { - return inMode; - } - - public void setInMode(TransferMode inMode) { - this.inMode = inMode; - } -} diff --git a/java/src/ch/ntb/usb/testApp/package.html b/java/src/ch/ntb/usb/testApp/package.html deleted file mode 100644 index bf865ad..0000000 --- a/java/src/ch/ntb/usb/testApp/package.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -A test application with a GUI to write to and read from a device (based on Swing). - -

Related Resources

- -For more information about this project visit -http://libusbjava.sourceforge.net -. - - - diff --git a/java/test/ch/ntb/usb/demo/LogBus.java b/java/test/ch/ntb/usb/demo/LogBus.java deleted file mode 100644 index 413bd02..0000000 --- a/java/test/ch/ntb/usb/demo/LogBus.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.demo; - -import ch.ntb.usb.LibusbJava; -import ch.ntb.usb.Usb_Bus; -import ch.ntb.usb.Utils; - -/** - * Initalises Libusb and prints the bus(ses) with attached devices to the - * standard out.
- * - * - */ -public class LogBus { - - private static void logBus() { - // if you don't use the ch.ntb.usb.Device class you must initialise - // Libusb before use - LibusbJava.usb_init(); - LibusbJava.usb_find_busses(); - LibusbJava.usb_find_devices(); - - // retrieve a object tree representing the bus with its devices and - // descriptors - Usb_Bus bus = LibusbJava.usb_get_busses(); - - // log the bus structure to standard out - Utils.logBus(bus); - } - - public static void main(String[] args) { - logBus(); - } -} diff --git a/java/test/ch/ntb/usb/demo/ReadWrite.java b/java/test/ch/ntb/usb/demo/ReadWrite.java deleted file mode 100644 index 61b77de..0000000 --- a/java/test/ch/ntb/usb/demo/ReadWrite.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.demo; - -import ch.ntb.usb.Device; -import ch.ntb.usb.USB; -import ch.ntb.usb.USBException; - -/** - * Demo class to demonstrate simple read and write operations to an USB device.
- * - */ -public class ReadWrite { - - private static void logData(byte[] data) { - System.out.print("Data: "); - for (int i = 0; i < data.length; i++) { - System.out.print("0x" + Integer.toHexString(data[i] & 0xff) + " "); - } - System.out.println(); - } - - public static void main(String[] args) { - // get a device instance with vendor id and product id - Device dev = USB.getDevice((short) 0x8235, (short) 0x0222); - try { - // data to write to the device - byte[] data = new byte[] { 0, 1, 2, 3 }; - // data read from the device - byte[] readData = new byte[data.length]; - - // open the device with configuration 1, interface 0 and without - // altinterface - // this will initialise Libusb for you - dev.open(1, 0, -1); - // write some data to the device - // 0x03 is the endpoint address of the OUT endpoint 3 (from PC to - // device) - dev.writeInterrupt(0x03, data, data.length, 2000, false); - // read some data from the device - // 0x84 is the endpoint address of the IN endpoint 4 (from PC to - // device) - // bit 7 (0x80) is set in case of an IN endpoint - dev.readInterrupt(0x84, readData, readData.length, 2000, false); - // log the data from the device - logData(readData); - // close the device - dev.close(); - } catch (USBException e) { - // if an exception occures during connect or read/write an exception - // is thrown - e.printStackTrace(); - } - } -} diff --git a/java/test/ch/ntb/usb/test/DeviceTest.java b/java/test/ch/ntb/usb/test/DeviceTest.java deleted file mode 100644 index 6411a5d..0000000 --- a/java/test/ch/ntb/usb/test/DeviceTest.java +++ /dev/null @@ -1,625 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; -import java.io.InputStream; -import java.io.PrintStream; -import java.io.UnsupportedEncodingException; -import java.util.Properties; -import java.util.logging.Logger; - -import junit.framework.Assert; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -import ch.ntb.usb.Device; -import ch.ntb.usb.LibusbJava; -import ch.ntb.usb.USB; -import ch.ntb.usb.USBException; -import ch.ntb.usb.Usb_Bus; -import ch.ntb.usb.Usb_Config_Descriptor; -import ch.ntb.usb.Usb_Device_Descriptor; -import ch.ntb.usb.Utils; -import ch.ntb.usb.testApp.AbstractDeviceInfo; -import ch.ntb.usb.testApp.AbstractDeviceInfo.TransferMode; - -public class DeviceTest { - - private static final String testdevicePropertiesFile = "testdevice.properties"; - private static final String deviceInfoKey = "testdeviceInfo"; - - private static AbstractDeviceInfo devinfo; - - private static byte[] testData; - - private static byte[] readData; - - private static Device dev; - - private static Logger log = Logger.getLogger(DeviceTest.class.getName()); - - @BeforeClass - public static void setUp() throws Exception { - // load the device info class with the key - // from 'testdevice.properties' - InputStream propInputStream = new FileInputStream( - testdevicePropertiesFile); - Properties devInfoProp = new Properties(); - devInfoProp.load(propInputStream); - String devInfoClazzName = devInfoProp.getProperty(deviceInfoKey); - if (devInfoClazzName == null) { - throw new Exception("property " + deviceInfoKey - + " not found in file " + testdevicePropertiesFile); - } - Class devInfoClazz = Class.forName(devInfoClazzName); - devinfo = (AbstractDeviceInfo) devInfoClazz.newInstance(); - // devinfo = new CY7C68013A(); - // setup test data - testData = new byte[devinfo.getMaxDataSize()]; - readData = new byte[testData.length]; - // initialise the device - LibusbJava.usb_set_debug(255); - dev = USB.getDevice(devinfo.getIdVendor(), devinfo.getIdProduct(), - devinfo.getBusName(), devinfo.getFilename()); - assertNotNull(dev); - - // print the devices - LibusbJava.usb_init(); - LibusbJava.usb_find_busses(); - LibusbJava.usb_find_devices(); - Usb_Bus bus = LibusbJava.usb_get_busses(); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - PrintStream ps = new PrintStream(baos); - Utils.logBus(bus, ps); - log.info(baos.toString()); - } - - @Test - public void getDescriptors() throws Exception { - dev.updateDescriptors(); - Usb_Device_Descriptor devDescriptor = dev.getDeviceDescriptor(); - assertNotNull(devDescriptor); - assertEquals(devinfo.getIdProduct(), devDescriptor.getIdProduct()); - assertEquals(devinfo.getIdVendor(), devDescriptor.getIdVendor()); - Usb_Config_Descriptor confDescriptors[] = dev.getConfigDescriptors(); - assertNotNull(confDescriptors); - assertTrue(confDescriptors[0].getInterface().length > 0); - } - - @Test - public void initalReset() throws Exception { - doOpen(); - // this may change the bus and file name of the device - dev.reset(); - timeout(); - } - - @Test(expected = USBException.class) - public void testClose() throws Exception { - try { - // this calls must not throw an exception - doOpen(); - doClose(); - } catch (USBException e) { - e.printStackTrace(); - fail(e.getMessage()); - } - // this call must throw an exception, because the device is closed - dev.writeBulk(devinfo.getOutEPBulk(), testData, testData.length, - devinfo.getTimeout(), false); - } - - @Test(expected = USBException.class) - public void testReset1() throws Exception { - try { - // this calls must not throw an exception - doOpen(); - dev.reset(); - timeout(); - } catch (USBException e) { - e.printStackTrace(); - fail(e.getMessage()); - } - // this call must throw an exception, because the device is closed - dev.writeBulk(devinfo.getOutEPBulk(), testData, testData.length, - devinfo.getTimeout(), false); - } - - @Test(expected = USBException.class) - public void testReset2() throws Exception { - try { - // this calls must not throw an exception - doOpen(); - dev.reset(); - timeout(); - } catch (USBException e) { - e.printStackTrace(); - fail(e.getMessage()); - } - // this call must throw an exception, because the device can't be closed - doClose(); - } - - @Test - public void open() throws Exception { - // get device by busname - doOpen(); - assertNotNull(dev.getDevice()); - String oldFilename = dev.getDevice().getFilename(); - String oldBusName = dev.getDevice().getBus().getDirname(); - assertNotNull(oldFilename); - assertNotNull(oldBusName); - log.info("filename: " + oldFilename + ", busName: " + oldBusName); - Device dev2 = USB.getDevice(devinfo.getIdVendor(), devinfo - .getIdProduct()); - doClose(); - assertEquals(dev, dev2); - } - - @Test - public void openWithBusName() throws Exception { - // get device by busname - doOpen(); - assertNotNull(dev.getDevice()); - String oldFilename = dev.getDevice().getFilename(); - String oldBusName = dev.getDevice().getBus().getDirname(); - assertNotNull(oldFilename); - assertNotNull(oldBusName); - log.info("filename: " + oldFilename + ", busName: " + oldBusName); - Device dev2 = USB.getDevice(devinfo.getIdVendor(), devinfo - .getIdProduct(), oldBusName, null); - doClose(); - assertEquals(dev, dev2); - } - - @Test - public void openWithFilename() throws Exception { - // get device by busname - doOpen(); - assertNotNull(dev.getDevice()); - String oldFilename = dev.getDevice().getFilename(); - String oldBusName = dev.getDevice().getBus().getDirname(); - assertNotNull(oldFilename); - assertNotNull(oldBusName); - log.info("filename: " + oldFilename + ", busName: " + oldBusName); - Device dev2 = USB.getDevice(devinfo.getIdVendor(), devinfo - .getIdProduct(), null, oldFilename); - doClose(); - assertEquals(dev, dev2); - } - - @Test - public void openWithBusAndFilename() throws Exception { - // get device by busname and filename - doOpen(); - assertNotNull(dev.getDevice()); - String oldFilename = dev.getDevice().getFilename(); - String oldBusName = dev.getDevice().getBus().getDirname(); - assertNotNull(oldFilename); - assertNotNull(oldBusName); - log.info("filename: " + oldFilename + ", busName: " + oldBusName); - Device dev2 = USB.getDevice(devinfo.getIdVendor(), devinfo - .getIdProduct(), oldBusName, oldFilename); - doClose(); - assertEquals(dev, dev2); - } - - @Test - public void bulkWriteRead() throws Exception { - checkBulkEndpoints(); - devinfo.setMode(TransferMode.Bulk); - doOpenWriteReadClose(); - } - - private void checkBulkEndpoints() { - if (devinfo.getInEPBulk() == -1 && devinfo.getOutEPBulk() == -1) { - throw new UnsupportedOperationException( - "no bulk endpoints defined in test device definition"); - } - } - - @Test - public void interruptWriteRead() throws Exception { - checkInterruptEndpoints(); - devinfo.setMode(TransferMode.Interrupt); - doOpenWriteReadClose(); - } - - private void checkInterruptEndpoints() { - if (devinfo.getInEPInt() == -1 && devinfo.getOutEPInt() == -1) { - throw new UnsupportedOperationException( - "no interrupt endpoints defined in test device definition"); - } - } - - @Test - public void bulkWriteReadMultiple() throws Exception { - final int NumberOfIterations = 100; - - devinfo.setMode(TransferMode.Bulk); - doOpen(); - for (int i = 0; i < NumberOfIterations; i++) { - doWriteRead(); - } - doClose(); - } - - @Test - public void multipleOpenCloseWithBulkWrite() throws Exception { - devinfo.setMode(TransferMode.Bulk); - for (int i = 0; i < 5; i++) { - doOpen(); - doClose(); - } - doOpenWriteReadClose(); - for (int i = 0; i < 10; i++) { - doOpen(); - doWriteRead(); - doClose(); - } - doOpenWriteReadClose(); - for (int i = 0; i < 5; i++) { - doOpen(); - doClose(); - } - } - - @Test - public void bulkAndInterrupt() throws Exception { - doOpen(); - // BULK - devinfo.setMode(TransferMode.Bulk); - doWriteRead(); - // INTERRUPT - devinfo.setMode(TransferMode.Interrupt); - doWriteRead(); - doClose(); - } - - @Test - public void bulkAndInterruptMultiple() throws Exception { - for (int i = 0; i < 20; i++) { - devinfo.setMode(TransferMode.Bulk); - doOpenWriteReadClose(); - devinfo.setMode(TransferMode.Interrupt); - doOpenWriteReadClose(); - } - } - - @Test - public void controlMsg() throws Exception { - try { - dev.open(devinfo.getConfiguration(), devinfo.getInterface(), - devinfo.getAltinterface()); - // GET STATUS (device) - byte[] data = getTestData(2); - int length = dev.controlMsg(USB.REQ_TYPE_DIR_DEVICE_TO_HOST - | USB.REQ_TYPE_TYPE_STANDARD | USB.REQ_TYPE_RECIP_DEVICE, - USB.REQ_GET_STATUS, 0, 0, data, data.length, devinfo - .getTimeout(), false); - assertTrue(length > 0); - assertEquals((byte) 0x01, data[0]); - assertEquals((byte) 0x00, data[1]); - // GET STATUS (interface) - data = getTestData(2); - length = dev.controlMsg( - USB.REQ_TYPE_DIR_DEVICE_TO_HOST - | USB.REQ_TYPE_TYPE_STANDARD - | USB.REQ_TYPE_RECIP_INTERFACE, USB.REQ_GET_STATUS, - 0, 0, data, data.length, devinfo.getTimeout(), false); - assertTrue(length > 0); - assertEquals((byte) 0x00, data[0]); - assertEquals((byte) 0x00, data[1]); - // GET STATUS (endpoint) - data = getTestData(2); - length = dev.controlMsg(USB.REQ_TYPE_DIR_DEVICE_TO_HOST - | USB.REQ_TYPE_TYPE_STANDARD | USB.REQ_TYPE_RECIP_ENDPOINT, - USB.REQ_GET_STATUS, 0, 0, data, data.length, devinfo - .getTimeout(), false); - assertTrue(length > 0); - assertEquals((byte) 0x00, data[0]); - assertEquals((byte) 0x00, data[1]); - // GET CONFIGURATION - data = getTestData(1); - length = dev.controlMsg(USB.REQ_TYPE_DIR_DEVICE_TO_HOST - | USB.REQ_TYPE_TYPE_STANDARD | USB.REQ_TYPE_RECIP_DEVICE, - USB.REQ_GET_CONFIGURATION, 0, 0, data, data.length, devinfo - .getTimeout(), false); - assertTrue(length > 0); - assertEquals((byte) devinfo.getConfiguration(), data[0]); - // // GET INTERFACE - // data = byte[1]; - // length = dev.controlMsg(USB.REQ_TYPE_DIR_DEVICE_TO_HOST - // | USB.REQ_TYPE_TYPE_STANDARD | USB.REQ_TYPE_RECIP_INTERFACE, - // USB.REQ_GET_INTERFACE, 0, devinfo.getInterface(), data, - // data.length, - // devinfo - // .getTimeout(), false); - // logData(data, length); - // GET DESCRIPTOR (device descriptor) - data = getTestData(128); - length = dev.controlMsg(USB.REQ_TYPE_DIR_DEVICE_TO_HOST - | USB.REQ_TYPE_TYPE_STANDARD | USB.REQ_TYPE_RECIP_DEVICE, - USB.REQ_GET_DESCRIPTOR, 1 << 8, 0, data, data.length, - devinfo.getTimeout(), false); - validateDeviceDescriptor(data, length); - // GET DESCRIPTOR (string descriptor (1)) - data = getTestData(128); - length = dev.controlMsg(USB.REQ_TYPE_DIR_DEVICE_TO_HOST - | USB.REQ_TYPE_TYPE_STANDARD | USB.REQ_TYPE_RECIP_DEVICE, - USB.REQ_GET_DESCRIPTOR, (3 << 8) + 1, 0, data, data.length, - devinfo.getTimeout(), false); - String s = getString(data, length); - assertEquals(s, devinfo.getManufacturer()); - // GET DESCRIPTOR (string descriptor (2)) - data = getTestData(128); - length = dev.controlMsg(USB.REQ_TYPE_DIR_DEVICE_TO_HOST - | USB.REQ_TYPE_TYPE_STANDARD | USB.REQ_TYPE_RECIP_DEVICE, - USB.REQ_GET_DESCRIPTOR, (3 << 8) + 2, 0, data, data.length, - devinfo.getTimeout(), false); - s = getString(data, length); - assertEquals(s, devinfo.getProduct()); - // GET DESCRIPTOR (string descriptor (3)) - data = getTestData(128); - length = dev.controlMsg(USB.REQ_TYPE_DIR_DEVICE_TO_HOST - | USB.REQ_TYPE_TYPE_STANDARD | USB.REQ_TYPE_RECIP_DEVICE, - USB.REQ_GET_DESCRIPTOR, (3 << 8) + 3, 0, data, data.length, - devinfo.getTimeout(), false); - s = getString(data, length); - assertEquals(s, devinfo.getSerialVersion()); - // close the device - dev.close(); - } catch (Exception e) { - closeOnException(); - throw e; - } catch (AssertionError e) { - closeOnException(); - throw e; - } - } - - private void closeOnException() { - try { - dev.close(); - } catch (USBException e1) { - // ignore exceptions - } - } - - private void validateDeviceDescriptor(byte[] data, int length) { - // length read - assertEquals(18, length); - // descriptor length - assertEquals((byte) 18, data[0]); - // descriptor type - assertEquals((byte) 1, data[1]); - // USB specification number LSB - assertEquals((byte) 0, data[2]); - // USB specification number MSB - assertEquals((byte) 0x02, data[3]); - // device class (vendor specific) - assertEquals((byte) 0xff, data[4]); - // device subclass (vendor specific) - assertEquals((byte) 0xff, data[5]); - // device protocol (vendor specific) - assertEquals((byte) 0xff, data[6]); - // maximum packet size for endpoint zero - assertEquals((byte) 64, data[7]); - // Vendor ID (NTB) LSB - assertEquals((byte) 0x35, data[8]); - // Vendor ID (NTB) MSB - assertEquals((byte) 0x82, data[9]); - // Product ID (JUnit test board) LSB - assertEquals((byte) 0x22, data[10]); - // Product ID (JUnit test board) MSB - assertEquals((byte) 0x02, data[11]); - - // Device release number LSB - assertEquals((byte) 0x00, data[12]); - // Device release number MSB - assertEquals((byte) 0x10, data[13]); - // Index of manufacturer string descriptor - assertEquals((byte) 0x01, data[14]); - // Index of product string descriptor - assertEquals((byte) 0x02, data[15]); - // Index of serial number string descriptor - assertEquals((byte) 0x03, data[16]); - // Number of possible configurations - assertEquals((byte) 0x01, data[17]); - } - - private byte[] getTestData(int length) { - byte[] b = new byte[length]; - for (int i = 0; i < b.length; i++) { - b[i] = (byte) (Math.random() * 256); - } - return b; - } - - @SuppressWarnings("unused") - private void logData(byte[] data, int length) { - if (length > 0) { - log.info("length: " + length); - String logData = ""; - for (int i = 0; i < length; i++) { - logData += "0x" + Integer.toHexString(data[i] & 0xff) + "\t"; - } - log.info(logData); - } - } - - private String getString(byte[] data, int length) - throws UnsupportedEncodingException { - // data length - assertTrue(length > 2); - // string length - assertTrue(data[0] > 2); - // string descriptor ident - assertEquals((byte) 3, data[1]); - // create string from data - return new String(data, 2, length - 2, "UTF-16LE"); - } - - @Test - public void invalidConfig() throws Exception { - try { - dev.open(devinfo.getConfiguration() + 5, devinfo.getInterface(), - devinfo.getAltinterface()); - fail("USBException expected"); - } catch (USBException e) { - log.severe("could not set config " - + (devinfo.getConfiguration() + 5)); - } - doOpenWriteReadClose(); - } - - @Test - public void invalidInterface() throws Exception { - try { - dev.open(devinfo.getConfiguration(), devinfo.getInterface() + 5, - devinfo.getAltinterface()); - fail("USBException expected"); - } catch (USBException e) { - log.severe("could not claim interface " - + (devinfo.getInterface() + 5)); - } - doOpenWriteReadClose(); - } - - @Test - public void invalidAltinterface() throws Exception { - try { - dev.open(devinfo.getConfiguration(), devinfo.getInterface(), - devinfo.getAltinterface() + 5); - fail("USBException expected"); - } catch (USBException e) { - log.severe("could not set alt interface " - + (devinfo.getAltinterface() + 5)); - } - doOpenWriteReadClose(); - } - - @Test - public void testGetIdProduct() { - Assert.assertEquals(devinfo.getIdProduct(), dev.getIdProduct()); - } - - @Test - public void testGetIdVendor() { - Assert.assertEquals(devinfo.getIdVendor(), dev.getIdVendor()); - } - - @Test - public void testGetAltinterface() { - Assert.assertEquals(devinfo.getAltinterface(), dev.getAltinterface()); - } - - @Test - public void testGetConfiguration() { - Assert.assertEquals(devinfo.getConfiguration(), dev.getConfiguration()); - } - - @Test - public void testGetInterface() { - Assert.assertEquals(devinfo.getInterface(), dev.getInterface()); - } - - @Test - public void testGetMaxPacketSize() throws USBException { - doOpen(); - Assert.assertEquals(devinfo.getMaxDataSize(), dev.getMaxPacketSize()); - doClose(); - } - - @AfterClass - public static void tearDown() throws Exception { - if (dev != null && dev.isOpen()) { - dev.close(); - } - } - - private void doOpen() throws USBException { - dev.open(devinfo.getConfiguration(), devinfo.getInterface(), devinfo - .getAltinterface()); - } - - private void doClose() throws USBException { - dev.close(); - } - - private void doOpenWriteReadClose() throws Exception { - doOpen(); - doWriteRead(); - doClose(); - } - - private void doWriteRead() throws Exception { - initTestData(); - try { - if (devinfo.getMode().equals(TransferMode.Bulk)) { - if (devinfo.getOutEPBulk() != -1) { - dev.writeBulk(devinfo.getOutEPBulk(), testData, - testData.length, devinfo.getTimeout(), false); - } - if (devinfo.getInEPBulk() != -1) { - dev.readBulk(devinfo.getInEPBulk(), readData, - readData.length, devinfo.getTimeout(), false); - } - } else if (devinfo.getMode().equals(TransferMode.Interrupt)) { - if (devinfo.getOutEPInt() != -1) { - dev.writeInterrupt(devinfo.getOutEPInt(), testData, - testData.length, devinfo.getTimeout(), false); - } - if (devinfo.getInEPInt() != -1) { - dev.readInterrupt(devinfo.getInEPInt(), readData, - readData.length, devinfo.getTimeout(), false); - } - } - if (devinfo.doCompareData()) { - compare(testData, readData); - } - } catch (AssertionError e) { - closeOnException(); - throw e; - } catch (Exception e) { - closeOnException(); - throw e; - } - } - - private static void compare(byte[] d1, byte[] d2) { - int minLength = Math.min(d1.length, d2.length); - for (int i = 0; i < minLength; i++) { - assertEquals(d1[i], d2[i]); - } - } - - private static void timeout() { - try { - Thread.sleep(devinfo.getSleepTimeout()); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - private static void initTestData() { - for (int i = 0; i < testData.length; i++) { - testData[i] = (byte) (Math.random() * 0xff); - readData[i] = 0; - } - } -} diff --git a/java/test/ch/ntb/usb/test/MemoryLeakTest.java b/java/test/ch/ntb/usb/test/MemoryLeakTest.java deleted file mode 100644 index 525405d..0000000 --- a/java/test/ch/ntb/usb/test/MemoryLeakTest.java +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2008 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; -import java.io.InputStream; -import java.io.PrintStream; -import java.util.Properties; -import java.util.logging.Logger; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -import ch.ntb.usb.Device; -import ch.ntb.usb.LibusbJava; -import ch.ntb.usb.USB; -import ch.ntb.usb.USBException; -import ch.ntb.usb.Usb_Bus; -import ch.ntb.usb.Utils; -import ch.ntb.usb.testApp.AbstractDeviceInfo; -import ch.ntb.usb.testApp.AbstractDeviceInfo.TransferMode; - -public class MemoryLeakTest { - - private static final String testdevicePropertiesFile = "testdevice.properties"; - private static final String deviceInfoKey = "testdeviceInfo"; - - private static AbstractDeviceInfo devinfo; - - private static byte[] testData; - - private static byte[] readData; - - private static Device dev; - - private static Logger log = Logger - .getLogger(MemoryLeakTest.class.getName()); - - @BeforeClass - public static void setUp() throws Exception { - // load the device info class with the key - // from 'testdevice.properties' - InputStream propInputStream = new FileInputStream( - testdevicePropertiesFile); - Properties devInfoProp = new Properties(); - devInfoProp.load(propInputStream); - String devInfoClazzName = devInfoProp.getProperty(deviceInfoKey); - if (devInfoClazzName == null) { - throw new Exception("property " + deviceInfoKey - + " not found in file " + testdevicePropertiesFile); - } - Class devInfoClazz = Class.forName(devInfoClazzName); - devinfo = (AbstractDeviceInfo) devInfoClazz.newInstance(); - // setup test data - testData = new byte[devinfo.getMaxDataSize()]; - readData = new byte[testData.length]; - // initialise the device - LibusbJava.usb_set_debug(255); - dev = USB.getDevice(devinfo.getIdVendor(), devinfo.getIdProduct()); - assertNotNull(dev); - - // print the devices - LibusbJava.usb_init(); - LibusbJava.usb_find_busses(); - LibusbJava.usb_find_devices(); - Usb_Bus bus = LibusbJava.usb_get_busses(); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - PrintStream ps = new PrintStream(baos); - Utils.logBus(bus, ps); - log.info(baos.toString()); - } - - @Test - public void initalReset() throws Exception { - doOpen(); - dev.reset(); - timeout(); - } - - @Test - public void bulkWriteReadMultiple() throws Exception { - final int NumberOfIterations = 3000; - - devinfo.setMode(TransferMode.Bulk); - doOpen(); - for (int i = 0; i < NumberOfIterations; i++) { - doWriteRead(); - if (i % 1000 == 0) { - System.out.print("."); - } - } - doClose(); - } - - @Test - public void interruptWriteReadMultiple() throws Exception { - final int NumberOfIterations = 3000; - - devinfo.setMode(TransferMode.Interrupt); - doOpen(); - for (int i = 0; i < NumberOfIterations; i++) { - doWriteRead(); - if (i % 1000 == 0) { - System.out.print("."); - } - } - doClose(); - } - - private void closeOnException() { - try { - dev.close(); - } catch (USBException e1) { - // ignore exceptions - } - } - - @AfterClass - public static void tearDown() throws Exception { - if (dev != null && dev.isOpen()) { - dev.close(); - } - } - - private void doOpen() throws USBException { - dev.open(devinfo.getConfiguration(), devinfo.getInterface(), devinfo - .getAltinterface()); - } - - private void doClose() throws USBException { - dev.close(); - } - - private void doWriteRead() throws Exception { - initTestData(); - try { - if (devinfo.getMode().equals(TransferMode.Bulk)) { - if (devinfo.getOutEPBulk() != -1) { - dev.writeBulk(devinfo.getOutEPBulk(), testData, - testData.length, devinfo.getTimeout(), false); - } - if (devinfo.getInEPBulk() != -1) { - dev.readBulk(devinfo.getInEPBulk(), readData, - readData.length, devinfo.getTimeout(), false); - } - } else if (devinfo.getMode().equals(TransferMode.Interrupt)) { - if (devinfo.getOutEPInt() != -1) { - dev.writeInterrupt(devinfo.getOutEPInt(), testData, - testData.length, devinfo.getTimeout(), false); - } - if (devinfo.getInEPInt() != -1) { - dev.readInterrupt(devinfo.getInEPInt(), readData, - readData.length, devinfo.getTimeout(), false); - } - } - if (devinfo.doCompareData()) { - compare(testData, readData); - } - } catch (AssertionError e) { - closeOnException(); - throw e; - } catch (Exception e) { - closeOnException(); - throw e; - } - } - - private static void compare(byte[] d1, byte[] d2) { - final int minLength = Math.min(d1.length, d2.length); - for (int i = 0; i < minLength; i++) { - assertEquals(d1[i], d2[i]); - } - } - - private static void timeout() { - try { - Thread.sleep(devinfo.getSleepTimeout()); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - private static void initTestData() { - for (int i = 0; i < testData.length; i++) { - testData[i] = (byte) (Math.random() * 0xff); - readData[i] = 0; - } - } -} diff --git a/java/test/ch/ntb/usb/test/TestLibUsbJava.java b/java/test/ch/ntb/usb/test/TestLibUsbJava.java deleted file mode 100644 index 0a582a8..0000000 --- a/java/test/ch/ntb/usb/test/TestLibUsbJava.java +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2007 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.test; - -import ch.ntb.usb.LibusbJava; -import ch.ntb.usb.Usb_Bus; -import ch.ntb.usb.Usb_Config_Descriptor; -import ch.ntb.usb.Usb_Device; -import ch.ntb.usb.Usb_Endpoint_Descriptor; -import ch.ntb.usb.Usb_Interface; -import ch.ntb.usb.Usb_Interface_Descriptor; - -/** - * This class replicates the code from testlibusb.c supplied in the - * libusb-0.1.12 release. - */ -public class TestLibUsbJava { - static boolean verbose; - - /** - * prints out endpoint info - * - * @param endpoint - * The end point. - */ - private static void printEndpoint(Usb_Endpoint_Descriptor endpoint) { - System.out.print(String.format(" bEndpointAddress: %02xh\n", - endpoint.getBEndpointAddress())); - System.out.print(String.format(" bmAttributes: %02xh\n", - endpoint.getBmAttributes())); - System.out.print(String.format(" wMaxPacketSize: %d\n", endpoint - .getWMaxPacketSize())); - System.out.print(String.format(" bInterval: %d\n", endpoint - .getBInterval())); - System.out.print(String.format(" bRefresh: %d\n", endpoint - .getBRefresh())); - System.out.print(String.format(" bSynchAddress: %d\n", endpoint - .getBSynchAddress())); - } - - /** - * prints out the interface descriptor - * - * @param interfaceDescript - * The interface descriptor. - */ - private static void printAltsetting( - Usb_Interface_Descriptor interfaceDescript) { - System.out.print(String.format(" bInterfaceNumber: %d\n", - interfaceDescript.getBInterfaceNumber())); - System.out.print(String.format(" bAlternateSetting: %d\n", - interfaceDescript.getBAlternateSetting())); - System.out.print(String.format(" bNumEndpoints: %d\n", - interfaceDescript.getBNumEndpoints())); - System.out.print(String.format(" bInterfaceClass: %d\n", - interfaceDescript.getBInterfaceClass())); - System.out.print(String.format(" bInterfaceSubClass: %d\n", - interfaceDescript.getBInterfaceSubClass())); - System.out.print(String.format(" bInterfaceProtocol: %d\n", - interfaceDescript.getBInterfaceProtocol())); - System.out.print(String.format(" iInterface: %d\n", - interfaceDescript.getIInterface())); - - for (int i = 0; i < interfaceDescript.getBNumEndpoints(); i++) { - printEndpoint(interfaceDescript.getEndpoint()[i]); - } - } - - /** - * prints out interface - * - * @param usbInterface - * The interface. - */ - private static void printInterface(Usb_Interface usbInterface) { - for (int i = 0; i < usbInterface.getNumAltsetting(); i++) { - printAltsetting(usbInterface.getAltsetting()[i]); - } - } - - /** - * prints out configuration - * - * @param config - * The configuration. - */ - private static void printConfiguration(Usb_Config_Descriptor config) { - System.out.print(String.format(" wTotalLength: %d\n", config - .getWTotalLength())); - System.out.print(String.format(" bNumInterfaces: %d\n", config - .getBNumInterfaces())); - System.out.print(String.format(" bConfigurationValue: %d\n", config - .getBConfigurationValue())); - System.out.print(String.format(" iConfiguration: %d\n", config - .getIConfiguration())); - System.out.print(String.format(" bmAttributes: %02xh\n", - config.getBmAttributes())); - System.out.print(String.format(" MaxPower: %d\n", config - .getMaxPower())); - - for (int i = 0; i < config.getBNumInterfaces(); i++) { - printInterface(config.getInterface()[i]); - } - } - - private static int printDevice(Usb_Device dev, int level) { - long udev; - String mfr; - String product; - String sn; - String spaces; - String descript; - - spaces = " "; - - udev = LibusbJava.usb_open(dev); - - if (udev != 0) { - if (dev.getDescriptor().getIManufacturer() != 0) { - mfr = LibusbJava.usb_get_string_simple(udev, dev - .getDescriptor().getIManufacturer()); - - if (mfr != null) { - descript = String.format("%s - ", mfr); - } else { - descript = String.format("%04X - ", dev.getDescriptor() - .getIdVendor()); - } - } else { - descript = String.format("%04X - ", dev.getDescriptor() - .getIdVendor()); - } - - if (dev.getDescriptor().getIProduct() != 0) { - product = LibusbJava.usb_get_string_simple(udev, dev - .getDescriptor().getIProduct()); - - if (product != null) { - descript = descript + String.format("%s", product); - } else { - descript = descript - + String.format("%04X", dev.getDescriptor() - .getIdProduct()); - } - } else { - descript = descript - + String.format("%04X", dev.getDescriptor() - .getIdProduct()); - } - } else { - descript = String.format("%04X - %04X", dev.getDescriptor() - .getIdVendor(), dev.getDescriptor().getIdProduct()); - } - - System.out.print(String.format("%sDev #%d: %s\n", spaces.substring(0, - level * 2), dev.getDevnum(), descript)); - - if ((udev != 0) && verbose) { - if (dev.getDescriptor().getISerialNumber() != 0) { - sn = LibusbJava.usb_get_string_simple(udev, dev.getDescriptor() - .getISerialNumber()); - - if (sn != null) { - System.out.print(String.format("%s - Serial Number: %s\n", - spaces.substring(0, level * 2), sn)); - } - } - } - - if (udev != 0) { - LibusbJava.usb_close(udev); - } - - if (verbose) { - if (dev.getConfig().length == 0) { - System.out.print(" Couldn't retrieve descriptors\n"); - - return 0; - } - - for (int i = 0; i < dev.getDescriptor().getBNumConfigurations(); i++) { - printConfiguration(dev.getConfig()[i]); - } - } else { - Usb_Device childDev = null; - - for (int i = 0; i < dev.getNumChildren(); i++) { - if (i == 0) { - childDev = dev.getChildren(); - } else { - childDev = childDev.getNext(); - } - - printDevice(childDev, level + 1); - } - } - - return 0; - } // end of printDevice method - - /** - * The main method. - * - * @param args - * The command line arguments. - */ - public static void main(String args[]) throws Exception { - if ((args.length > 0) && (args[0].equals("-v"))) { - verbose = true; - } else { - verbose = false; - } - - // used for debugging. 0 = no debugging, 255 = with debugging - // - LibusbJava.usb_set_debug(255); - - LibusbJava.usb_init(); - - LibusbJava.usb_find_busses(); - LibusbJava.usb_find_devices(); - - for (Usb_Bus bus = LibusbJava.usb_get_busses(); bus != null; bus = bus - .getNext()) { - if ((bus.getRootDev() != null) && !verbose) { - printDevice(bus.getRootDev(), 0); - } else { - for (Usb_Device dev = bus.getDevices(); dev != null; dev = dev - .getNext()) { - printDevice(dev, 0); - } - } - } - } // end main -} // end of TestLibUsbJava class diff --git a/java/test/ch/ntb/usb/test/devices/AT90USB1287.java b/java/test/ch/ntb/usb/test/devices/AT90USB1287.java deleted file mode 100644 index 33603f6..0000000 --- a/java/test/ch/ntb/usb/test/devices/AT90USB1287.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.test.devices; - -import ch.ntb.usb.USB; -import ch.ntb.usb.testApp.AbstractDeviceInfo; - -public class AT90USB1287 extends AbstractDeviceInfo { - - @Override - public void initValues() { - setIdVendor((short) 0x8235); - setIdProduct((short) 0x0222); - setTimeout(2000); - setConfiguration(1); - setInterface(0); - setAltinterface(-1); - setOutEPBulk(0x01); - setInEPBulk(0x82); - setOutEPInt(0x03); - setInEPInt(0x84); - setSleepTimeout(2000); - setMaxDataSize(USB.FULLSPEED_MAX_BULK_PACKET_SIZE); - setMode(TransferMode.Bulk); - setManufacturer("inf.ntb.ch"); - setProduct("JUnit Test Board"); - setSerialVersion("00.10.00"); - } -} diff --git a/java/test/ch/ntb/usb/test/devices/CY7C68013A.java b/java/test/ch/ntb/usb/test/devices/CY7C68013A.java deleted file mode 100644 index 6664d1a..0000000 --- a/java/test/ch/ntb/usb/test/devices/CY7C68013A.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.test.devices; - -import ch.ntb.usb.USB; -import ch.ntb.usb.testApp.AbstractDeviceInfo; - -public class CY7C68013A extends AbstractDeviceInfo { - - @Override - public void initValues() { - setIdVendor((short) 0x8235); - setIdProduct((short) 0x0222); - setTimeout(2000); - setConfiguration(1); - setInterface(0); - setAltinterface(-1); - setOutEPInt(0x02); - setInEPInt(0x86); - setOutEPBulk(0x04); - setInEPBulk(0x88); - setSleepTimeout(2000); - setMaxDataSize(USB.HIGHSPEED_MAX_BULK_PACKET_SIZE); - setMode(TransferMode.Bulk); - } -} diff --git a/java/test/ch/ntb/usb/test/devices/MX500.java b/java/test/ch/ntb/usb/test/devices/MX500.java deleted file mode 100644 index c6fe7c3..0000000 --- a/java/test/ch/ntb/usb/test/devices/MX500.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.test.devices; - -import ch.ntb.usb.testApp.AbstractDeviceInfo; - -public class MX500 extends AbstractDeviceInfo { - - @Override - public void initValues() { - setIdVendor((short) 0x046d); - setIdProduct((short) 0xc025); - setTimeout(2000); - setConfiguration(1); - setInterface(0); - setAltinterface(0); - setOutEPInt(-1); - setInEPInt(0x81); - setOutEPBulk(-1); - setInEPBulk(-1); - setSleepTimeout(5000); - setMaxDataSize(5); - setMode(TransferMode.Interrupt); - // we only read data -> don't compare - setDoCompareData(false); - } -} diff --git a/java/test/ch/ntb/usb/test/devices/MousePlus.java b/java/test/ch/ntb/usb/test/devices/MousePlus.java deleted file mode 100644 index 9bb1a80..0000000 --- a/java/test/ch/ntb/usb/test/devices/MousePlus.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.test.devices; - -import ch.ntb.usb.testApp.AbstractDeviceInfo; - -public class MousePlus extends AbstractDeviceInfo { - - @Override - public void initValues() { - setIdVendor((short) 0x046d); - setIdProduct((short) 0xc016); - setBusName("bus-0"); - setFilename("\\\\.\\libusb0-0001--0x046d-0xc016"); - setTimeout(2000); - setConfiguration(1); - setInterface(0); - setAltinterface(0); - setOutEPInt(-1); - setInEPInt(0x81); - setOutEPBulk(-1); - setInEPBulk(-1); - setSleepTimeout(5000); - setMaxDataSize(4); - setMode(TransferMode.Interrupt); - // we only read data -> don't compare - setDoCompareData(false); - } -} diff --git a/java/testdevice.properties b/java/testdevice.properties deleted file mode 100644 index a10e97d..0000000 --- a/java/testdevice.properties +++ /dev/null @@ -1,13 +0,0 @@ -################################################################ -# define the usb test class for test/ch.ntb.usb.DeviceTest here -# it must implement ch.ntb.usb.AbstractDeviceInfo -################################################################ - -# Atmel AVR AT90USB1287 -testdeviceInfo=ch.ntb.usb.test.devices.AT90USB1287 -# Cypress FX2 CY7C68013A -#testdeviceInfo=ch.ntb.usb.test.devices.CY7C68013A -# MX500 Mouse -#testdeviceInfo=ch.ntb.usb.test.devices.MX500 -# Logitech Notebook Mouse Plus -#testdeviceInfo=ch.ntb.usb.test.devices.MousePlus diff --git a/java/uml/StarUML.url b/java/uml/StarUML.url deleted file mode 100644 index d3103e6..0000000 --- a/java/uml/StarUML.url +++ /dev/null @@ -1,3 +0,0 @@ -[InternetShortcut] -URL=http://staruml.sourceforge.net/ -Modified=7081E8FF540DC70101 diff --git a/java/uml/ch.ntb.usb.jpg b/java/uml/ch.ntb.usb.jpg deleted file mode 100644 index 9970f12..0000000 Binary files a/java/uml/ch.ntb.usb.jpg and /dev/null differ diff --git a/java/uml/ch.ntb.usb.uml b/java/uml/ch.ntb.usb.uml deleted file mode 100644 index 7de7f42..0000000 --- a/java/uml/ch.ntb.usb.uml +++ /dev/null @@ -1,2023 +0,0 @@ - - - - - - -UMLStandard - - - - -Untitled -5 - -Use Case Model -UMLStandard -useCaseModel -FtDtfOwik0OVQfE6ZPIIGQAA -1 - -Main -hbd/RrRc9EeCFFOhgTtNRQAA - -JzSJSx+4SUGBjb1zXBl8cQAA - - - - -Analysis Model -UMLStandard -analysisModel -FtDtfOwik0OVQfE6ZPIIGQAA -1 - -Main -True -RobustnessDiagram -CNPw4gYWoEG9/GGPCspCSAAA - -0DEch0URP06Bhr3ctOKuJQAA - - - - -Design Model -UMLStandard -designModel -FtDtfOwik0OVQfE6ZPIIGQAA -1 - -Main -True -+VhQCvPWpkq9N+U+GjchOQAA - -jGVxNbYj00Chrjdm4wEWXAAA -32 - -clMaroon -$00B9FFFF -56 -56 -713 -501 -BWFMxN62oEGNP+kKcODiEgAA - - -ch.ntb.usb - - -False - - -False - - - - -clMaroon -$00B9FFFF -448 -216 -113 -53 -Y0tGKOGA/UquqP1qaYDayQAA - - -1 -LibusbJava - - -False - - -False - - - -Y0tGKOGA/UquqP1qaYDayQAA - - -Y0tGKOGA/UquqP1qaYDayQAA - - -False -Y0tGKOGA/UquqP1qaYDayQAA - - - -clMaroon -$00B9FFFF -596 -272 -136 -68 -Native class to access -the LibusbJava.dll which -is a wrapper to the -LibUsb-Win32 API. - - - -clMaroon -$00B9FFFF -560,264;596,278 -kFuXbRCvX0OxyJYGXAJ2NwAA -bj7RYkSMO0qIEP8jkhRPkgAA - - -clMaroon -$00B9FFFF -440 -108 -140 -59 -NDp8e0ch10ST3dwxWPam4AAA - - -1 -Device - - -False - - -False - - - -NDp8e0ch10ST3dwxWPam4AAA - - -NDp8e0ch10ST3dwxWPam4AAA - - -False -NDp8e0ch10ST3dwxWPam4AAA - - - -clMaroon -$00B9FFFF -508,166;505,216 -bHBJ2iMT1Emo3/z1QruACAAA -bj7RYkSMO0qIEP8jkhRPkgAA -2BBmOZlXy0elqrvf1Pfb0QAA - -False -1.5707963267949 -15 -bHBJ2iMT1Emo3/z1QruACAAA - - -False -1.5707963267949 -30 -bHBJ2iMT1Emo3/z1QruACAAA - - -False --1.5707963267949 -15 -bHBJ2iMT1Emo3/z1QruACAAA - - -False --0.523598775598299 -30 -epHead -gBDIpZT7JEe5yWqm5udjswAA - - -False -0.523598775598299 -30 -epTail -9KWfrYr7HUmfL2Kub4NWjQAA - - -False -0.523598775598299 -25 -epHead -gBDIpZT7JEe5yWqm5udjswAA - - -False --0.523598775598299 -25 -epTail -9KWfrYr7HUmfL2Kub4NWjQAA - - -False --0.785398163397448 -40 -epHead -gBDIpZT7JEe5yWqm5udjswAA - - -False -0.785398163397448 -40 -epTail -9KWfrYr7HUmfL2Kub4NWjQAA - - -False --1000 --1000 -50 -8 -gBDIpZT7JEe5yWqm5udjswAA - - -False --1000 --1000 -50 -8 -9KWfrYr7HUmfL2Kub4NWjQAA - - - -clMaroon -$00B9FFFF -352 -308 -80 -43 -fKheOe+4606Ei/JrIdvAnwAA - - -1 -Usb_Bus - - -False - - -False - - - -fKheOe+4606Ei/JrIdvAnwAA - - -fKheOe+4606Ei/JrIdvAnwAA - - -False -fKheOe+4606Ei/JrIdvAnwAA - - - -clMaroon -$00B9FFFF -213 -308 -80 -43 -CYy/2ClqUUO8tWkJYxc3EwAA - - -1 -Usb_Device - - -False - - -False - - - -CYy/2ClqUUO8tWkJYxc3EwAA - - -CYy/2ClqUUO8tWkJYxc3EwAA - - -False -CYy/2ClqUUO8tWkJYxc3EwAA - - - -clMaroon -$00B9FFFF -352,329;292,329 -rRumqTzUKUikwPtpVUuuxQAA -EmkgqCDDHEeVmq/pvU4k2gAA -aFv0LI7ePk6WALpiWziNnAAA - -False -1.5707963267949 -15 -rRumqTzUKUikwPtpVUuuxQAA - - -False -1.5707963267949 -30 -rRumqTzUKUikwPtpVUuuxQAA - - -False --1.5707963267949 -15 -rRumqTzUKUikwPtpVUuuxQAA - - -False --0.523598775598299 -30 -epHead -fPb+E6EWw0SS68JSU1n2PQAA - - -False -0.523598775598299 -30 -epTail -Ktquk70tXEeWxRy5mE3lRQAA - - -0.523598775598299 -25 -epHead -0..* -fPb+E6EWw0SS68JSU1n2PQAA - - -False --0.523598775598299 -25 -epTail -Ktquk70tXEeWxRy5mE3lRQAA - - -False --0.785398163397448 -40 -epHead -fPb+E6EWw0SS68JSU1n2PQAA - - -False -0.785398163397448 -40 -epTail -Ktquk70tXEeWxRy5mE3lRQAA - - -False --1000 --1000 -50 -8 -fPb+E6EWw0SS68JSU1n2PQAA - - -False --1000 --1000 -50 -8 -Ktquk70tXEeWxRy5mE3lRQAA - - - -clMaroon -$00B9FFFF -68 -308 -97 -43 -BhOtKDs6x0a1MSfBURjV3wAA - - -1 -Usb_Descriptor - - -False - - -False - - - -BhOtKDs6x0a1MSfBURjV3wAA - - -BhOtKDs6x0a1MSfBURjV3wAA - - -False -BhOtKDs6x0a1MSfBURjV3wAA - - - -clMaroon -$00B9FFFF -213,329;164,329 -iOkg8RoFXkawUPB8gsL6/QAA -+ip26EaWW06hVyLJe7YYXgAA -EmkgqCDDHEeVmq/pvU4k2gAA - -False -1.5707963267949 -15 -iOkg8RoFXkawUPB8gsL6/QAA - - -False -1.5707963267949 -30 -iOkg8RoFXkawUPB8gsL6/QAA - - -False --1.5707963267949 -15 -iOkg8RoFXkawUPB8gsL6/QAA - - -False --0.523598775598299 -30 -epHead -i+tjppNl/0SEXFu6g5HCzwAA - - -False -0.523598775598299 -30 -epTail -L09q640bS0+0SD6RlutglgAA - - -0.523598775598299 -25 -epHead -1 -i+tjppNl/0SEXFu6g5HCzwAA - - -False --0.523598775598299 -25 -epTail -L09q640bS0+0SD6RlutglgAA - - -False --0.785398163397448 -40 -epHead -i+tjppNl/0SEXFu6g5HCzwAA - - -False -0.785398163397448 -40 -epTail -L09q640bS0+0SD6RlutglgAA - - -False --1000 --1000 -50 -8 -i+tjppNl/0SEXFu6g5HCzwAA - - -False --1000 --1000 -50 -8 -L09q640bS0+0SD6RlutglgAA - - - -clMaroon -$00B9FFFF -64 -396 -139 -43 -WnjxeWRoQE+dRj+3+FKmAAAA - - -1 -Usb_Config_Descriptor - - -False - - -False - - - -WnjxeWRoQE+dRj+3+FKmAAAA - - -WnjxeWRoQE+dRj+3+FKmAAAA - - -False -WnjxeWRoQE+dRj+3+FKmAAAA - - - -clMaroon -$00B9FFFF -224,350;162,396 -hSAawvsHfkmM8rOCrDJNqwAA -V/iR3pEvp0+E4vtLxulBFwAA -EmkgqCDDHEeVmq/pvU4k2gAA - -False -1.5707963267949 -15 -hSAawvsHfkmM8rOCrDJNqwAA - - -False -1.5707963267949 -30 -hSAawvsHfkmM8rOCrDJNqwAA - - -False --1.5707963267949 -15 -hSAawvsHfkmM8rOCrDJNqwAA - - -False --0.523598775598299 -30 -epHead -eYy3sCm5cU2qevI2XvqfOQAA - - -False -0.523598775598299 -30 -epTail -bi54YUBBk0OKg2sVhfeXsgAA - - -0.523598775598299 -25 -epHead -1..* -eYy3sCm5cU2qevI2XvqfOQAA - - -False --0.523598775598299 -25 -epTail -bi54YUBBk0OKg2sVhfeXsgAA - - -False --0.785398163397448 -40 -epHead -eYy3sCm5cU2qevI2XvqfOQAA - - -False -0.785398163397448 -40 -epTail -bi54YUBBk0OKg2sVhfeXsgAA - - -False --1000 --1000 -50 -8 -eYy3sCm5cU2qevI2XvqfOQAA - - -False --1000 --1000 -50 -8 -bi54YUBBk0OKg2sVhfeXsgAA - - - -clMaroon -$00B9FFFF -288 -396 -91 -43 -s3tyNjh10EOlP9fTFKCHzgAA - - -1 -Usb_Interface - - -False - - -False - - - -s3tyNjh10EOlP9fTFKCHzgAA - - -s3tyNjh10EOlP9fTFKCHzgAA - - -False -s3tyNjh10EOlP9fTFKCHzgAA - - - -clMaroon -$00B9FFFF -202,417;288,417 -mH3MSoB9/UmX+ZKIsczTmQAA -9cvRIAusL0q/WdlYUOTN0QAA -V/iR3pEvp0+E4vtLxulBFwAA - -False -1.5707963267949 -15 -mH3MSoB9/UmX+ZKIsczTmQAA - - -False -1.5707963267949 -30 -mH3MSoB9/UmX+ZKIsczTmQAA - - -False --1.5707963267949 -15 -mH3MSoB9/UmX+ZKIsczTmQAA - - -False --0.523598775598299 -30 -epHead -g9gIEMzm106FV2WEfzg/cgAA - - -False -0.523598775598299 -30 -epTail -ss4cvrGCjkas7SCXWHrzGwAA - - -0.523598775598299 -25 -epHead -1..* -g9gIEMzm106FV2WEfzg/cgAA - - -False --0.523598775598299 -25 -epTail -ss4cvrGCjkas7SCXWHrzGwAA - - -False --0.785398163397448 -40 -epHead -g9gIEMzm106FV2WEfzg/cgAA - - -False -0.785398163397448 -40 -epTail -ss4cvrGCjkas7SCXWHrzGwAA - - -False --1000 --1000 -50 -8 -g9gIEMzm106FV2WEfzg/cgAA - - -False --1000 --1000 -50 -8 -ss4cvrGCjkas7SCXWHrzGwAA - - - -clMaroon -$00B9FFFF -64 -500 -157 -43 -1ZxdCeSlnke1mOXmwZo44gAA - - -1 -Usb_Interface_Descriptor - - -False - - -False - - - -1ZxdCeSlnke1mOXmwZo44gAA - - -1ZxdCeSlnke1mOXmwZo44gAA - - -False -1ZxdCeSlnke1mOXmwZo44gAA - - - -clMaroon -$00B9FFFF -294,438;180,500 -PzrlQ1JpekCs4WZeZXoxzAAA -SDQcLhaItkO2CR3ujsiVQgAA -9cvRIAusL0q/WdlYUOTN0QAA - -False -1.5707963267949 -15 -PzrlQ1JpekCs4WZeZXoxzAAA - - -False -1.5707963267949 -30 -PzrlQ1JpekCs4WZeZXoxzAAA - - -False --1.5707963267949 -15 -PzrlQ1JpekCs4WZeZXoxzAAA - - -False --0.523598775598299 -30 -epHead -4CMW55+u4U+8jmDGtiId6QAA - - -False -0.523598775598299 -30 -epTail -tSa9Dc6pX06DqFwtod8w3wAA - - -0.523598775598299 -25 -epHead -1..* -4CMW55+u4U+8jmDGtiId6QAA - - -False --0.523598775598299 -25 -epTail -tSa9Dc6pX06DqFwtod8w3wAA - - -False --0.785398163397448 -40 -epHead -4CMW55+u4U+8jmDGtiId6QAA - - -False -0.785398163397448 -40 -epTail -tSa9Dc6pX06DqFwtod8w3wAA - - -False --1000 --1000 -50 -8 -4CMW55+u4U+8jmDGtiId6QAA - - -False --1000 --1000 -50 -8 -tSa9Dc6pX06DqFwtod8w3wAA - - - -clMaroon -$00B9FFFF -296 -500 -153 -43 -r8we3ZgdtE+PkC4ethr1xgAA - - -1 -Usb_Endpoint_Descriptor - - -False - - -False - - - -r8we3ZgdtE+PkC4ethr1xgAA - - -r8we3ZgdtE+PkC4ethr1xgAA - - -False -r8we3ZgdtE+PkC4ethr1xgAA - - - -clMaroon -$00B9FFFF -220,521;296,521 -zcRjiWnEb0igPnnJ6hWtBAAA -G7uniSci8UWnqaXbrSHwxQAA -SDQcLhaItkO2CR3ujsiVQgAA - -False -1.5707963267949 -15 -zcRjiWnEb0igPnnJ6hWtBAAA - - -False -1.5707963267949 -30 -zcRjiWnEb0igPnnJ6hWtBAAA - - -False --1.5707963267949 -15 -zcRjiWnEb0igPnnJ6hWtBAAA - - -False --0.523598775598299 -30 -epHead -otEuPscjc0GzY5FZ4edKDQAA - - -False -0.523598775598299 -30 -epTail -Y0+EzvEeiUOOez0CtW5HcQAA - - -0.523598775598299 -25 -epHead -1..* -otEuPscjc0GzY5FZ4edKDQAA - - -False --0.523598775598299 -25 -epTail -Y0+EzvEeiUOOez0CtW5HcQAA - - -False --0.785398163397448 -40 -epHead -otEuPscjc0GzY5FZ4edKDQAA - - -False -0.785398163397448 -40 -epTail -Y0+EzvEeiUOOez0CtW5HcQAA - - -False --1000 --1000 -50 -8 -otEuPscjc0GzY5FZ4edKDQAA - - -False --1000 --1000 -50 -8 -Y0+EzvEeiUOOez0CtW5HcQAA - - - -clMaroon -$00B9FFFF -80 -112 -253 -56 -uDTqegf/MkeBHojXFEOLGwAA - - -1 -USB - - -False - - -False - - - -uDTqegf/MkeBHojXFEOLGwAA - - -uDTqegf/MkeBHojXFEOLGwAA - - -False -uDTqegf/MkeBHojXFEOLGwAA - - - -clMaroon -$00B9FFFF -24 -200 -129 -57 -A device factory which -creates and manages -all device instances. - - - -clMaroon -$00B9FFFF -125,200;169,167 -6dw/hbnfL0KObRrJlTOaOAAA -QgnPJMfYfkKI63CxIbKrUQAA - - -clMaroon -$00B9FFFF -470,268;418,308 -CUdyl1aeZ0+5m6T7YR+ScwAA -aFv0LI7ePk6WALpiWziNnAAA -bj7RYkSMO0qIEP8jkhRPkgAA - -False -1.5707963267949 -15 -CUdyl1aeZ0+5m6T7YR+ScwAA - - -False -1.5707963267949 -30 -CUdyl1aeZ0+5m6T7YR+ScwAA - - -False --1.5707963267949 -15 -CUdyl1aeZ0+5m6T7YR+ScwAA - - -False --0.523598775598299 -30 -epHead -eMLC5J+HEUOU0BNl4xEgOQAA - - -False -0.523598775598299 -30 -epTail -yd1VA+Osg0auP1WmaHV/pAAA - - -0.523598775598299 -25 -epHead -1 -eMLC5J+HEUOU0BNl4xEgOQAA - - -False --0.523598775598299 -25 -epTail -yd1VA+Osg0auP1WmaHV/pAAA - - -False --0.785398163397448 -40 -epHead -eMLC5J+HEUOU0BNl4xEgOQAA - - -False -0.785398163397448 -40 -epTail -yd1VA+Osg0auP1WmaHV/pAAA - - -False --1000 --1000 -50 -8 -eMLC5J+HEUOU0BNl4xEgOQAA - - -False --1000 --1000 -50 -8 -yd1VA+Osg0auP1WmaHV/pAAA - - - -clMaroon -$00B9FFFF -448 -364 -86 -41 -Linked List of -type Usb_Bus - - - -clMaroon -$00B9FFFF -454,364;429,350 -aFv0LI7ePk6WALpiWziNnAAA -rLlcF+A5KkiU7WAvQnrBbgAA - - -clMaroon -$00B9FFFF -228 -244 -101 -41 -Linked List of -type Usb_Device - - - -clMaroon -$00B9FFFF -260,308;270,284 -Pv0Pt3qkZkmPtYeARmmwEAAA -EmkgqCDDHEeVmq/pvU4k2gAA - - -clMaroon -$00B9FFFF -332,138;440,137 -E/QwNfFGUEiitlqp99S36AAA -2BBmOZlXy0elqrvf1Pfb0QAA -6dw/hbnfL0KObRrJlTOaOAAA - -False -1.5707963267949 -15 -E/QwNfFGUEiitlqp99S36AAA - - -False -0.977411820724642 -48.0416485978573 -E/QwNfFGUEiitlqp99S36AAA - - -False --1.5707963267949 -15 -E/QwNfFGUEiitlqp99S36AAA - - -False --0.523598775598299 -30 -epHead -tXktVESMQUOZFggmJCAGDAAA - - -False -0.523598775598299 -30 -epTail -ym/t3t4KOkinRJAqyF+HwQAA - - -0.523598775598299 -25 -epHead -0..* -tXktVESMQUOZFggmJCAGDAAA - - -False --0.523598775598299 -25 -epTail -ym/t3t4KOkinRJAqyF+HwQAA - - -False --0.785398163397448 -40 -epHead -tXktVESMQUOZFggmJCAGDAAA - - -False -0.785398163397448 -40 -epTail -ym/t3t4KOkinRJAqyF+HwQAA - - -False --1000 --1000 -50 -8 -tXktVESMQUOZFggmJCAGDAAA - - -False --1000 --1000 -50 -8 -ym/t3t4KOkinRJAqyF+HwQAA - - - -clMaroon -$00B9FFFF -656 -92 -89 -56 -p/wk8BA7x0OTRXXHy0OJmgAA - - -1 -USBException - - -<<exception>> - - -False - - - -p/wk8BA7x0OTRXXHy0OJmgAA - - -p/wk8BA7x0OTRXXHy0OJmgAA - - - -clMaroon -$00B9FFFF -628 -168 -134 -56 -nCivixeClUeJ/8WDflvLoAAA - - -1 -USBTimeoutException - - -<<exception>> - - -False - - - -nCivixeClUeJ/8WDflvLoAAA - - -nCivixeClUeJ/8WDflvLoAAA - - - -clMaroon -$00B9FFFF -579,130;656,123 -3Xd7YkTVeUijpP0dxF3K9wAA -1cUBYeKUdUuMBdS17locfgAA -2BBmOZlXy0elqrvf1Pfb0QAA - -False -1.5707963267949 -15 -3Xd7YkTVeUijpP0dxF3K9wAA - - -False -1.5707963267949 -30 -3Xd7YkTVeUijpP0dxF3K9wAA - - -False --1.5707963267949 -15 -3Xd7YkTVeUijpP0dxF3K9wAA - - -False --0.523598775598299 -30 -epHead -PCKabEdsC0+42T+WCC0J+gAA - - -False -0.523598775598299 -30 -epTail -RwLaC/BiAE+6PNyQNM7DRwAA - - -False -0.523598775598299 -25 -epHead -PCKabEdsC0+42T+WCC0J+gAA - - -False --0.523598775598299 -25 -epTail -RwLaC/BiAE+6PNyQNM7DRwAA - - -False --0.785398163397448 -40 -epHead -PCKabEdsC0+42T+WCC0J+gAA - - -False -0.785398163397448 -40 -epTail -RwLaC/BiAE+6PNyQNM7DRwAA - - -False --1000 --1000 -50 -8 -PCKabEdsC0+42T+WCC0J+gAA - - -False --1000 --1000 -50 -8 -RwLaC/BiAE+6PNyQNM7DRwAA - - - -clMaroon -$00B9FFFF -579,159;628,174 -juy2GOZNhkq5f7cp9rQyWQAA -m44pRtEbJU63JQyFoCCxtAAA -2BBmOZlXy0elqrvf1Pfb0QAA - -False -1.5707963267949 -15 -juy2GOZNhkq5f7cp9rQyWQAA - - -False -1.5707963267949 -30 -juy2GOZNhkq5f7cp9rQyWQAA - - -False --1.5707963267949 -15 -juy2GOZNhkq5f7cp9rQyWQAA - - -False --0.523598775598299 -30 -epHead -cJakFa0mdEChcxEhYeDaKwAA - - -False -0.523598775598299 -30 -epTail -RJcA8VyDe0K2sWOwSOHLiwAA - - -False -0.523598775598299 -25 -epHead -cJakFa0mdEChcxEhYeDaKwAA - - -False --0.523598775598299 -25 -epTail -RJcA8VyDe0K2sWOwSOHLiwAA - - -False --0.785398163397448 -40 -epHead -cJakFa0mdEChcxEhYeDaKwAA - - -False -0.785398163397448 -40 -epTail -RJcA8VyDe0K2sWOwSOHLiwAA - - -False --1000 --1000 -50 -8 -cJakFa0mdEChcxEhYeDaKwAA - - -False --1000 --1000 -50 -8 -RJcA8VyDe0K2sWOwSOHLiwAA - - - - -16 - -ch.ntb.usb -+VhQCvPWpkq9N+U+GjchOQAA -1 -3aqcGmdQBU2yR8XWwbH6wgAA -10 - -LibusbJava -BWFMxN62oEGNP+kKcODiEgAA -4 -bj7RYkSMO0qIEP8jkhRPkgAA -pYdCcwUS1kuxFBcQBuXWhwAA -B8g6dO1SPUKmK3vZse8ykwAA -uhBTnkByp0aEHfbKvbAIRgAA -2 -gBDIpZT7JEe5yWqm5udjswAA -yd1VA+Osg0auP1WmaHV/pAAA - - -Device -BWFMxN62oEGNP+kKcODiEgAA -4 -2BBmOZlXy0elqrvf1Pfb0QAA -vtJgj9fKHUOv3MF6LiZuaQAA -hWPO+G2l6UamJ9XP1xsU6gAA -4gcdaLKmOESleWMoU/ITdgAA -2 - -USBException -NDp8e0ch10ST3dwxWPam4AAA -3 -1cUBYeKUdUuMBdS17locfgAA -xvrkkvaXsEyKlXkeArvn6gAA -9XjxPvkTzUW160zoJoXJIgAA -2 -jAq2OWym/0CBShdxKGVvTgAA -PCKabEdsC0+42T+WCC0J+gAA - - -USBTimeoutException -NDp8e0ch10ST3dwxWPam4AAA -3 -m44pRtEbJU63JQyFoCCxtAAA -8ptu2+IQEkiODfeNkzBbIAAA -NCd0z6hUJUKirt04Te6MmAAA -2 -jB8ocTwTXEuDjkXR5KY03QAA -cJakFa0mdEChcxEhYeDaKwAA - -1 -S86PfEMMVEitYamqNGrOKgAA -6 -9KWfrYr7HUmfL2Kub4NWjQAA -tXktVESMQUOZFggmJCAGDAAA -gnNEskLBlEGy68pKD58J3gAA -gMOdBarVEUi69aAllgtqSAAA -RwLaC/BiAE+6PNyQNM7DRwAA -RJcA8VyDe0K2sWOwSOHLiwAA - - -Usb_Bus -BWFMxN62oEGNP+kKcODiEgAA -4 -aFv0LI7ePk6WALpiWziNnAAA -4mnVev5sO06YjJQcHwAzNAAA -ApB+Ycn4QkCd4JiwYWOuogAA -BoqVLNosikui7Gvm79DqwAAA -4 -Ktquk70tXEeWxRy5mE3lRQAA -BM39AT1FtkCD5DXdvFUWGwAA -eMLC5J+HEUOU0BNl4xEgOQAA -zVVM8HoZZ0K4SLvruROwSQAA - - -Usb_Device -BWFMxN62oEGNP+kKcODiEgAA -4 -EmkgqCDDHEeVmq/pvU4k2gAA -PTdUVfhJcUasUJqV7DrnzwAA -BrLi1ywnW0yy33ZKZYFfAQAA -mAD2mqiGJUmcDDGj80NyFwAA -4 -fPb+E6EWw0SS68JSU1n2PQAA -QkO09pUTaUqUag/gnTQhMAAA -L09q640bS0+0SD6RlutglgAA -bi54YUBBk0OKg2sVhfeXsgAA - - -Usb_Descriptor -BWFMxN62oEGNP+kKcODiEgAA -4 -+ip26EaWW06hVyLJe7YYXgAA -HHzH4uen30eMjBMjRst2mgAA -mqiCxho4tUOAdpt4/UzG1AAA -k95O6pb/JUut+HXhcujAvQAA -1 -i+tjppNl/0SEXFu6g5HCzwAA - - -Usb_Config_Descriptor -BWFMxN62oEGNP+kKcODiEgAA -4 -V/iR3pEvp0+E4vtLxulBFwAA -rC/MaZnjZkmCGY1tqVmdDQAA -bP5ruvrDjkuOZy0aWHw5qAAA -Tp/ZRDMhiEiRwOJ8Dte+6AAA -2 -eYy3sCm5cU2qevI2XvqfOQAA -ss4cvrGCjkas7SCXWHrzGwAA - - -Usb_Interface -BWFMxN62oEGNP+kKcODiEgAA -4 -9cvRIAusL0q/WdlYUOTN0QAA -mHOFyGNhZ02On/3bYclCQgAA -S8sNFKpNX0CfvJz4xM2R8QAA -ZR4POMzRtkii7O0qcFXeagAA -2 -g9gIEMzm106FV2WEfzg/cgAA -tSa9Dc6pX06DqFwtod8w3wAA - - -Usb_Interface_Descriptor -BWFMxN62oEGNP+kKcODiEgAA -4 -SDQcLhaItkO2CR3ujsiVQgAA -niJtEkEAIE27g/VJLGKCeQAA -tEi8ncuIh0akDZbNdI0BXAAA -f6iRLfdj90KPJZTvam9xcgAA -2 -4CMW55+u4U+8jmDGtiId6QAA -Y0+EzvEeiUOOez0CtW5HcQAA - - -Usb_Endpoint_Descriptor -BWFMxN62oEGNP+kKcODiEgAA -4 -G7uniSci8UWnqaXbrSHwxQAA -oOH1WDfw5E+CPfQCtwl3lwAA -zVJ7FeURsUqHB/7bijkGSgAA -8xSZnRanKUS7ttTDyMY3XQAA -1 -otEuPscjc0GzY5FZ4edKDQAA - - -USB -BWFMxN62oEGNP+kKcODiEgAA -4 -6dw/hbnfL0KObRrJlTOaOAAA -9NxPBd7BGEmMZajXGsdmCgAA -ReCrM4NymEe6kNr17N/fLwAA -oUsxZCkyqU+EFKmB53hfIQAA -1 - -getDevice -uDTqegf/MkeBHojXFEOLGwAA -3 - -idVendor -int -4R8Nv262EEqwj5BpzEwnFAAA - - -idProduct -int -4R8Nv262EEqwj5BpzEwnFAAA - - -return -pdkReturn -Device -4R8Nv262EEqwj5BpzEwnFAAA -NDp8e0ch10ST3dwxWPam4AAA - - -1 -ym/t3t4KOkinRJAqyF+HwQAA - -1 -mUO4OyL7Z0inPl8NM4gOKQAA - - -+VhQCvPWpkq9N+U+GjchOQAA -4 -K1jbk7tvDECb113o54KaCgAA -ewuWWER98U2X1/Gyqau2iQAA -ydzgGYT1JUqGBbRngdAkOwAA -kRDUUGf7YkG4X7f5D7Tu5QAA -2 - -False -bHBJ2iMT1Emo3/z1QruACAAA -NDp8e0ch10ST3dwxWPam4AAA -4 -HnV1GDlOlUiEzDCgg3OVnwAA -3vJXTt9Ud0+cklGb7VirjwAA -T54kLOtp70+07rCDysRoRgAA -ZmEyokBAfUuimbUqLhInLAAA - - -bHBJ2iMT1Emo3/z1QruACAAA -Y0tGKOGA/UquqP1qaYDayQAA -4 -nP4i5P/O2UWgSJEnuXrNGAAA -NbkMFiV5UUyU8V6ZyNh/ggAA -qnQYuly9P0ePfBPLyOhoUgAA -KiPq8wTTI02Bz5cifJGqSAAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -4 -N+DG+sDQsU+dEVL0AtioTgAA -h4biD7IVaE2ULotQ37wNTAAA -juYsWZ7nVUuYfA9bXvsoRQAA -gVKvw0NHaUCC8LoVjlxEaQAA -2 - -False -rRumqTzUKUikwPtpVUuuxQAA -fKheOe+4606Ei/JrIdvAnwAA -4 -OYIH3ymdpUit+s9rXvgX4QAA -2cgp4vLw00iUpTcWm5nXagAA -tGs9/SOEbkuqTf609sd2uQAA -wlFJ5gxqB0W1JznjbhR82wAA - - -0..* -rRumqTzUKUikwPtpVUuuxQAA -CYy/2ClqUUO8tWkJYxc3EwAA -4 -tvTF0QXyTkOU+lco6nawpAAA -OlG/OTSXdkeeQhih0vfj2gAA -E2JhEcUXZkeaMU/vi7BgQwAA -Pgiug9F5sEm6RGjxSJwN0QAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -2 - -False -N1GWtLD2hke4QpWNj3VbPQAA -CYy/2ClqUUO8tWkJYxc3EwAA - - -1 -N1GWtLD2hke4QpWNj3VbPQAA -fKheOe+4606Ei/JrIdvAnwAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -4 -tgaMJ8+zg0Sn4iEmoOIchwAA -rgg15Kcdr0mVUlnlnH9jIgAA -keuOun+wjE+QghwhaUSp7QAA -LDA6nTIXBkWsIuU2zIrtiAAA -2 - -False -iOkg8RoFXkawUPB8gsL6/QAA -CYy/2ClqUUO8tWkJYxc3EwAA -4 -VnH93Y/7IkaJYl+DPinjmwAA -J87I73G/nkuAKdCKS1ov3AAA -gX2CUgfdCki+IWGLlwLwBgAA -8AgdepV+YECTfuxJBIqCCwAA - - -1 -iOkg8RoFXkawUPB8gsL6/QAA -BhOtKDs6x0a1MSfBURjV3wAA -4 -1qxaXx2+hEq1Na+Bk3itGQAA -FePC/A0aMEGuAW8YyMNUfQAA -jbg1/Hojq0CDpZmGOngZ8gAA -XyLeWJl15kSVqLBfioHjpwAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -4 -BkeBTT1wlUu9nQU0NNTXFAAA -Tj/mtG0ojUeUZaROPDr/HAAA -0MVCo5fIBUSXtmRyYABJcQAA -UVrEAk/Wbk2olhkdMQkz9wAA -2 - -False -hSAawvsHfkmM8rOCrDJNqwAA -CYy/2ClqUUO8tWkJYxc3EwAA -4 -uBprnnKYk0qBu9UZ9bv+5wAA -uUm65cZr+USoFHmg+9GOTAAA -21oCmtYmTk6I99TNGY+WmQAA -CEBGmwNSDE+W0wJ/aQr5ogAA - - -1..* -hSAawvsHfkmM8rOCrDJNqwAA -WnjxeWRoQE+dRj+3+FKmAAAA -4 -q/Tjz7MsSkCzN45MnaE+ygAA -Ct5Onzw2LES6ewhEa/3NWQAA -9Z0KUb7BbUO7F3MYIOiSrQAA -cY/H4Djf5kicM3tDZOwWkAAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -4 -u2OPyc/1n0+QIGTThiMa3AAA -KLVJzL8T0EW4b4yH0XzDkgAA -OMzpA/ZwnEujuwqWpMDwIwAA -ed2kVo8InU6lewfrLcWA0wAA -2 - -False -mH3MSoB9/UmX+ZKIsczTmQAA -WnjxeWRoQE+dRj+3+FKmAAAA -4 -ElMIvqx9s0qrTOxejhsaSQAA -/avxLTDZe0qmoKyO79Gi7AAA -tjnuHlEOBk2grTlQ+kPGnQAA -oS91czwGhEKtYBANVGPPnwAA - - -1..* -mH3MSoB9/UmX+ZKIsczTmQAA -s3tyNjh10EOlP9fTFKCHzgAA -4 -YlWEGJVu1Eu9BEa5L9YqyQAA -upJz60gOiE2Y6jwQzzUoqQAA -PpS7OEegzUeBhCrBHXgkwAAA -XVazEpRSqkyH0zMCJgEnBAAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -4 -h/CUffjgwUqCUDakMMJ7QQAA -ZnaPkKZFCEaRFYlVBh84uAAA -O1VlBtzO0EaAsu2MtMnYhQAA -S22NfH+9rUCXuvo2rsAWDgAA -2 - -False -PzrlQ1JpekCs4WZeZXoxzAAA -s3tyNjh10EOlP9fTFKCHzgAA -4 -lo8h2SqcoUeOOUPAe0EjdAAA -mv0gaJr3SUeuVY1xo1FdowAA -VQ4ysUxS306j02ouNykrpwAA -+GMHnNNOiEW2P4PaNnKcsgAA - - -1..* -PzrlQ1JpekCs4WZeZXoxzAAA -1ZxdCeSlnke1mOXmwZo44gAA -4 -/cDNFyyj1kKTrWJ1HeW7jwAA -T7Yrg8efIE2hhid6kOwp/AAA -eq+vp2GL9Ey4am7PZZZvYwAA -HB0H112qzU65avMG65s6+AAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -4 -Qa9DlhrWuEyzlqeeW42vigAA -OOu7JCeVT06/I9zcCYxoMgAA -eXZQmjjOb0mgLqiKIEgNjgAA -Z54IgvzlG0+i0eC61Nul2QAA -2 - -False -zcRjiWnEb0igPnnJ6hWtBAAA -1ZxdCeSlnke1mOXmwZo44gAA -4 -Wf6tv7bE1kq7mrxCiOa+SQAA -3TeYQ+z3sUaWb3mqCq5ZswAA -e6lrE15aj0SZAg2c/y97hgAA -B4mF3KmBkEmmqPeQhru4awAA - - -1..* -zcRjiWnEb0igPnnJ6hWtBAAA -r8we3ZgdtE+PkC4ethr1xgAA -4 -lhChbObcCU2CcZDalktiVQAA -eX+Li7xw8Eu7Q+WVQJ7NWgAA -QIJa01TJ8UWewFDbze7RZwAA -z9YWV6a+CkmXxyniylWBegAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -4 -3d03ZiQMEUyp/GDpSGjNdQAA -EnqlEABzrEyr7NnE3rXmXAAA -v5SF4iq4U0idtpnG9Es3XAAA -vmgfHAqH1kK8d0+ACOZ3LgAA -2 - -False -CUdyl1aeZ0+5m6T7YR+ScwAA -Y0tGKOGA/UquqP1qaYDayQAA -4 -cJO2BE8tMk6Vdt7DH7oXUgAA -ztnLte7rf0CX37ncwAxYbgAA -mEJVUc0onE+FHNS1qwcDygAA -dg0oZAkRp02LqrBKRlJGygAA - - -1 -CUdyl1aeZ0+5m6T7YR+ScwAA -fKheOe+4606Ei/JrIdvAnwAA -4 -ACS3R0vnCkiCG7/+fEq01gAA -6bLwfBAaDE6zqua+j7Jf+wAA -PvH2F0s2CU+u9nUzCb6FmwAA -+s+HLixVdk+3Jjh1dYo5NgAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -2 - -False -sq2Gf22XcUO8hotO+r/6swAA -fKheOe+4606Ei/JrIdvAnwAA - - -sq2Gf22XcUO8hotO+r/6swAA -BWFMxN62oEGNP+kKcODiEgAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -4 -15TrBVceQkG56FTsqMwcxgAA -3Fgd7pnAA0+KRKisyFBaqwAA -hxuj8u8Y2EK8qsnGTaBOzQAA -znFoObTUEUOch9SPd7VBJAAA -2 - -False -E/QwNfFGUEiitlqp99S36AAA -uDTqegf/MkeBHojXFEOLGwAA -4 -k9T1VNzEo0ufuAB6TN2QRwAA -oiCIMGX8ik6YjhRQQxB8OQAA -Tu5aL5lgO0ut/RTBGjiKqAAA -iDNEYw6KL0uVCCKPtWa8bwAA - - -0..* -E/QwNfFGUEiitlqp99S36AAA -NDp8e0ch10ST3dwxWPam4AAA -4 -4Vg7xm7w902Ov8oTfg9PSAAA -DWRmEP/U1kOcrZnzyvRnXQAA -FngPhombp0y5VL3elyPMMgAA -ETXPzMurVEmlbvocuDXtVwAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -2 - -V1q5qLSIxEidFrrPCOFqIgAA -NDp8e0ch10ST3dwxWPam4AAA - - -V1q5qLSIxEidFrrPCOFqIgAA -p/wk8BA7x0OTRXXHy0OJmgAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -2 - -7Niy2MZhPUynlh2A2zVkEQAA -NDp8e0ch10ST3dwxWPam4AAA - - -7Niy2MZhPUynlh2A2zVkEQAA -nCivixeClUeJ/8WDflvLoAAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -4 -Rk0gcRI5ikapDGR7M2bn5AAA -HXSRZ0W7C02e+CDSTe+vQgAA -39P+Jod7A0SpXNClHK/bIwAA -FOp7UHIFjUmRJarTRH6h3AAA -2 - -False -3Xd7YkTVeUijpP0dxF3K9wAA -NDp8e0ch10ST3dwxWPam4AAA -4 -IIOw3R07h0mYIbxgQNAvlgAA -6DAAoxE3gE6btQ3QR6zXSAAA -Ilbnf/apgU2JUqlCax0E0AAA -GWJjJWM040mgOfcnzTwGqgAA - - -3Xd7YkTVeUijpP0dxF3K9wAA -p/wk8BA7x0OTRXXHy0OJmgAA -4 -Mf6lj8hCekmAt8LSuv0gPQAA -roosZQXLT0uL9JG9OjvfIQAA -gZyJB5c8j0qqNEv58A7qkQAA -jGiYNVwhsUqy+u4GsecJkwAA - - - -+VhQCvPWpkq9N+U+GjchOQAA -4 -Mp4OVq4lq0Ot63a04V2k0AAA -gef03vYxbUeRLVhwDqSRtwAA -vk1lNcjPWk2tPqsfZgpaNgAA -1F1Ggg3l7kq2YUNbccrRzAAA -2 - -False -juy2GOZNhkq5f7cp9rQyWQAA -NDp8e0ch10ST3dwxWPam4AAA -4 -zO1s01kJIE6XkTjlSB6aywAA -W9sijr2Fr02bK6wbKT19/wAA -UxK4awc9BUaq32wB9ulIlQAA -62JK0r9fykSMDnmw3ZuktgAA - - -juy2GOZNhkq5f7cp9rQyWQAA -nCivixeClUeJ/8WDflvLoAAA -4 -NlVzv49r5EKp3NXgP9SJUgAA -2Q3xA4DACkm0S1EmjZ54IwAA -S2waQNcxi0SMzX3GtK14MwAA -hN0Adta+JUWLfSVgHKKVEgAA - - - - -Implementation Model -UMLStandard -implementationModel -FtDtfOwik0OVQfE6ZPIIGQAA -1 - -Main -RoG5Bh+N8kiY/NeIyRBD4wAA - -NN8Cz7nUpkWUBrC4fP0hnwAA - - - - -Deployment Model -UMLStandard -deploymentModel -FtDtfOwik0OVQfE6ZPIIGQAA -1 - -Main -xUneQ8+pSE+Bo7LqxpLuhQAA - -SXfsx2mnwUOegNnzMTcg/gAA - - - - - - diff --git a/java/version.properties b/java/version.properties deleted file mode 100644 index 265e89c..0000000 --- a/java/version.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Thu Aug 24 14:28:28 CEST 2006 -version.major=0 -version.minor=5 -version.release=8 diff --git a/java/src/ch/ntb/usb/Device.java b/src/main/java/ch/ntb/usb.r273/Device.java similarity index 96% rename from java/src/ch/ntb/usb/Device.java rename to src/main/java/ch/ntb/usb.r273/Device.java index 2184278..7398295 100644 --- a/java/src/ch/ntb/usb/Device.java +++ b/src/main/java/ch/ntb/usb.r273/Device.java @@ -1,816 +1,816 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -import java.util.logging.Level; -import java.util.logging.Logger; - -import ch.ntb.usb.logger.LogUtil; - -/** - * This class represents an USB device.
- * To get an instance of an USB device use USB.getDevice(...). - * - */ -public class Device { - - private static final Logger logger = LogUtil.getLogger("ch.ntb.usb"); - - private int maxPacketSize; - - /** - * Mandatory identification values for the device. - */ - private int idVendor, idProduct; - - /** - * Optional identification value for the device (e.g. if there are multiple - * devices with the same vendor and product id). - */ - private String filename; - - /** - * Optional identification value for the device (e.g. if there are multiple - * devices with the same vendor and product id). - */ - private String busName; - - private int dev_configuration, dev_interface, dev_altinterface; - - private long usbDevHandle; - - private boolean resetOnFirstOpen, resetDone; - - private int resetTimeout = 2000; - - private Usb_Device dev; - - protected Device(short idVendor, short idProduct) { - resetOnFirstOpen = false; - resetDone = false; - maxPacketSize = -1; - this.idVendor = idVendor; - this.idProduct = idProduct; - this.filename = null; - } - - protected Device(short idVendor, short idProduct, String busName, - String filename) { - resetOnFirstOpen = false; - resetDone = false; - maxPacketSize = -1; - this.idVendor = idVendor; - this.idProduct = idProduct; - this.busName = busName; - this.filename = filename; - } - - private void updateMaxPacketSize(Usb_Device device) throws USBException { - maxPacketSize = -1; - Usb_Config_Descriptor[] confDesc = device.getConfig(); - for (int i = 0; i < confDesc.length; i++) { - Usb_Interface[] int_ = confDesc[i].getInterface(); - for (int j = 0; j < int_.length; j++) { - Usb_Interface_Descriptor[] intDesc = int_[j].getAltsetting(); - for (int k = 0; k < intDesc.length; k++) { - Usb_Endpoint_Descriptor[] epDesc = intDesc[k].getEndpoint(); - for (int l = 0; l < epDesc.length; l++) { - maxPacketSize = Math.max(epDesc[l].getWMaxPacketSize(), - maxPacketSize); - } - } - } - } - if (maxPacketSize <= 0) { - throw new USBException( - "No USB endpoints found. Check the device configuration"); - } - } - - /** - * Initializes the device. The parameters idVendor and - * idProduct are mandatory. The parameter filename - * is optional. - */ - private Usb_Device initDevice(int idVendorParam, int idProductParam, - String busName, String filename) throws USBException { - Usb_Bus bus = USB.getBus(); - - Usb_Device device = null; - // search for device - while (bus != null) { - device = bus.getDevices(); - while (device != null) { - Usb_Device_Descriptor devDesc = device.getDescriptor(); - if (busName != null && filename != null) { - if (busName.compareTo(bus.getDirname()) == 0 - && filename.compareTo(device.getFilename()) == 0 - && devDesc.getIdVendor() == idVendor - && devDesc.getIdProduct() == idProduct) { - logger.info("Device found. bus: " + bus.getDirname() - + ", filename: " + device.getFilename()); - updateMaxPacketSize(device); - return device; - } - } else if (filename != null) { - if (filename.compareTo(device.getFilename()) == 0 - && devDesc.getIdVendor() == idVendor - && devDesc.getIdProduct() == idProduct) { - logger.info("Device found. bus: " + bus.getDirname() - + ", filename: " + device.getFilename()); - updateMaxPacketSize(device); - return device; - } - } else if (busName != null) { - if (busName.compareTo(bus.getDirname()) == 0 - && devDesc.getIdVendor() == idVendor - && devDesc.getIdProduct() == idProduct) { - logger.info("Device found. bus: " + bus.getDirname() - + ", filename: " + device.getFilename()); - updateMaxPacketSize(device); - return device; - } - } else if (devDesc.getIdVendor() == idVendor - && devDesc.getIdProduct() == idProduct) { - logger.info("Device found. bus: " + bus.getDirname() - + ", filename: " + device.getFilename()); - updateMaxPacketSize(device); - return device; - } - device = device.getNext(); - } - bus = bus.getNext(); - } - return null; - } - - /** - * Updates the device and descriptor information from the bus.
- * The descriptors can be read with {@link #getDeviceDescriptor()} and - * {@link #getConfigDescriptors()}. - * - * @throws USBException - */ - public void updateDescriptors() throws USBException { - dev = initDevice(idVendor, idProduct, busName, filename); - } - - /** - * Returns the device descriptor associated with this device.
- * The descriptor is updated by calling {@link #updateDescriptors()} or - * {@link #open(int, int, int)}. - * - * @return the device descriptor associated with this device or - * null - */ - public Usb_Device_Descriptor getDeviceDescriptor() { - if (dev == null) { - return null; - } - return dev.getDescriptor(); - } - - /** - * Returns the configuration descriptors associated with this device.
- * The descriptors are updated by calling {@link #updateDescriptors()} or - * {@link #open(int, int, int)}. - * - * @return the configuration descriptors associated with this device or - * null - */ - public Usb_Config_Descriptor[] getConfigDescriptors() { - if (dev == null) { - return null; - } - return dev.getConfig(); - } - - /** - * Opens the device and claims the specified configuration, interface and - * altinterface.
- * First the bus is enumerated. If the device is found its descriptors are - * read and the maxPacketSize value is updated. If no endpoints - * are found in the descriptors an exception is thrown. - * - * @param configuration - * the configuration, see - * {@link Usb_Config_Descriptor#getBConfigurationValue()} - * @param interface_ - * the interface, see - * {@link Usb_Interface_Descriptor#getBInterfaceNumber()} - * @param altinterface - * the alternate interface, see - * {@link Usb_Interface_Descriptor#getBAlternateSetting()}. If no - * alternate interface must be set -1 can be used. - * @throws USBException - */ - public void open(int configuration, int interface_, int altinterface) - throws USBException { - this.dev_configuration = configuration; - this.dev_interface = interface_; - this.dev_altinterface = altinterface; - - if (usbDevHandle != 0) { - throw new USBException("device opened, close or reset first"); - } - - dev = initDevice(idVendor, idProduct, busName, filename); - - if (dev != null) { - long res = LibusbJava.usb_open(dev); - if (res == 0) { - throw new USBException("LibusbJava.usb_open: " - + LibusbJava.usb_strerror()); - } - usbDevHandle = res; - } - - if (dev == null || usbDevHandle == 0) { - throw new USBException("USB device with " + toString() - + " not found on USB"); - } - claim_interface(usbDevHandle, configuration, interface_, altinterface); - if (resetOnFirstOpen & !resetDone) { - logger.info("reset on first open"); - resetDone = true; - reset(); - try { - Thread.sleep(resetTimeout); - } catch (InterruptedException e) { - // - } - open(configuration, interface_, altinterface); - } - } - - /** - * Release the claimed interface and close the opened device.
- * - * @throws USBException - */ - public void close() throws USBException { - if (usbDevHandle == 0) { - throw new USBException("invalid device handle"); - } - release_interface(usbDevHandle, dev_interface); - if (LibusbJava.usb_close(usbDevHandle) < 0) { - usbDevHandle = 0; - throw new USBException("LibusbJava.usb_close: " - + LibusbJava.usb_strerror()); - } - usbDevHandle = 0; - maxPacketSize = -1; - logger.info("device closed"); - } - - /** - * Sends an USB reset to the device. The device handle will no longer be - * valid. To use the device again, {@link #open(int, int, int)} must be - * called.
- * Note that the device is re-attached to the USB which may cause the bus - * and filename to be changed. If the bus and filename parameters are used - * in {@link USB#getDevice(short, short, String, String)} unregister the - * device using {@link USB#unregisterDevice(Device)}, re-enumerate the bus - * and create a new device instance. If that is not done the device may not - * be found. - * - * @throws USBException - */ - public void reset() throws USBException { - if (usbDevHandle == 0) { - throw new USBException("invalid device handle"); - } - release_interface(usbDevHandle, dev_interface); - if (LibusbJava.usb_reset(usbDevHandle) < 0) { - usbDevHandle = 0; - throw new USBException("LibusbJava.usb_reset: " - + LibusbJava.usb_strerror()); - } - usbDevHandle = 0; - logger.info("device reset"); - } - - /** - * Write data to the device using a bulk transfer.
- * - * @param out_ep_address - * endpoint address to write to - * @param data - * data to write to this endpoint - * @param size - * size of the data - * @param timeout - * amount of time in ms the device will try to send the data - * until a timeout exception is thrown - * @param reopenOnTimeout - * if set to true, the device will try to open the connection and - * send the data again before a timeout exception is thrown - * @return the actual number of bytes written - * @throws USBException - */ - public int writeBulk(int out_ep_address, byte[] data, int size, - int timeout, boolean reopenOnTimeout) throws USBException { - if (usbDevHandle == 0) { - throw new USBException("invalid device handle"); - } - if (data == null) { - throw new USBException("data must not be null"); - } - if (size <= 0 || size > data.length) { - throw new ArrayIndexOutOfBoundsException("invalid size: " + size); - } - int lenWritten = LibusbJava.usb_bulk_write(usbDevHandle, - out_ep_address, data, size, timeout); - if (lenWritten < 0) { - if (lenWritten == LibusbJava.ERROR_TIMEDOUT) { - // try to reopen the device and send the data again - if (reopenOnTimeout) { - logger.info("try to reopen"); - reset(); - open(dev_configuration, dev_interface, dev_altinterface); - return writeBulk(out_ep_address, data, size, timeout, false); - } - throw new USBTimeoutException("LibusbJava.usb_bulk_write: " - + LibusbJava.usb_strerror()); - } - throw new USBException("LibusbJava.usb_bulk_write: " - + LibusbJava.usb_strerror()); - } - - logger.info("length written: " + lenWritten); - if (logger.isLoggable(Level.FINEST)) { - StringBuffer sb = new StringBuffer("bulkwrite, ep 0x" - + Integer.toHexString(out_ep_address) + ": " + lenWritten - + " Bytes sent: "); - for (int i = 0; i < lenWritten; i++) { - sb.append("0x" + String.format("%1$02X", data[i]) + " "); - } - logger.info(sb.toString()); - } - return lenWritten; - } - - /** - * Read data from the device using a bulk transfer.
- * - * @param in_ep_address - * endpoint address to read from - * @param data - * data buffer for the data to be read - * @param size - * the maximum requested data size - * @param timeout - * amount of time in ms the device will try to receive data until - * a timeout exception is thrown - * @param reopenOnTimeout - * if set to true, the device will try to open the connection and - * receive the data again before a timeout exception is thrown - * @return the actual number of bytes read - * @throws USBException - */ - public int readBulk(int in_ep_address, byte[] data, int size, int timeout, - boolean reopenOnTimeout) throws USBException { - if (usbDevHandle == 0) { - throw new USBException("invalid device handle"); - } - if (data == null) { - throw new USBException("data must not be null"); - } - if (size <= 0 || size > data.length) { - throw new ArrayIndexOutOfBoundsException("invalid size: " + size); - } - int lenRead = LibusbJava.usb_bulk_read(usbDevHandle, in_ep_address, - data, size, timeout); - if (lenRead < 0) { - if (lenRead == LibusbJava.ERROR_TIMEDOUT) { - // try to reopen the device and send the data again - if (reopenOnTimeout) { - logger.info("try to reopen"); - reset(); - open(dev_configuration, dev_interface, dev_altinterface); - return readBulk(in_ep_address, data, size, timeout, false); - } - throw new USBTimeoutException("LibusbJava.usb_bulk_read: " - + LibusbJava.usb_strerror()); - } - throw new USBException("LibusbJava.usb_bulk_read: " - + LibusbJava.usb_strerror()); - } - - logger.info("length read: " + lenRead); - if (logger.isLoggable(Level.FINEST)) { - StringBuffer sb = new StringBuffer("bulkread, ep 0x" - + Integer.toHexString(in_ep_address) + ": " + lenRead - + " Bytes received: "); - for (int i = 0; i < lenRead; i++) { - sb.append("0x" + String.format("%1$02X", data[i]) + " "); - } - logger.info(sb.toString()); - } - return lenRead; - } - - /** - * Write data to the device using a interrupt transfer.
- * - * @param out_ep_address - * endpoint address to write to - * @param data - * data to write to this endpoint - * @param size - * size of the data - * @param timeout - * amount of time in ms the device will try to send the data - * until a timeout exception is thrown - * @param reopenOnTimeout - * if set to true, the device will try to open the connection and - * send the data again before a timeout exception is thrown - * @return the actual number of bytes written - * @throws USBException - */ - public int writeInterrupt(int out_ep_address, byte[] data, int size, - int timeout, boolean reopenOnTimeout) throws USBException { - if (usbDevHandle == 0) { - throw new USBException("invalid device handle"); - } - if (data == null) { - throw new USBException("data must not be null"); - } - if (size <= 0 || size > data.length) { - throw new ArrayIndexOutOfBoundsException("invalid size: " + size); - } - int lenWritten = LibusbJava.usb_interrupt_write(usbDevHandle, - out_ep_address, data, size, timeout); - if (lenWritten < 0) { - if (lenWritten == LibusbJava.ERROR_TIMEDOUT) { - // try to reopen the device and send the data again - if (reopenOnTimeout) { - logger.info("try to reopen"); - reset(); - open(dev_configuration, dev_interface, dev_altinterface); - return writeInterrupt(out_ep_address, data, size, timeout, - false); - } - throw new USBTimeoutException( - "LibusbJava.usb_interrupt_write: " - + LibusbJava.usb_strerror()); - } - throw new USBException("LibusbJava.usb_interrupt_write: " - + LibusbJava.usb_strerror()); - } - - logger.info("length written: " + lenWritten); - if (logger.isLoggable(Level.FINEST)) { - StringBuffer sb = new StringBuffer("interruptwrite, ep 0x" - + Integer.toHexString(out_ep_address) + ": " + lenWritten - + " Bytes sent: "); - for (int i = 0; i < lenWritten; i++) { - sb.append("0x" + String.format("%1$02X", data[i]) + " "); - } - logger.info(sb.toString()); - } - return lenWritten; - } - - /** - * Read data from the device using a interrupt transfer.
- * - * @param in_ep_address - * endpoint address to read from - * @param data - * data buffer for the data to be read - * @param size - * the maximum requested data size - * @param timeout - * amount of time in ms the device will try to receive data until - * a timeout exception is thrown - * @param reopenOnTimeout - * if set to true, the device will try to open the connection and - * receive the data again before a timeout exception is thrown - * @return the actual number of bytes read - * @throws USBException - */ - public int readInterrupt(int in_ep_address, byte[] data, int size, - int timeout, boolean reopenOnTimeout) throws USBException { - if (usbDevHandle == 0) { - throw new USBException("invalid device handle"); - } - if (data == null) { - throw new USBException("data must not be null"); - } - if (size <= 0 || size > data.length) { - throw new ArrayIndexOutOfBoundsException("invalid size: " + size); - } - int lenRead = LibusbJava.usb_interrupt_read(usbDevHandle, - in_ep_address, data, size, timeout); - if (lenRead < 0) { - if (lenRead == LibusbJava.ERROR_TIMEDOUT) { - // try to reopen the device and send the data again - if (reopenOnTimeout) { - logger.info("try to reopen"); - reset(); - open(dev_configuration, dev_interface, dev_altinterface); - return readInterrupt(in_ep_address, data, size, timeout, - false); - } - throw new USBTimeoutException("LibusbJava.usb_interrupt_read: " - + LibusbJava.usb_strerror()); - } - throw new USBException("LibusbJava.usb_interrupt_read: " - + LibusbJava.usb_strerror()); - } - - logger.info("length read: " + lenRead); - if (logger.isLoggable(Level.FINEST)) { - StringBuffer sb = new StringBuffer("interrupt, ep 0x" - + Integer.toHexString(in_ep_address) + ": " + lenRead - + " Bytes received: "); - for (int i = 0; i < lenRead; i++) { - sb.append("0x" + String.format("%1$02X", data[i]) + " "); - } - logger.info(sb.toString()); - } - return lenRead; - } - - /** - * Performs a control request to the default control pipe on a device.
- * The parameters mirror the types of the same name in the USB - * specification. - * - * @param requestType - * USB device request type (USB specification 9.3, - * bmRequestType). Use constants from {@link ch.ntb.usb.USB} - * (REQ_TYPE_xxx). - * @param request - * specific request (USB specification 9.4, bRequest). Use - * constants from {@link ch.ntb.usb.USB} (REQ_xxx). - * @param value - * field that varies according to request (USB specification 9.4, - * wValue) - * @param index - * field that varies according to request (USB specification 9.4, - * wIndex) - * @param data - * the send/receive buffer - * @param size - * the buffer size. 0 is a valid value, but there must still be a - * dummy data buffer provided. - * @param timeout - * amount of time in ms the device will try to send/receive data - * until a timeout exception is thrown - * @param reopenOnTimeout - * if set to true, the device will try to open the connection and - * send/receive the data again before a timeout exception is - * thrown - * @return the number of bytes written/read - * @throws USBException - */ - public int controlMsg(int requestType, int request, int value, int index, - byte[] data, int size, int timeout, boolean reopenOnTimeout) - throws USBException { - if (usbDevHandle == 0) { - throw new USBException("invalid device handle"); - } - if (data == null) { - throw new USBException("data must not be null"); - } - if (size < 0 || size > data.length) { - throw new ArrayIndexOutOfBoundsException("invalid size: " + size); - } - int len = LibusbJava.usb_control_msg(usbDevHandle, requestType, - request, value, index, data, size, timeout); - if (len < 0) { - if (len == LibusbJava.ERROR_TIMEDOUT) { - // try to reopen the device and send the data again - if (reopenOnTimeout) { - logger.info("try to reopen"); - reset(); - open(dev_configuration, dev_interface, dev_altinterface); - return controlMsg(requestType, request, value, index, data, - size, timeout, false); - } - throw new USBTimeoutException("LibusbJava.controlMsg: " - + LibusbJava.usb_strerror()); - } - throw new USBException("LibusbJava.controlMsg: " - + LibusbJava.usb_strerror()); - } - - logger.info("length read/written: " + len); - if (logger.isLoggable(Level.FINEST)) { - StringBuffer sb = new StringBuffer("controlMsg: " + len - + " Bytes received(written: "); - for (int i = 0; i < len; i++) { - sb.append("0x" + String.format("%1$02X", data[i]) + " "); - } - logger.info(sb.toString()); - } - return len; - } - - /** - * Claim an interface to send and receive USB data.
- * - * @param usb_dev_handle - * the handle of the device (MUST BE VALID) - * @param configuration - * the configuration to use - * @param interface_ - * the interface to claim - * @param altinterface - * the alternate interface to use. If no alternate interface must - * be set -1 can be used. - * @throws USBException - * throws an USBException if the action fails - */ - private void claim_interface(long usb_dev_handle, int configuration, - int interface_, int altinterface) throws USBException { - if (LibusbJava.usb_set_configuration(usb_dev_handle, configuration) < 0) { - usbDevHandle = 0; - throw new USBException("LibusbJava.usb_set_configuration: " - + LibusbJava.usb_strerror()); - } - if (LibusbJava.usb_claim_interface(usb_dev_handle, interface_) < 0) { - usbDevHandle = 0; - throw new USBException("LibusbJava.usb_claim_interface: " - + LibusbJava.usb_strerror()); - } - if (altinterface >= 0) { - if (LibusbJava.usb_set_altinterface(usb_dev_handle, altinterface) < 0) { - try { - release_interface(usb_dev_handle, interface_); - } catch (USBException e) { - // ignore - } - usbDevHandle = 0; - throw new USBException("LibusbJava.usb_set_altinterface: " - + LibusbJava.usb_strerror()); - } - } - logger.info("interface claimed"); - } - - /** - * Release a previously claimed interface.
- * - * @param dev_handle - * the handle of the device (MUST BE VALID) - * @param interface_ - * the interface to claim - * @throws USBException - * throws an USBException if the action fails - */ - private void release_interface(long dev_handle, int interface_) - throws USBException { - if (LibusbJava.usb_release_interface(dev_handle, interface_) < 0) { - usbDevHandle = 0; - throw new USBException("LibusbJava.usb_release_interface: " - + LibusbJava.usb_strerror()); - } - logger.info("interface released"); - } - - /** - * Returns the product ID of the device.
- * - * @return the product ID of the device. - */ - public int getIdProduct() { - return idProduct; - } - - /** - * Returns the vendor ID of the device.
- * - * @return the vendor ID of the device. - */ - public int getIdVendor() { - return idVendor; - } - - /** - * Returns the alternative interface.
- * This value is only valid after opening the device. - * - * @return the alternative interface. This value is only valid after opening - * the device. - */ - public int getAltinterface() { - return dev_altinterface; - } - - /** - * Returns the current configuration used.
- * This value is only valid after opening the device. - * - * @return the current configuration used. This value is only valid after - * opening the device. - */ - public int getConfiguration() { - return dev_configuration; - } - - /** - * Returns the current interface.
- * This value is only valid after opening the device. - * - * @return the current interface. This value is only valid after opening the - * device. - */ - public int getInterface() { - return dev_interface; - } - - /** - * Returns the maximum packet size in bytes which is allowed to be - * transmitted at once.
- * The value is determined by reading the endpoint descriptor(s) when - * opening the device. It is invalid before the device is opened! Note that - * if some endpoints use different packet sizes the maximum packet size is - * return. This value may be used to determine if a device is opened in - * fullspeed or highspeed mode. - * - * @return the maximum packet size - */ - public int getMaxPacketSize() { - return maxPacketSize; - } - - /** - * Check if the device is open.
- * This checks only for a valid device handle. It doesn't check if the - * device is still attached or working. - * - * @return true if the device is open - */ - public boolean isOpen() { - return usbDevHandle != 0; - } - - /** - * If enabled, the device is reset when first opened.
- * This will only happen once. When the application is started, the device - * state is unknown. If the device is not reset, read or write may result in - * a {@link USBTimeoutException}.
- *
- * This feature is disabled by default. - * - * @param enable - * true if the device should be reset when first opened - * @param timeout - * the timeout between the reset and the reopening - */ - public void setResetOnFirstOpen(boolean enable, int timeout) { - resetOnFirstOpen = enable; - resetTimeout = timeout; - } - - /** - * Returns the optional filename which is set when there are multiple - * devices with the same vendor and product id. See - * {@link USB#getDevice(short, short, String, String)}. Use - * {@link Usb_Device#getFilename()} to read the filename of a device. - * - * @return the filename or null - */ - protected String getFilename() { - return filename; - } - - /** - * Returns the optional bus name which is set when there are multiple - * devices with the same vendor and product id. See - * {@link USB#getDevice(short, short, String, String)}. Use - * {@link Usb_Bus#getDirname()} to read the name of a bus. - * - * @return the bus name or null - */ - protected String getBusName() { - return busName; - } - - /** - * Returns the Usb_Device instance associated with this device. This value - * is only valid after opening the device. - * - * @return the Usb_Device instance associated with this device. - */ - public Usb_Device getDevice() { - return dev; - } - - @Override - public String toString() { - return "idVendor: 0x" + Integer.toHexString(getIdVendor() & 0xffff) - + ", idProduct: 0x" - + Integer.toHexString(getIdProduct() & 0xffff) + ", busName: " - + getBusName() + ", filename: " + getFilename(); - } - -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import ch.ntb.usb.logger.LogUtil; + +/** + * This class represents an USB device.
+ * To get an instance of an USB device use USB.getDevice(...). + * + */ +public class Device { + + private static final Logger logger = LogUtil.getLogger("ch.ntb.usb"); + + private int maxPacketSize; + + /** + * Mandatory identification values for the device. + */ + private int idVendor, idProduct; + + /** + * Optional identification value for the device (e.g. if there are multiple + * devices with the same vendor and product id). + */ + private String filename; + + /** + * Optional identification value for the device (e.g. if there are multiple + * devices with the same vendor and product id). + */ + private String busName; + + private int dev_configuration, dev_interface, dev_altinterface; + + private long usbDevHandle; + + private boolean resetOnFirstOpen, resetDone; + + private int resetTimeout = 2000; + + private Usb_Device dev; + + protected Device(short idVendor, short idProduct) { + resetOnFirstOpen = false; + resetDone = false; + maxPacketSize = -1; + this.idVendor = idVendor; + this.idProduct = idProduct; + this.filename = null; + } + + protected Device(short idVendor, short idProduct, String busName, + String filename) { + resetOnFirstOpen = false; + resetDone = false; + maxPacketSize = -1; + this.idVendor = idVendor; + this.idProduct = idProduct; + this.busName = busName; + this.filename = filename; + } + + private void updateMaxPacketSize(Usb_Device device) throws USBException { + maxPacketSize = -1; + Usb_Config_Descriptor[] confDesc = device.getConfig(); + for (int i = 0; i < confDesc.length; i++) { + Usb_Interface[] int_ = confDesc[i].getInterface(); + for (int j = 0; j < int_.length; j++) { + Usb_Interface_Descriptor[] intDesc = int_[j].getAltsetting(); + for (int k = 0; k < intDesc.length; k++) { + Usb_Endpoint_Descriptor[] epDesc = intDesc[k].getEndpoint(); + for (int l = 0; l < epDesc.length; l++) { + maxPacketSize = Math.max(epDesc[l].getWMaxPacketSize(), + maxPacketSize); + } + } + } + } + if (maxPacketSize <= 0) { + throw new USBException( + "No USB endpoints found. Check the device configuration"); + } + } + + /** + * Initializes the device. The parameters idVendor and + * idProduct are mandatory. The parameter filename + * is optional. + */ + private Usb_Device initDevice(int idVendorParam, int idProductParam, + String busName, String filename) throws USBException { + Usb_Bus bus = USB.getBus(); + + Usb_Device device = null; + // search for device + while (bus != null) { + device = bus.getDevices(); + while (device != null) { + Usb_Device_Descriptor devDesc = device.getDescriptor(); + if (busName != null && filename != null) { + if (busName.compareTo(bus.getDirname()) == 0 + && filename.compareTo(device.getFilename()) == 0 + && devDesc.getIdVendor() == idVendor + && devDesc.getIdProduct() == idProduct) { + logger.info("Device found. bus: " + bus.getDirname() + + ", filename: " + device.getFilename()); + updateMaxPacketSize(device); + return device; + } + } else if (filename != null) { + if (filename.compareTo(device.getFilename()) == 0 + && devDesc.getIdVendor() == idVendor + && devDesc.getIdProduct() == idProduct) { + logger.info("Device found. bus: " + bus.getDirname() + + ", filename: " + device.getFilename()); + updateMaxPacketSize(device); + return device; + } + } else if (busName != null) { + if (busName.compareTo(bus.getDirname()) == 0 + && devDesc.getIdVendor() == idVendor + && devDesc.getIdProduct() == idProduct) { + logger.info("Device found. bus: " + bus.getDirname() + + ", filename: " + device.getFilename()); + updateMaxPacketSize(device); + return device; + } + } else if (devDesc.getIdVendor() == idVendor + && devDesc.getIdProduct() == idProduct) { + logger.info("Device found. bus: " + bus.getDirname() + + ", filename: " + device.getFilename()); + updateMaxPacketSize(device); + return device; + } + device = device.getNext(); + } + bus = bus.getNext(); + } + return null; + } + + /** + * Updates the device and descriptor information from the bus.
+ * The descriptors can be read with {@link #getDeviceDescriptor()} and + * {@link #getConfigDescriptors()}. + * + * @throws USBException + */ + public void updateDescriptors() throws USBException { + dev = initDevice(idVendor, idProduct, busName, filename); + } + + /** + * Returns the device descriptor associated with this device.
+ * The descriptor is updated by calling {@link #updateDescriptors()} or + * {@link #open(int, int, int)}. + * + * @return the device descriptor associated with this device or + * null + */ + public Usb_Device_Descriptor getDeviceDescriptor() { + if (dev == null) { + return null; + } + return dev.getDescriptor(); + } + + /** + * Returns the configuration descriptors associated with this device.
+ * The descriptors are updated by calling {@link #updateDescriptors()} or + * {@link #open(int, int, int)}. + * + * @return the configuration descriptors associated with this device or + * null + */ + public Usb_Config_Descriptor[] getConfigDescriptors() { + if (dev == null) { + return null; + } + return dev.getConfig(); + } + + /** + * Opens the device and claims the specified configuration, interface and + * altinterface.
+ * First the bus is enumerated. If the device is found its descriptors are + * read and the maxPacketSize value is updated. If no endpoints + * are found in the descriptors an exception is thrown. + * + * @param configuration + * the configuration, see + * {@link Usb_Config_Descriptor#getBConfigurationValue()} + * @param interface_ + * the interface, see + * {@link Usb_Interface_Descriptor#getBInterfaceNumber()} + * @param altinterface + * the alternate interface, see + * {@link Usb_Interface_Descriptor#getBAlternateSetting()}. If no + * alternate interface must be set -1 can be used. + * @throws USBException + */ + public void open(int configuration, int interface_, int altinterface) + throws USBException { + this.dev_configuration = configuration; + this.dev_interface = interface_; + this.dev_altinterface = altinterface; + + if (usbDevHandle != 0) { + throw new USBException("device opened, close or reset first"); + } + + dev = initDevice(idVendor, idProduct, busName, filename); + + if (dev != null) { + long res = LibusbJava.usb_open(dev); + if (res == 0) { + throw new USBException("LibusbJava.usb_open: " + + LibusbJava.usb_strerror()); + } + usbDevHandle = res; + } + + if (dev == null || usbDevHandle == 0) { + throw new USBException("USB device with " + toString() + + " not found on USB"); + } + claim_interface(usbDevHandle, configuration, interface_, altinterface); + if (resetOnFirstOpen & !resetDone) { + logger.info("reset on first open"); + resetDone = true; + reset(); + try { + Thread.sleep(resetTimeout); + } catch (InterruptedException e) { + // + } + open(configuration, interface_, altinterface); + } + } + + /** + * Release the claimed interface and close the opened device.
+ * + * @throws USBException + */ + public void close() throws USBException { + if (usbDevHandle == 0) { + throw new USBException("invalid device handle"); + } + release_interface(usbDevHandle, dev_interface); + if (LibusbJava.usb_close(usbDevHandle) < 0) { + usbDevHandle = 0; + throw new USBException("LibusbJava.usb_close: " + + LibusbJava.usb_strerror()); + } + usbDevHandle = 0; + maxPacketSize = -1; + logger.info("device closed"); + } + + /** + * Sends an USB reset to the device. The device handle will no longer be + * valid. To use the device again, {@link #open(int, int, int)} must be + * called.
+ * Note that the device is re-attached to the USB which may cause the bus + * and filename to be changed. If the bus and filename parameters are used + * in {@link USB#getDevice(short, short, String, String)} unregister the + * device using {@link USB#unregisterDevice(Device)}, re-enumerate the bus + * and create a new device instance. If that is not done the device may not + * be found. + * + * @throws USBException + */ + public void reset() throws USBException { + if (usbDevHandle == 0) { + throw new USBException("invalid device handle"); + } + release_interface(usbDevHandle, dev_interface); + if (LibusbJava.usb_reset(usbDevHandle) < 0) { + usbDevHandle = 0; + throw new USBException("LibusbJava.usb_reset: " + + LibusbJava.usb_strerror()); + } + usbDevHandle = 0; + logger.info("device reset"); + } + + /** + * Write data to the device using a bulk transfer.
+ * + * @param out_ep_address + * endpoint address to write to + * @param data + * data to write to this endpoint + * @param size + * size of the data + * @param timeout + * amount of time in ms the device will try to send the data + * until a timeout exception is thrown + * @param reopenOnTimeout + * if set to true, the device will try to open the connection and + * send the data again before a timeout exception is thrown + * @return the actual number of bytes written + * @throws USBException + */ + public int writeBulk(int out_ep_address, byte[] data, int size, + int timeout, boolean reopenOnTimeout) throws USBException { + if (usbDevHandle == 0) { + throw new USBException("invalid device handle"); + } + if (data == null) { + throw new USBException("data must not be null"); + } + if (size <= 0 || size > data.length) { + throw new ArrayIndexOutOfBoundsException("invalid size: " + size); + } + int lenWritten = LibusbJava.usb_bulk_write(usbDevHandle, + out_ep_address, data, size, timeout); + if (lenWritten < 0) { + if (lenWritten == LibusbJava.ERROR_TIMEDOUT) { + // try to reopen the device and send the data again + if (reopenOnTimeout) { + logger.info("try to reopen"); + reset(); + open(dev_configuration, dev_interface, dev_altinterface); + return writeBulk(out_ep_address, data, size, timeout, false); + } + throw new USBTimeoutException("LibusbJava.usb_bulk_write: " + + LibusbJava.usb_strerror()); + } + throw new USBException("LibusbJava.usb_bulk_write: " + + LibusbJava.usb_strerror()); + } + + logger.info("length written: " + lenWritten); + if (logger.isLoggable(Level.FINEST)) { + StringBuffer sb = new StringBuffer("bulkwrite, ep 0x" + + Integer.toHexString(out_ep_address) + ": " + lenWritten + + " Bytes sent: "); + for (int i = 0; i < lenWritten; i++) { + sb.append("0x" + String.format("%1$02X", data[i]) + " "); + } + logger.info(sb.toString()); + } + return lenWritten; + } + + /** + * Read data from the device using a bulk transfer.
+ * + * @param in_ep_address + * endpoint address to read from + * @param data + * data buffer for the data to be read + * @param size + * the maximum requested data size + * @param timeout + * amount of time in ms the device will try to receive data until + * a timeout exception is thrown + * @param reopenOnTimeout + * if set to true, the device will try to open the connection and + * receive the data again before a timeout exception is thrown + * @return the actual number of bytes read + * @throws USBException + */ + public int readBulk(int in_ep_address, byte[] data, int size, int timeout, + boolean reopenOnTimeout) throws USBException { + if (usbDevHandle == 0) { + throw new USBException("invalid device handle"); + } + if (data == null) { + throw new USBException("data must not be null"); + } + if (size <= 0 || size > data.length) { + throw new ArrayIndexOutOfBoundsException("invalid size: " + size); + } + int lenRead = LibusbJava.usb_bulk_read(usbDevHandle, in_ep_address, + data, size, timeout); + if (lenRead < 0) { + if (lenRead == LibusbJava.ERROR_TIMEDOUT) { + // try to reopen the device and send the data again + if (reopenOnTimeout) { + logger.info("try to reopen"); + reset(); + open(dev_configuration, dev_interface, dev_altinterface); + return readBulk(in_ep_address, data, size, timeout, false); + } + throw new USBTimeoutException("LibusbJava.usb_bulk_read: " + + LibusbJava.usb_strerror()); + } + throw new USBException("LibusbJava.usb_bulk_read: " + + LibusbJava.usb_strerror()); + } + + logger.info("length read: " + lenRead); + if (logger.isLoggable(Level.FINEST)) { + StringBuffer sb = new StringBuffer("bulkread, ep 0x" + + Integer.toHexString(in_ep_address) + ": " + lenRead + + " Bytes received: "); + for (int i = 0; i < lenRead; i++) { + sb.append("0x" + String.format("%1$02X", data[i]) + " "); + } + logger.info(sb.toString()); + } + return lenRead; + } + + /** + * Write data to the device using a interrupt transfer.
+ * + * @param out_ep_address + * endpoint address to write to + * @param data + * data to write to this endpoint + * @param size + * size of the data + * @param timeout + * amount of time in ms the device will try to send the data + * until a timeout exception is thrown + * @param reopenOnTimeout + * if set to true, the device will try to open the connection and + * send the data again before a timeout exception is thrown + * @return the actual number of bytes written + * @throws USBException + */ + public int writeInterrupt(int out_ep_address, byte[] data, int size, + int timeout, boolean reopenOnTimeout) throws USBException { + if (usbDevHandle == 0) { + throw new USBException("invalid device handle"); + } + if (data == null) { + throw new USBException("data must not be null"); + } + if (size <= 0 || size > data.length) { + throw new ArrayIndexOutOfBoundsException("invalid size: " + size); + } + int lenWritten = LibusbJava.usb_interrupt_write(usbDevHandle, + out_ep_address, data, size, timeout); + if (lenWritten < 0) { + if (lenWritten == LibusbJava.ERROR_TIMEDOUT) { + // try to reopen the device and send the data again + if (reopenOnTimeout) { + logger.info("try to reopen"); + reset(); + open(dev_configuration, dev_interface, dev_altinterface); + return writeInterrupt(out_ep_address, data, size, timeout, + false); + } + throw new USBTimeoutException( + "LibusbJava.usb_interrupt_write: " + + LibusbJava.usb_strerror()); + } + throw new USBException("LibusbJava.usb_interrupt_write: " + + LibusbJava.usb_strerror()); + } + + logger.info("length written: " + lenWritten); + if (logger.isLoggable(Level.FINEST)) { + StringBuffer sb = new StringBuffer("interruptwrite, ep 0x" + + Integer.toHexString(out_ep_address) + ": " + lenWritten + + " Bytes sent: "); + for (int i = 0; i < lenWritten; i++) { + sb.append("0x" + String.format("%1$02X", data[i]) + " "); + } + logger.info(sb.toString()); + } + return lenWritten; + } + + /** + * Read data from the device using a interrupt transfer.
+ * + * @param in_ep_address + * endpoint address to read from + * @param data + * data buffer for the data to be read + * @param size + * the maximum requested data size + * @param timeout + * amount of time in ms the device will try to receive data until + * a timeout exception is thrown + * @param reopenOnTimeout + * if set to true, the device will try to open the connection and + * receive the data again before a timeout exception is thrown + * @return the actual number of bytes read + * @throws USBException + */ + public int readInterrupt(int in_ep_address, byte[] data, int size, + int timeout, boolean reopenOnTimeout) throws USBException { + if (usbDevHandle == 0) { + throw new USBException("invalid device handle"); + } + if (data == null) { + throw new USBException("data must not be null"); + } + if (size <= 0 || size > data.length) { + throw new ArrayIndexOutOfBoundsException("invalid size: " + size); + } + int lenRead = LibusbJava.usb_interrupt_read(usbDevHandle, + in_ep_address, data, size, timeout); + if (lenRead < 0) { + if (lenRead == LibusbJava.ERROR_TIMEDOUT) { + // try to reopen the device and send the data again + if (reopenOnTimeout) { + logger.info("try to reopen"); + reset(); + open(dev_configuration, dev_interface, dev_altinterface); + return readInterrupt(in_ep_address, data, size, timeout, + false); + } + throw new USBTimeoutException("LibusbJava.usb_interrupt_read: " + + LibusbJava.usb_strerror()); + } + throw new USBException("LibusbJava.usb_interrupt_read: " + + LibusbJava.usb_strerror()); + } + + logger.info("length read: " + lenRead); + if (logger.isLoggable(Level.FINEST)) { + StringBuffer sb = new StringBuffer("interrupt, ep 0x" + + Integer.toHexString(in_ep_address) + ": " + lenRead + + " Bytes received: "); + for (int i = 0; i < lenRead; i++) { + sb.append("0x" + String.format("%1$02X", data[i]) + " "); + } + logger.info(sb.toString()); + } + return lenRead; + } + + /** + * Performs a control request to the default control pipe on a device.
+ * The parameters mirror the types of the same name in the USB + * specification. + * + * @param requestType + * USB device request type (USB specification 9.3, + * bmRequestType). Use constants from {@link ch.ntb.usb.USB} + * (REQ_TYPE_xxx). + * @param request + * specific request (USB specification 9.4, bRequest). Use + * constants from {@link ch.ntb.usb.USB} (REQ_xxx). + * @param value + * field that varies according to request (USB specification 9.4, + * wValue) + * @param index + * field that varies according to request (USB specification 9.4, + * wIndex) + * @param data + * the send/receive buffer + * @param size + * the buffer size. 0 is a valid value, but there must still be a + * dummy data buffer provided. + * @param timeout + * amount of time in ms the device will try to send/receive data + * until a timeout exception is thrown + * @param reopenOnTimeout + * if set to true, the device will try to open the connection and + * send/receive the data again before a timeout exception is + * thrown + * @return the number of bytes written/read + * @throws USBException + */ + public int controlMsg(int requestType, int request, int value, int index, + byte[] data, int size, int timeout, boolean reopenOnTimeout) + throws USBException { + if (usbDevHandle == 0) { + throw new USBException("invalid device handle"); + } + if (data == null) { + throw new USBException("data must not be null"); + } + if (size < 0 || size > data.length) { + throw new ArrayIndexOutOfBoundsException("invalid size: " + size); + } + int len = LibusbJava.usb_control_msg(usbDevHandle, requestType, + request, value, index, data, size, timeout); + if (len < 0) { + if (len == LibusbJava.ERROR_TIMEDOUT) { + // try to reopen the device and send the data again + if (reopenOnTimeout) { + logger.info("try to reopen"); + reset(); + open(dev_configuration, dev_interface, dev_altinterface); + return controlMsg(requestType, request, value, index, data, + size, timeout, false); + } + throw new USBTimeoutException("LibusbJava.controlMsg: " + + LibusbJava.usb_strerror()); + } + throw new USBException("LibusbJava.controlMsg: " + + LibusbJava.usb_strerror()); + } + + logger.info("length read/written: " + len); + if (logger.isLoggable(Level.FINEST)) { + StringBuffer sb = new StringBuffer("controlMsg: " + len + + " Bytes received(written: "); + for (int i = 0; i < len; i++) { + sb.append("0x" + String.format("%1$02X", data[i]) + " "); + } + logger.info(sb.toString()); + } + return len; + } + + /** + * Claim an interface to send and receive USB data.
+ * + * @param usb_dev_handle + * the handle of the device (MUST BE VALID) + * @param configuration + * the configuration to use + * @param interface_ + * the interface to claim + * @param altinterface + * the alternate interface to use. If no alternate interface must + * be set -1 can be used. + * @throws USBException + * throws an USBException if the action fails + */ + private void claim_interface(long usb_dev_handle, int configuration, + int interface_, int altinterface) throws USBException { + if (LibusbJava.usb_set_configuration(usb_dev_handle, configuration) < 0) { + usbDevHandle = 0; + throw new USBException("LibusbJava.usb_set_configuration: " + + LibusbJava.usb_strerror()); + } + if (LibusbJava.usb_claim_interface(usb_dev_handle, interface_) < 0) { + usbDevHandle = 0; + throw new USBException("LibusbJava.usb_claim_interface: " + + LibusbJava.usb_strerror()); + } + if (altinterface >= 0) { + if (LibusbJava.usb_set_altinterface(usb_dev_handle, altinterface) < 0) { + try { + release_interface(usb_dev_handle, interface_); + } catch (USBException e) { + // ignore + } + usbDevHandle = 0; + throw new USBException("LibusbJava.usb_set_altinterface: " + + LibusbJava.usb_strerror()); + } + } + logger.info("interface claimed"); + } + + /** + * Release a previously claimed interface.
+ * + * @param dev_handle + * the handle of the device (MUST BE VALID) + * @param interface_ + * the interface to claim + * @throws USBException + * throws an USBException if the action fails + */ + private void release_interface(long dev_handle, int interface_) + throws USBException { + if (LibusbJava.usb_release_interface(dev_handle, interface_) < 0) { + usbDevHandle = 0; + throw new USBException("LibusbJava.usb_release_interface: " + + LibusbJava.usb_strerror()); + } + logger.info("interface released"); + } + + /** + * Returns the product ID of the device.
+ * + * @return the product ID of the device. + */ + public int getIdProduct() { + return idProduct; + } + + /** + * Returns the vendor ID of the device.
+ * + * @return the vendor ID of the device. + */ + public int getIdVendor() { + return idVendor; + } + + /** + * Returns the alternative interface.
+ * This value is only valid after opening the device. + * + * @return the alternative interface. This value is only valid after opening + * the device. + */ + public int getAltinterface() { + return dev_altinterface; + } + + /** + * Returns the current configuration used.
+ * This value is only valid after opening the device. + * + * @return the current configuration used. This value is only valid after + * opening the device. + */ + public int getConfiguration() { + return dev_configuration; + } + + /** + * Returns the current interface.
+ * This value is only valid after opening the device. + * + * @return the current interface. This value is only valid after opening the + * device. + */ + public int getInterface() { + return dev_interface; + } + + /** + * Returns the maximum packet size in bytes which is allowed to be + * transmitted at once.
+ * The value is determined by reading the endpoint descriptor(s) when + * opening the device. It is invalid before the device is opened! Note that + * if some endpoints use different packet sizes the maximum packet size is + * return. This value may be used to determine if a device is opened in + * fullspeed or highspeed mode. + * + * @return the maximum packet size + */ + public int getMaxPacketSize() { + return maxPacketSize; + } + + /** + * Check if the device is open.
+ * This checks only for a valid device handle. It doesn't check if the + * device is still attached or working. + * + * @return true if the device is open + */ + public boolean isOpen() { + return usbDevHandle != 0; + } + + /** + * If enabled, the device is reset when first opened.
+ * This will only happen once. When the application is started, the device + * state is unknown. If the device is not reset, read or write may result in + * a {@link USBTimeoutException}.
+ *
+ * This feature is disabled by default. + * + * @param enable + * true if the device should be reset when first opened + * @param timeout + * the timeout between the reset and the reopening + */ + public void setResetOnFirstOpen(boolean enable, int timeout) { + resetOnFirstOpen = enable; + resetTimeout = timeout; + } + + /** + * Returns the optional filename which is set when there are multiple + * devices with the same vendor and product id. See + * {@link USB#getDevice(short, short, String, String)}. Use + * {@link Usb_Device#getFilename()} to read the filename of a device. + * + * @return the filename or null + */ + protected String getFilename() { + return filename; + } + + /** + * Returns the optional bus name which is set when there are multiple + * devices with the same vendor and product id. See + * {@link USB#getDevice(short, short, String, String)}. Use + * {@link Usb_Bus#getDirname()} to read the name of a bus. + * + * @return the bus name or null + */ + protected String getBusName() { + return busName; + } + + /** + * Returns the Usb_Device instance associated with this device. This value + * is only valid after opening the device. + * + * @return the Usb_Device instance associated with this device. + */ + public Usb_Device getDevice() { + return dev; + } + + @Override + public String toString() { + return "idVendor: 0x" + Integer.toHexString(getIdVendor() & 0xffff) + + ", idProduct: 0x" + + Integer.toHexString(getIdProduct() & 0xffff) + ", busName: " + + getBusName() + ", filename: " + getFilename(); + } + +} diff --git a/java/src/ch/ntb/usb/LibusbJava.java b/src/main/java/ch/ntb/usb.r273/LibusbJava.java similarity index 96% rename from java/src/ch/ntb/usb/LibusbJava.java rename to src/main/java/ch/ntb/usb.r273/LibusbJava.java index ad0e30f..c976af2 100644 --- a/java/src/ch/ntb/usb/LibusbJava.java +++ b/src/main/java/ch/ntb/usb.r273/LibusbJava.java @@ -1,378 +1,378 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -/** - * This class represents the Java Native Interface to the shared library which - * is (with some exceptions) a one-to-one representation of the libusb API.
- *
- *

Project Description

- * Java libusb is a Java wrapper for the libusb and libusb-win32 USB library. - * - * libusb aim is to create a - * library for use by user level applications to access USB devices regardless - * of OS.
- * Libusb-win32 is a port of - * the USB library libusb to the - * Windows operating systems. The library allows user space applications to - * access any USB device on Windows in a generic way without writing any line of - * kernel driver code.
- *
- * The API description of this class has been copied from the libusb documentation - * and adapted where neccessary.
- * - */ -public class LibusbJava { - - /** - * System error codes.
- * This list is not complete! For more error codes see the file 'errorno.h' - * on your system. - */ - public static int ERROR_SUCCESS, ERROR_BAD_FILE_DESCRIPTOR, - ERROR_NO_SUCH_DEVICE_OR_ADDRESS, ERROR_BUSY, - ERROR_INVALID_PARAMETER, ERROR_TIMEDOUT, ERROR_IO_ERROR, - ERROR_NOT_ENOUGH_MEMORY;; - - /** - * Sets the debugging level of libusb.
- * - * The range is from 0 to 255, where 0 disables debug output and 255 enables - * all output. On application start, debugging is disabled (0). - * - * @param level - * 0 to 255 - */ - public static native void usb_set_debug(int level); - - // Core - /** - * Just like the name implies, usb_init sets up some internal - * structures. usb_init must be called before any other - * libusb functions. - */ - public static native void usb_init(); - - /** - * usb_find_busses will find all of the busses on the system. - * - * @return the number of changes since previous call to this function (total - * of new busses and busses removed). - */ - public static native int usb_find_busses(); - - /** - * usb_find_devices will find all of the devices on each bus. - * This should be called after usb_find_busses. - * - * @return the number of changes since the previous call to this function - * (total of new device and devices removed). - */ - public static native int usb_find_devices(); - - /** - * usb_get_busses returns a tree of descriptor objects.
- * The tree represents the bus structure with devices, configurations, - * interfaces and endpoints. Note that this is only a copy. To refresh the - * information, usb_get_busses() must be called again.
- * The name of the objects contained in the tree is starting with - * Usb_. - * - * @return the structure of all busses and devices. Note: The - * java objects are copies of the C structs. - */ - public static native Usb_Bus usb_get_busses(); - - // Device Operations - /** - * usb_open is to be used to open up a device for use. - * usb_open must be called before attempting to perform any - * operations to the device. - * - * @param dev - * The device to open. - * @return a handle used in future communication with the device. 0 if an - * error has occurred. - */ - public static native long usb_open(Usb_Device dev); - - /** - * usb_close closes a device opened with - * usb_open. - * - * @param dev_handle - * The handle to the device. - * @return 0 on success or < 0 on error. - */ - public static native int usb_close(long dev_handle); - - /** - * Sets the active configuration of a device - * - * @param dev_handle - * The handle to the device. - * @param configuration - * The value as specified in the descriptor field - * bConfigurationValue. - * @return 0 on success or < 0 on error. - */ - public static native int usb_set_configuration(long dev_handle, - int configuration); - - /** - * Sets the active alternate setting of the current interface - * - * @param dev_handle - * The handle to the device. - * @param alternate - * The value as specified in the descriptor field - * bAlternateSetting. - * @return 0 on success or < 0 on error. - */ - public static native int usb_set_altinterface(long dev_handle, int alternate); - - /** - * Clears any halt status on an endpoint. - * - * @param dev_handle - * The handle to the device. - * @param ep - * The value specified in the descriptor field bEndpointAddress. - * @return 0 on success or < 0 on error. - */ - public static native int usb_clear_halt(long dev_handle, int ep); - - /** - * Resets a device by sending a RESET down the port it is connected to.
- *
- * Causes re-enumeration: After calling usb_reset, - * the device will need to re-enumerate and thusly, requires you to find the - * new device and open a new handle. The handle used to call - * usb_reset will no longer work. - * - * @param dev_handle - * The handle to the device. - * @return 0 on success or < 0 on error. - */ - public static native int usb_reset(long dev_handle); - - /** - * Claim an interface of a device.
- *
- * Must be called!: usb_claim_interface must be - * called before you perform any operations related to this interface (like - * usb_set_altinterface, usb_bulk_write, etc). - * - * @param dev_handle - * The handle to the device. - * @param interface_ - * The value as specified in the descriptor field - * bInterfaceNumber. - * @return 0 on success or < 0 on error. - */ - public static native int usb_claim_interface(long dev_handle, int interface_); - - /** - * Releases a previously claimed interface - * - * @param dev_handle - * The handle to the device. - * @param interface_ - * The value as specified in the descriptor field - * bInterfaceNumber. - * @return 0 on success or < 0 on error. - */ - public static native int usb_release_interface(long dev_handle, - int interface_); - - // Control Transfers - /** - * Performs a control request to the default control pipe on a device. The - * parameters mirror the types of the same name in the USB specification. - * - * @param dev_handle - * The handle to the device. - * @param requesttype - * @param request - * @param value - * @param index - * @param bytes - * @param size - * @param timeout - * @return the number of bytes written/read or < 0 on error. - */ - public static native int usb_control_msg(long dev_handle, int requesttype, - int request, int value, int index, byte[] bytes, int size, - int timeout); - - /** - * Retrieves the string descriptor specified by index and langid from a - * device. - * - * @param dev_handle - * The handle to the device. - * @param index - * @param langid - * @return the descriptor String or null - */ - public static native String usb_get_string(long dev_handle, int index, - int langid); - - /** - * usb_get_string_simple is a wrapper around - * usb_get_string that retrieves the string description - * specified by index in the first language for the descriptor. - * - * @param dev_handle - * The handle to the device. - * @param index - * @return the descriptor String or null - */ - public static native String usb_get_string_simple(long dev_handle, int index); - - /** - * Retrieves a descriptor from the device identified by the type and index - * of the descriptor from the default control pipe.
- *
- * See {@link #usb_get_descriptor_by_endpoint(long, int, byte, byte, int)} - * for a function that allows the control endpoint to be specified. - * - * @param dev_handle - * The handle to the device. - * @param type - * @param index - * @param size - * number of charactes which will be retrieved (the length of the - * resulting String) - * @return the descriptor String or null - */ - public static native String usb_get_descriptor(long dev_handle, byte type, - byte index, int size); - - /** - * Retrieves a descriptor from the device identified by the type and index - * of the descriptor from the control pipe identified by ep. - * - * @param dev_handle - * The handle to the device. - * @param ep - * @param type - * @param index - * @param size - * number of charactes which will be retrieved (the length of the - * resulting String) - * @return the descriptor String or null - */ - public static native String usb_get_descriptor_by_endpoint(long dev_handle, - int ep, byte type, byte index, int size); - - // Bulk Transfers - /** - * Performs a bulk write request to the endpoint specified by ep. - * - * @param dev_handle - * The handle to the device. - * @param ep - * @param bytes - * @param size - * @param timeout - * @return the number of bytes written on success or < 0 on error. - */ - public static native int usb_bulk_write(long dev_handle, int ep, - byte[] bytes, int size, int timeout); - - /** - * Performs a bulk read request to the endpoint specified by ep. - * - * @param dev_handle - * The handle to the device. - * @param ep - * @param bytes - * @param size - * @param timeout - * @return the number of bytes read on success or < 0 on error. - */ - public static native int usb_bulk_read(long dev_handle, int ep, - byte[] bytes, int size, int timeout); - - // Interrupt Transfers - /** - * Performs an interrupt write request to the endpoint specified by ep. - * - * @param dev_handle - * The handle to the device. - * @param ep - * @param bytes - * @param size - * @param timeout - * @return the number of bytes written on success or < 0 on error. - */ - public static native int usb_interrupt_write(long dev_handle, int ep, - byte[] bytes, int size, int timeout); - - /** - * Performs a interrupt read request to the endpoint specified by ep. - * - * @param dev_handle - * The handle to the device. - * @param ep - * @param bytes - * @param size - * @param timeout - * @return the number of bytes read on success or < 0 on error. - */ - public static native int usb_interrupt_read(long dev_handle, int ep, - byte[] bytes, int size, int timeout); - - /** - * Returns the error string after an error occured. - * - * @return the last error sring. - */ - public static native String usb_strerror(); - - /** **************************************************************** */ - - /** - * Maps the Java error code to the system error code.
- *
- * Note that not all error codes are be mapped by this method. For more - * error codes see the file 'errno.h' on your system.
- *
- * 1: EBADF: Bad file descriptor.
- * 2: ENXIO: No such device or address.
- * 3: EBUSY: Device or resource busy.
- * 4: EINVAL: Invalid argument.
- * 5: ETIMEDOUT: Connection timed out.
- * 6: EIO: I/O error.
- * 7: ENOMEM: Not enough memory.
- * - * - * @return the system error code or 100000 if no mapping has been found. - */ - private static native int usb_error_no(int value); - - static { - String os = System.getProperty("os.name"); - if (os.contains("Windows")) { - System.loadLibrary("LibusbJava"); - } else { - System.loadLibrary("usbJava"); - } - // define the error codes - ERROR_SUCCESS = 0; - ERROR_BAD_FILE_DESCRIPTOR = -usb_error_no(1); - ERROR_NO_SUCH_DEVICE_OR_ADDRESS = -usb_error_no(2); - ERROR_BUSY = -usb_error_no(3); - ERROR_INVALID_PARAMETER = -usb_error_no(4); - ERROR_TIMEDOUT = -usb_error_no(5); - ERROR_IO_ERROR = -usb_error_no(6); - ERROR_NOT_ENOUGH_MEMORY = -usb_error_no(7); - } +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +/** + * This class represents the Java Native Interface to the shared library which + * is (with some exceptions) a one-to-one representation of the libusb API.
+ *
+ *

Project Description

+ * Java libusb is a Java wrapper for the libusb and libusb-win32 USB library. + * + * libusb aim is to create a + * library for use by user level applications to access USB devices regardless + * of OS.
+ * Libusb-win32 is a port of + * the USB library libusb to the + * Windows operating systems. The library allows user space applications to + * access any USB device on Windows in a generic way without writing any line of + * kernel driver code.
+ *
+ * The API description of this class has been copied from the libusb documentation + * and adapted where neccessary.
+ * + */ +public class LibusbJava { + + /** + * System error codes.
+ * This list is not complete! For more error codes see the file 'errorno.h' + * on your system. + */ + public static int ERROR_SUCCESS, ERROR_BAD_FILE_DESCRIPTOR, + ERROR_NO_SUCH_DEVICE_OR_ADDRESS, ERROR_BUSY, + ERROR_INVALID_PARAMETER, ERROR_TIMEDOUT, ERROR_IO_ERROR, + ERROR_NOT_ENOUGH_MEMORY;; + + /** + * Sets the debugging level of libusb.
+ * + * The range is from 0 to 255, where 0 disables debug output and 255 enables + * all output. On application start, debugging is disabled (0). + * + * @param level + * 0 to 255 + */ + public static native void usb_set_debug(int level); + + // Core + /** + * Just like the name implies, usb_init sets up some internal + * structures. usb_init must be called before any other + * libusb functions. + */ + public static native void usb_init(); + + /** + * usb_find_busses will find all of the busses on the system. + * + * @return the number of changes since previous call to this function (total + * of new busses and busses removed). + */ + public static native int usb_find_busses(); + + /** + * usb_find_devices will find all of the devices on each bus. + * This should be called after usb_find_busses. + * + * @return the number of changes since the previous call to this function + * (total of new device and devices removed). + */ + public static native int usb_find_devices(); + + /** + * usb_get_busses returns a tree of descriptor objects.
+ * The tree represents the bus structure with devices, configurations, + * interfaces and endpoints. Note that this is only a copy. To refresh the + * information, usb_get_busses() must be called again.
+ * The name of the objects contained in the tree is starting with + * Usb_. + * + * @return the structure of all busses and devices. Note: The + * java objects are copies of the C structs. + */ + public static native Usb_Bus usb_get_busses(); + + // Device Operations + /** + * usb_open is to be used to open up a device for use. + * usb_open must be called before attempting to perform any + * operations to the device. + * + * @param dev + * The device to open. + * @return a handle used in future communication with the device. 0 if an + * error has occurred. + */ + public static native long usb_open(Usb_Device dev); + + /** + * usb_close closes a device opened with + * usb_open. + * + * @param dev_handle + * The handle to the device. + * @return 0 on success or < 0 on error. + */ + public static native int usb_close(long dev_handle); + + /** + * Sets the active configuration of a device + * + * @param dev_handle + * The handle to the device. + * @param configuration + * The value as specified in the descriptor field + * bConfigurationValue. + * @return 0 on success or < 0 on error. + */ + public static native int usb_set_configuration(long dev_handle, + int configuration); + + /** + * Sets the active alternate setting of the current interface + * + * @param dev_handle + * The handle to the device. + * @param alternate + * The value as specified in the descriptor field + * bAlternateSetting. + * @return 0 on success or < 0 on error. + */ + public static native int usb_set_altinterface(long dev_handle, int alternate); + + /** + * Clears any halt status on an endpoint. + * + * @param dev_handle + * The handle to the device. + * @param ep + * The value specified in the descriptor field bEndpointAddress. + * @return 0 on success or < 0 on error. + */ + public static native int usb_clear_halt(long dev_handle, int ep); + + /** + * Resets a device by sending a RESET down the port it is connected to.
+ *
+ * Causes re-enumeration: After calling usb_reset, + * the device will need to re-enumerate and thusly, requires you to find the + * new device and open a new handle. The handle used to call + * usb_reset will no longer work. + * + * @param dev_handle + * The handle to the device. + * @return 0 on success or < 0 on error. + */ + public static native int usb_reset(long dev_handle); + + /** + * Claim an interface of a device.
+ *
+ * Must be called!: usb_claim_interface must be + * called before you perform any operations related to this interface (like + * usb_set_altinterface, usb_bulk_write, etc). + * + * @param dev_handle + * The handle to the device. + * @param interface_ + * The value as specified in the descriptor field + * bInterfaceNumber. + * @return 0 on success or < 0 on error. + */ + public static native int usb_claim_interface(long dev_handle, int interface_); + + /** + * Releases a previously claimed interface + * + * @param dev_handle + * The handle to the device. + * @param interface_ + * The value as specified in the descriptor field + * bInterfaceNumber. + * @return 0 on success or < 0 on error. + */ + public static native int usb_release_interface(long dev_handle, + int interface_); + + // Control Transfers + /** + * Performs a control request to the default control pipe on a device. The + * parameters mirror the types of the same name in the USB specification. + * + * @param dev_handle + * The handle to the device. + * @param requesttype + * @param request + * @param value + * @param index + * @param bytes + * @param size + * @param timeout + * @return the number of bytes written/read or < 0 on error. + */ + public static native int usb_control_msg(long dev_handle, int requesttype, + int request, int value, int index, byte[] bytes, int size, + int timeout); + + /** + * Retrieves the string descriptor specified by index and langid from a + * device. + * + * @param dev_handle + * The handle to the device. + * @param index + * @param langid + * @return the descriptor String or null + */ + public static native String usb_get_string(long dev_handle, int index, + int langid); + + /** + * usb_get_string_simple is a wrapper around + * usb_get_string that retrieves the string description + * specified by index in the first language for the descriptor. + * + * @param dev_handle + * The handle to the device. + * @param index + * @return the descriptor String or null + */ + public static native String usb_get_string_simple(long dev_handle, int index); + + /** + * Retrieves a descriptor from the device identified by the type and index + * of the descriptor from the default control pipe.
+ *
+ * See {@link #usb_get_descriptor_by_endpoint(long, int, byte, byte, int)} + * for a function that allows the control endpoint to be specified. + * + * @param dev_handle + * The handle to the device. + * @param type + * @param index + * @param size + * number of charactes which will be retrieved (the length of the + * resulting String) + * @return the descriptor String or null + */ + public static native String usb_get_descriptor(long dev_handle, byte type, + byte index, int size); + + /** + * Retrieves a descriptor from the device identified by the type and index + * of the descriptor from the control pipe identified by ep. + * + * @param dev_handle + * The handle to the device. + * @param ep + * @param type + * @param index + * @param size + * number of charactes which will be retrieved (the length of the + * resulting String) + * @return the descriptor String or null + */ + public static native String usb_get_descriptor_by_endpoint(long dev_handle, + int ep, byte type, byte index, int size); + + // Bulk Transfers + /** + * Performs a bulk write request to the endpoint specified by ep. + * + * @param dev_handle + * The handle to the device. + * @param ep + * @param bytes + * @param size + * @param timeout + * @return the number of bytes written on success or < 0 on error. + */ + public static native int usb_bulk_write(long dev_handle, int ep, + byte[] bytes, int size, int timeout); + + /** + * Performs a bulk read request to the endpoint specified by ep. + * + * @param dev_handle + * The handle to the device. + * @param ep + * @param bytes + * @param size + * @param timeout + * @return the number of bytes read on success or < 0 on error. + */ + public static native int usb_bulk_read(long dev_handle, int ep, + byte[] bytes, int size, int timeout); + + // Interrupt Transfers + /** + * Performs an interrupt write request to the endpoint specified by ep. + * + * @param dev_handle + * The handle to the device. + * @param ep + * @param bytes + * @param size + * @param timeout + * @return the number of bytes written on success or < 0 on error. + */ + public static native int usb_interrupt_write(long dev_handle, int ep, + byte[] bytes, int size, int timeout); + + /** + * Performs a interrupt read request to the endpoint specified by ep. + * + * @param dev_handle + * The handle to the device. + * @param ep + * @param bytes + * @param size + * @param timeout + * @return the number of bytes read on success or < 0 on error. + */ + public static native int usb_interrupt_read(long dev_handle, int ep, + byte[] bytes, int size, int timeout); + + /** + * Returns the error string after an error occured. + * + * @return the last error sring. + */ + public static native String usb_strerror(); + + /** **************************************************************** */ + + /** + * Maps the Java error code to the system error code.
+ *
+ * Note that not all error codes are be mapped by this method. For more + * error codes see the file 'errno.h' on your system.
+ *
+ * 1: EBADF: Bad file descriptor.
+ * 2: ENXIO: No such device or address.
+ * 3: EBUSY: Device or resource busy.
+ * 4: EINVAL: Invalid argument.
+ * 5: ETIMEDOUT: Connection timed out.
+ * 6: EIO: I/O error.
+ * 7: ENOMEM: Not enough memory.
+ * + * + * @return the system error code or 100000 if no mapping has been found. + */ + private static native int usb_error_no(int value); + + static { + String os = System.getProperty("os.name"); + if (os.contains("Windows")) { + System.loadLibrary("LibusbJava"); + } else { + System.loadLibrary("usbJava"); + } + // define the error codes + ERROR_SUCCESS = 0; + ERROR_BAD_FILE_DESCRIPTOR = -usb_error_no(1); + ERROR_NO_SUCH_DEVICE_OR_ADDRESS = -usb_error_no(2); + ERROR_BUSY = -usb_error_no(3); + ERROR_INVALID_PARAMETER = -usb_error_no(4); + ERROR_TIMEDOUT = -usb_error_no(5); + ERROR_IO_ERROR = -usb_error_no(6); + ERROR_NOT_ENOUGH_MEMORY = -usb_error_no(7); + } } \ No newline at end of file diff --git a/java/src/ch/ntb/usb/USB.java b/src/main/java/ch/ntb/usb.r273/USB.java similarity index 97% rename from java/src/ch/ntb/usb/USB.java rename to src/main/java/ch/ntb/usb.r273/USB.java index abdcfd8..f372ef3 100644 --- a/java/src/ch/ntb/usb/USB.java +++ b/src/main/java/ch/ntb/usb.r273/USB.java @@ -1,318 +1,318 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.logging.Logger; - -import ch.ntb.usb.logger.LogUtil; - -/** - * This class manages all USB devices and defines some USB specific constants.
- * - */ -public class USB { - - // Standard requests (USB spec 9.4) - /** - * This request returns status for the specified recipient (USB spec 9.4.5). - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_GET_STATUS = 0x00; - /** - * This request is used to clear or disable a specific feature (USB spec - * 9.4.1). - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_CLEAR_FEATURE = 0x01; - // 0x02 is reserved - /** - * This request is used to set or enable a specific feature (USB spec - * 9.4.9). - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_SET_FEATURE = 0x03; - // 0x04 is reserved - /** - * This request sets the device address for all future device accesses (USB - * spec 9.4.6). - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_SET_ADDRESS = 0x05; - /** - * This request returns the specified descriptor if the descriptor exists - * (USB spec 9.4.3). - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_GET_DESCRIPTOR = 0x06; - /** - * This request is optional and may be used to update existing descriptors - * or new descriptors may be added (USB spec 9.4.8). - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_SET_DESCRIPTOR = 0x07; - /** - * This request returns the current device configuration value (USB spec - * 9.4.2). - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_GET_CONFIGURATION = 0x08; - /** - * This request sets the device configuration (USB spec 9.4.7). - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_SET_CONFIGURATION = 0x09; - /** - * This request returns the selected alternate setting for the specified - * interface (USB spec 9.4.4). - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_GET_INTERFACE = 0x0A; - /** - * This request allows the host to select an alternate setting for the - * specified interface (USB spec 9.4.10). - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_SET_INTERFACE = 0x0B; - /** - * This request is used to set and then report an endpoint’s synchronization - * frame (USB spec 9.4.11). - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_SYNCH_FRAME = 0x0C; - - // data transfer direction (USB spec 9.3) - /** - * Identifies the direction of data transfer in the second phase of the - * control transfer.
- * The state of the Direction bit is ignored if the wLength field is zero, - * signifying there is no Data stage.
- * Specifies bit 7 of bmRequestType. - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_TYPE_DIR_HOST_TO_DEVICE = (0x00 << 7), - REQ_TYPE_DIR_DEVICE_TO_HOST = (0x01 << 7); - - // request types (USB spec 9.3) - /** - * Specifies the type of the request.
- * Specifies bits 6..5 of bmRequestType. - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_TYPE_TYPE_STANDARD = (0x00 << 5), - REQ_TYPE_TYPE_CLASS = (0x01 << 5), - REQ_TYPE_TYPE_VENDOR = (0x02 << 5), - REQ_TYPE_TYPE_RESERVED = (0x03 << 5); - - // request recipient (USB spec 9.3) - /** - * Specifies the intended recipient of the request.
- * Requests may be directed to the device, an interface on the device, or a - * specific endpoint on a device. When an interface or endpoint is - * specified, the wIndex field identifies the interface or endpoint.
- * Specifies bits 4..0 of bmRequestType. - * - * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, - * boolean) - */ - public static final int REQ_TYPE_RECIP_DEVICE = 0x00, - REQ_TYPE_RECIP_INTERFACE = 0x01, REQ_TYPE_RECIP_ENDPOINT = 0x02, - REQ_TYPE_RECIP_OTHER = 0x03; - - /** - * The maximum packet size of a bulk transfer when operating in highspeed - * (480 MB/s) mode. - */ - public static int HIGHSPEED_MAX_BULK_PACKET_SIZE = 512; - - /** - * The maximum packet size of a bulk transfer when operating in fullspeed - * (12 MB/s) mode. - */ - public static int FULLSPEED_MAX_BULK_PACKET_SIZE = 64; - - private static final Logger logger = LogUtil.getLogger("ch.ntb.usb"); - - private static LinkedList devices = new LinkedList(); - - private static boolean initUSBDone = false; - - /** - * Create a new device an register it in a device list. If the device is - * already registered, a reference to it will be returned.
- * After resetting or re-attaching a device the busName and filename may - * change. You can unregister the current device instance (see - * {@link #unregisterDevice(Device)}) and get a new instance with the - * updated bus and filename. - * - * @param idVendor - * the vendor id of the USB device - * @param idProduct - * the product id of the USB device - * @param busName - * optional name of the bus which can be used to distinguish - * multiple devices with the same vendor and product id.
- * see {@link Usb_Bus#getDirname()} - * @param filename - * optional filename which can be used to distinguish multiple - * devices with the same vendor and product id.
- * see {@link Usb_Device#getFilename()} - * @return a newly created device or an already registered device - */ - public static Device getDevice(short idVendor, short idProduct, - String busName, String filename) { - - // check if this device is already registered - Device dev = getRegisteredDevice(idVendor, idProduct, busName, filename); - if (dev != null) { - logger.info("return already registered device: " + dev); - return dev; - } - dev = new Device(idVendor, idProduct, busName, filename); - logger.info("create new device: " + dev); - devices.add(dev); - return dev; - } - - /** - * See {@link #getDevice(short, short, String, String)}. The parameter - * filename and busNameis set to null. - * - * @param idVendor - * @param idProduct - * @return a newly created device or an already registered device - */ - public static Device getDevice(short idVendor, short idProduct) { - return getDevice(idVendor, idProduct, null, null); - } - - /** - * Unregister a registered device. - * - * @param dev - * the device to unregister - * @return true if the device has been removed, else false - */ - public static boolean unregisterDevice(Device dev) { - return devices.remove(dev); - } - - /** - * Get an already registered device or null if the device does not exist.
- * To uniquely identify a device bus and filename should be set. If only one - * of those is set the first device matching the criteria is returned. - * - * @param idVendor - * the vendor id of the USB device - * @param idProduct - * the product id of the USB device - * @param busName - * the name of the bus which can be used to distinguish multiple - * devices with the same vendor and product id.
- * see {@link Usb_Bus#getDirname()} - * @param filename - * an optional filename which can be used to distinguish multiple - * devices with the same vendor and product id. see - * {@link Usb_Device#getFilename()} - * - * @return the device or null - */ - private static Device getRegisteredDevice(short idVendor, short idProduct, - String busName, String filename) { - for (Iterator iter = devices.iterator(); iter.hasNext();) { - Device dev = iter.next(); - // bus and filename - if (busName != null && filename != null) { - if (busName.compareTo(dev.getBusName() == null ? "" : dev - .getBusName()) == 0 - && filename.compareTo(dev.getFilename() == null ? "" - : dev.getFilename()) == 0 - && dev.getIdVendor() == idVendor - && dev.getIdProduct() == idProduct) { - return dev; - } - } else if (filename != null) { - if (filename.compareTo(dev.getFilename() == null ? "" : dev - .getFilename()) == 0 - && dev.getIdVendor() == idVendor - && dev.getIdProduct() == idProduct) { - return dev; - } - } else if (busName != null) { - if (busName.compareTo(dev.getBusName() == null ? "" : dev - .getBusName()) == 0 - && dev.getIdVendor() == idVendor - && dev.getIdProduct() == idProduct) { - return dev; - } - } else if (dev.getIdVendor() == idVendor - && dev.getIdProduct() == idProduct) { - return dev; - } - } - return null; - } - - /** - * Returns the root {@link Usb_Bus} element. - * - * @return the root {@link Usb_Bus} element - * @throws USBException - */ - public static Usb_Bus getBus() throws USBException { - if (!initUSBDone) { - init(); - } - LibusbJava.usb_find_busses(); - LibusbJava.usb_find_devices(); - - Usb_Bus bus = LibusbJava.usb_get_busses(); - if (bus == null) { - throw new USBException("LibusbJava.usb_get_busses(): " - + LibusbJava.usb_strerror()); - } - return bus; - } - - /** - * Explicitly calls {@link LibusbJava#usb_init()}. Note that you don't need - * to call this procedure as it is called implicitly when creating a new - * device with {@link USB#getDevice(short, short, String, String)}. - */ - public static void init() { - LibusbJava.usb_init(); - initUSBDone = true; - } -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +import java.util.Iterator; +import java.util.LinkedList; +import java.util.logging.Logger; + +import ch.ntb.usb.logger.LogUtil; + +/** + * This class manages all USB devices and defines some USB specific constants.
+ * + */ +public class USB { + + // Standard requests (USB spec 9.4) + /** + * This request returns status for the specified recipient (USB spec 9.4.5). + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_GET_STATUS = 0x00; + /** + * This request is used to clear or disable a specific feature (USB spec + * 9.4.1). + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_CLEAR_FEATURE = 0x01; + // 0x02 is reserved + /** + * This request is used to set or enable a specific feature (USB spec + * 9.4.9). + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_SET_FEATURE = 0x03; + // 0x04 is reserved + /** + * This request sets the device address for all future device accesses (USB + * spec 9.4.6). + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_SET_ADDRESS = 0x05; + /** + * This request returns the specified descriptor if the descriptor exists + * (USB spec 9.4.3). + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_GET_DESCRIPTOR = 0x06; + /** + * This request is optional and may be used to update existing descriptors + * or new descriptors may be added (USB spec 9.4.8). + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_SET_DESCRIPTOR = 0x07; + /** + * This request returns the current device configuration value (USB spec + * 9.4.2). + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_GET_CONFIGURATION = 0x08; + /** + * This request sets the device configuration (USB spec 9.4.7). + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_SET_CONFIGURATION = 0x09; + /** + * This request returns the selected alternate setting for the specified + * interface (USB spec 9.4.4). + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_GET_INTERFACE = 0x0A; + /** + * This request allows the host to select an alternate setting for the + * specified interface (USB spec 9.4.10). + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_SET_INTERFACE = 0x0B; + /** + * This request is used to set and then report an endpoint’s synchronization + * frame (USB spec 9.4.11). + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_SYNCH_FRAME = 0x0C; + + // data transfer direction (USB spec 9.3) + /** + * Identifies the direction of data transfer in the second phase of the + * control transfer.
+ * The state of the Direction bit is ignored if the wLength field is zero, + * signifying there is no Data stage.
+ * Specifies bit 7 of bmRequestType. + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_TYPE_DIR_HOST_TO_DEVICE = (0x00 << 7), + REQ_TYPE_DIR_DEVICE_TO_HOST = (0x01 << 7); + + // request types (USB spec 9.3) + /** + * Specifies the type of the request.
+ * Specifies bits 6..5 of bmRequestType. + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_TYPE_TYPE_STANDARD = (0x00 << 5), + REQ_TYPE_TYPE_CLASS = (0x01 << 5), + REQ_TYPE_TYPE_VENDOR = (0x02 << 5), + REQ_TYPE_TYPE_RESERVED = (0x03 << 5); + + // request recipient (USB spec 9.3) + /** + * Specifies the intended recipient of the request.
+ * Requests may be directed to the device, an interface on the device, or a + * specific endpoint on a device. When an interface or endpoint is + * specified, the wIndex field identifies the interface or endpoint.
+ * Specifies bits 4..0 of bmRequestType. + * + * @see ch.ntb.usb.Device#controlMsg(int, int, int, int, byte[], int, int, + * boolean) + */ + public static final int REQ_TYPE_RECIP_DEVICE = 0x00, + REQ_TYPE_RECIP_INTERFACE = 0x01, REQ_TYPE_RECIP_ENDPOINT = 0x02, + REQ_TYPE_RECIP_OTHER = 0x03; + + /** + * The maximum packet size of a bulk transfer when operating in highspeed + * (480 MB/s) mode. + */ + public static int HIGHSPEED_MAX_BULK_PACKET_SIZE = 512; + + /** + * The maximum packet size of a bulk transfer when operating in fullspeed + * (12 MB/s) mode. + */ + public static int FULLSPEED_MAX_BULK_PACKET_SIZE = 64; + + private static final Logger logger = LogUtil.getLogger("ch.ntb.usb"); + + private static LinkedList devices = new LinkedList(); + + private static boolean initUSBDone = false; + + /** + * Create a new device an register it in a device list. If the device is + * already registered, a reference to it will be returned.
+ * After resetting or re-attaching a device the busName and filename may + * change. You can unregister the current device instance (see + * {@link #unregisterDevice(Device)}) and get a new instance with the + * updated bus and filename. + * + * @param idVendor + * the vendor id of the USB device + * @param idProduct + * the product id of the USB device + * @param busName + * optional name of the bus which can be used to distinguish + * multiple devices with the same vendor and product id.
+ * see {@link Usb_Bus#getDirname()} + * @param filename + * optional filename which can be used to distinguish multiple + * devices with the same vendor and product id.
+ * see {@link Usb_Device#getFilename()} + * @return a newly created device or an already registered device + */ + public static Device getDevice(short idVendor, short idProduct, + String busName, String filename) { + + // check if this device is already registered + Device dev = getRegisteredDevice(idVendor, idProduct, busName, filename); + if (dev != null) { + logger.info("return already registered device: " + dev); + return dev; + } + dev = new Device(idVendor, idProduct, busName, filename); + logger.info("create new device: " + dev); + devices.add(dev); + return dev; + } + + /** + * See {@link #getDevice(short, short, String, String)}. The parameter + * filename and busNameis set to null. + * + * @param idVendor + * @param idProduct + * @return a newly created device or an already registered device + */ + public static Device getDevice(short idVendor, short idProduct) { + return getDevice(idVendor, idProduct, null, null); + } + + /** + * Unregister a registered device. + * + * @param dev + * the device to unregister + * @return true if the device has been removed, else false + */ + public static boolean unregisterDevice(Device dev) { + return devices.remove(dev); + } + + /** + * Get an already registered device or null if the device does not exist.
+ * To uniquely identify a device bus and filename should be set. If only one + * of those is set the first device matching the criteria is returned. + * + * @param idVendor + * the vendor id of the USB device + * @param idProduct + * the product id of the USB device + * @param busName + * the name of the bus which can be used to distinguish multiple + * devices with the same vendor and product id.
+ * see {@link Usb_Bus#getDirname()} + * @param filename + * an optional filename which can be used to distinguish multiple + * devices with the same vendor and product id. see + * {@link Usb_Device#getFilename()} + * + * @return the device or null + */ + private static Device getRegisteredDevice(short idVendor, short idProduct, + String busName, String filename) { + for (Iterator iter = devices.iterator(); iter.hasNext();) { + Device dev = iter.next(); + // bus and filename + if (busName != null && filename != null) { + if (busName.compareTo(dev.getBusName() == null ? "" : dev + .getBusName()) == 0 + && filename.compareTo(dev.getFilename() == null ? "" + : dev.getFilename()) == 0 + && dev.getIdVendor() == idVendor + && dev.getIdProduct() == idProduct) { + return dev; + } + } else if (filename != null) { + if (filename.compareTo(dev.getFilename() == null ? "" : dev + .getFilename()) == 0 + && dev.getIdVendor() == idVendor + && dev.getIdProduct() == idProduct) { + return dev; + } + } else if (busName != null) { + if (busName.compareTo(dev.getBusName() == null ? "" : dev + .getBusName()) == 0 + && dev.getIdVendor() == idVendor + && dev.getIdProduct() == idProduct) { + return dev; + } + } else if (dev.getIdVendor() == idVendor + && dev.getIdProduct() == idProduct) { + return dev; + } + } + return null; + } + + /** + * Returns the root {@link Usb_Bus} element. + * + * @return the root {@link Usb_Bus} element + * @throws USBException + */ + public static Usb_Bus getBus() throws USBException { + if (!initUSBDone) { + init(); + } + LibusbJava.usb_find_busses(); + LibusbJava.usb_find_devices(); + + Usb_Bus bus = LibusbJava.usb_get_busses(); + if (bus == null) { + throw new USBException("LibusbJava.usb_get_busses(): " + + LibusbJava.usb_strerror()); + } + return bus; + } + + /** + * Explicitly calls {@link LibusbJava#usb_init()}. Note that you don't need + * to call this procedure as it is called implicitly when creating a new + * device with {@link USB#getDevice(short, short, String, String)}. + */ + public static void init() { + LibusbJava.usb_init(); + initUSBDone = true; + } +} diff --git a/java/src/ch/ntb/usb/USBException.java b/src/main/java/ch/ntb/usb.r273/USBException.java similarity index 95% rename from java/src/ch/ntb/usb/USBException.java rename to src/main/java/ch/ntb/usb.r273/USBException.java index af40cd2..21f1f5c 100644 --- a/java/src/ch/ntb/usb/USBException.java +++ b/src/main/java/ch/ntb/usb.r273/USBException.java @@ -1,23 +1,23 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -import java.io.IOException; - -public class USBException extends IOException { - - public USBException(String string) { - super(string); - } - - /** - * - */ - private static final long serialVersionUID = 1690857437804284710L; - -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +import java.io.IOException; + +public class USBException extends IOException { + + public USBException(String string) { + super(string); + } + + /** + * + */ + private static final long serialVersionUID = 1690857437804284710L; + +} diff --git a/java/src/ch/ntb/usb/USBTimeoutException.java b/src/main/java/ch/ntb/usb.r273/USBTimeoutException.java similarity index 95% rename from java/src/ch/ntb/usb/USBTimeoutException.java rename to src/main/java/ch/ntb/usb.r273/USBTimeoutException.java index 3b8cf01..4b8c3c6 100644 --- a/java/src/ch/ntb/usb/USBTimeoutException.java +++ b/src/main/java/ch/ntb/usb.r273/USBTimeoutException.java @@ -1,21 +1,21 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -public class USBTimeoutException extends USBException { - - public USBTimeoutException(String string) { - super(string); - } - - /** - * - */ - private static final long serialVersionUID = -1065328371159778249L; - -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +public class USBTimeoutException extends USBException { + + public USBTimeoutException(String string) { + super(string); + } + + /** + * + */ + private static final long serialVersionUID = -1065328371159778249L; + +} diff --git a/java/src/ch/ntb/usb/Usb_Bus.java b/src/main/java/ch/ntb/usb.r273/Usb_Bus.java similarity index 95% rename from java/src/ch/ntb/usb/Usb_Bus.java rename to src/main/java/ch/ntb/usb.r273/Usb_Bus.java index fd668d3..a7c59fc 100644 --- a/java/src/ch/ntb/usb/Usb_Bus.java +++ b/src/main/java/ch/ntb/usb.r273/Usb_Bus.java @@ -1,86 +1,86 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -/** - * Represents an USB bus.
- * This is the root class for the representation of the libusb USB structure. - * Zero or more devices may be connected to an USB bus. - * - */ -public class Usb_Bus { - - private Usb_Bus next, prev; - - private String dirname; - - private Usb_Device devices; - - private long location; - - private Usb_Device root_dev; - - /** - * Get the first device ojects of the devices linked list.
- * - * @return the first device ojects of the devices linked list or null - */ - public Usb_Device getDevices() { - return devices; - } - - /** - * Returns the systems String representation of the bus.
- * - * @return the systems String representation of the bus - */ - public String getDirname() { - return dirname; - } - - /** - * Returns the next bus object.
- * - * @return Returns the next bus object or null - */ - public Usb_Bus getNext() { - return next; - } - - /** - * Returns the previous bus object.
- * - * @return Returns the previous bus object or null - */ - public Usb_Bus getPrev() { - return prev; - } - - /** - * Get the root device of this bus.
- * - * @return the root device oject or null - */ - public Usb_Device getRootDev() { - return root_dev; - } - - /** - * Returns the location in the USB bus linked list.
- * - * @return the location in the USB bus linked list - */ - public long getLocation() { - return location; - } - - @Override - public String toString() { - return "Usb_Bus " + dirname; - } +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +/** + * Represents an USB bus.
+ * This is the root class for the representation of the libusb USB structure. + * Zero or more devices may be connected to an USB bus. + * + */ +public class Usb_Bus { + + private Usb_Bus next, prev; + + private String dirname; + + private Usb_Device devices; + + private long location; + + private Usb_Device root_dev; + + /** + * Get the first device ojects of the devices linked list.
+ * + * @return the first device ojects of the devices linked list or null + */ + public Usb_Device getDevices() { + return devices; + } + + /** + * Returns the systems String representation of the bus.
+ * + * @return the systems String representation of the bus + */ + public String getDirname() { + return dirname; + } + + /** + * Returns the next bus object.
+ * + * @return Returns the next bus object or null + */ + public Usb_Bus getNext() { + return next; + } + + /** + * Returns the previous bus object.
+ * + * @return Returns the previous bus object or null + */ + public Usb_Bus getPrev() { + return prev; + } + + /** + * Get the root device of this bus.
+ * + * @return the root device oject or null + */ + public Usb_Device getRootDev() { + return root_dev; + } + + /** + * Returns the location in the USB bus linked list.
+ * + * @return the location in the USB bus linked list + */ + public long getLocation() { + return location; + } + + @Override + public String toString() { + return "Usb_Bus " + dirname; + } } \ No newline at end of file diff --git a/java/src/ch/ntb/usb/Usb_Config_Descriptor.java b/src/main/java/ch/ntb/usb.r273/Usb_Config_Descriptor.java similarity index 96% rename from java/src/ch/ntb/usb/Usb_Config_Descriptor.java rename to src/main/java/ch/ntb/usb.r273/Usb_Config_Descriptor.java index 3ba9fda..9bf6ff5 100644 --- a/java/src/ch/ntb/usb/Usb_Config_Descriptor.java +++ b/src/main/java/ch/ntb/usb.r273/Usb_Config_Descriptor.java @@ -1,139 +1,139 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -/** - * Represents the descriptor of a USB configuration.
- * A USB device can have several different configuration.
- *
- * The length of the configuration descriptor is - * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_CONFIG_SIZE} and the type is - * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_CONFIG}. - * - */ -public class Usb_Config_Descriptor extends Usb_Descriptor { - - /** - * Maximum number of configurations per device - */ - public static final int USB_MAXCONFIG = 8; - - private short wTotalLength; - - private byte bNumInterfaces; - - private byte bConfigurationValue; - - private byte iConfiguration; - - private byte bmAttributes; - - private byte MaxPower; - - private Usb_Interface[] interface_; - - private byte[] extra; /* Extra descriptors */ - - private int extralen; - - /** - * Returns the value to use as an argument to select this configuration ({@link LibusbJava#usb_set_configuration(long, int)}). - * - * @return the value to use as an argument to select this configuration - */ - public byte getBConfigurationValue() { - return bConfigurationValue; - } - - /** - * Returns the power parameters for this configuration.
- *
- * Bit 7: Reserved, set to 1 (USB 1.0 Bus Powered)
- * Bit 6: Self Powered
- * Bit 5: Remote Wakeup
- * Bit 4..0: Reserved, set to 0 - * - * @return the power parameters for this configuration - */ - public byte getBmAttributes() { - return bmAttributes; - } - - /** - * Returns the number of interfaces.
- * - * @return the number of interfaces - */ - public byte getBNumInterfaces() { - return bNumInterfaces; - } - - /** - * Returns the data of extra descriptor(s) if available.
- * - * @return null or a byte array with the extra descriptor data - */ - public byte[] getExtra() { - return extra; - } - - /** - * Returns the number of bytes of the extra descriptor.
- * - * @return the number of bytes of the extra descriptor - */ - public int getExtralen() { - return extralen; - } - - /** - * Returns the index of the String descriptor describing this configuration.
- * - * @return the index of the String descriptor - */ - public byte getIConfiguration() { - return iConfiguration; - } - - /** - * Returns the USB interface descriptors.
- * - * @return the USB interface descriptors - */ - public Usb_Interface[] getInterface() { - return interface_; - } - - /** - * Returns the maximum power consumption in 2mA units.
- * - * @return the maximum power consumption in 2mA units - */ - public byte getMaxPower() { - return MaxPower; - } - - /** - * Returns the total length in bytes of all descriptors.
- * When the configuration descriptor is read, it returns the entire - * configuration hierarchy which includes all related interface and endpoint - * descriptors. The wTotalLength field reflects the number of - * bytes in the hierarchy. - * - * @return the total length in bytes of all descriptors - */ - public short getWTotalLength() { - return wTotalLength; - } - - @Override - public String toString() { - return "Usb_Config_Descriptor bNumInterfaces: 0x" - + Integer.toHexString(bNumInterfaces); - } +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +/** + * Represents the descriptor of a USB configuration.
+ * A USB device can have several different configuration.
+ *
+ * The length of the configuration descriptor is + * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_CONFIG_SIZE} and the type is + * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_CONFIG}. + * + */ +public class Usb_Config_Descriptor extends Usb_Descriptor { + + /** + * Maximum number of configurations per device + */ + public static final int USB_MAXCONFIG = 8; + + private short wTotalLength; + + private byte bNumInterfaces; + + private byte bConfigurationValue; + + private byte iConfiguration; + + private byte bmAttributes; + + private byte MaxPower; + + private Usb_Interface[] interface_; + + private byte[] extra; /* Extra descriptors */ + + private int extralen; + + /** + * Returns the value to use as an argument to select this configuration ({@link LibusbJava#usb_set_configuration(long, int)}). + * + * @return the value to use as an argument to select this configuration + */ + public byte getBConfigurationValue() { + return bConfigurationValue; + } + + /** + * Returns the power parameters for this configuration.
+ *
+ * Bit 7: Reserved, set to 1 (USB 1.0 Bus Powered)
+ * Bit 6: Self Powered
+ * Bit 5: Remote Wakeup
+ * Bit 4..0: Reserved, set to 0 + * + * @return the power parameters for this configuration + */ + public byte getBmAttributes() { + return bmAttributes; + } + + /** + * Returns the number of interfaces.
+ * + * @return the number of interfaces + */ + public byte getBNumInterfaces() { + return bNumInterfaces; + } + + /** + * Returns the data of extra descriptor(s) if available.
+ * + * @return null or a byte array with the extra descriptor data + */ + public byte[] getExtra() { + return extra; + } + + /** + * Returns the number of bytes of the extra descriptor.
+ * + * @return the number of bytes of the extra descriptor + */ + public int getExtralen() { + return extralen; + } + + /** + * Returns the index of the String descriptor describing this configuration.
+ * + * @return the index of the String descriptor + */ + public byte getIConfiguration() { + return iConfiguration; + } + + /** + * Returns the USB interface descriptors.
+ * + * @return the USB interface descriptors + */ + public Usb_Interface[] getInterface() { + return interface_; + } + + /** + * Returns the maximum power consumption in 2mA units.
+ * + * @return the maximum power consumption in 2mA units + */ + public byte getMaxPower() { + return MaxPower; + } + + /** + * Returns the total length in bytes of all descriptors.
+ * When the configuration descriptor is read, it returns the entire + * configuration hierarchy which includes all related interface and endpoint + * descriptors. The wTotalLength field reflects the number of + * bytes in the hierarchy. + * + * @return the total length in bytes of all descriptors + */ + public short getWTotalLength() { + return wTotalLength; + } + + @Override + public String toString() { + return "Usb_Config_Descriptor bNumInterfaces: 0x" + + Integer.toHexString(bNumInterfaces); + } } \ No newline at end of file diff --git a/java/src/ch/ntb/usb/Usb_Descriptor.java b/src/main/java/ch/ntb/usb.r273/Usb_Descriptor.java similarity index 95% rename from java/src/ch/ntb/usb/Usb_Descriptor.java rename to src/main/java/ch/ntb/usb.r273/Usb_Descriptor.java index d8f4c17..6aee245 100644 --- a/java/src/ch/ntb/usb/Usb_Descriptor.java +++ b/src/main/java/ch/ntb/usb.r273/Usb_Descriptor.java @@ -1,59 +1,59 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -/** - * Common USB descriptor values.
- * - */ -public class Usb_Descriptor { - - /** - * Descriptor types ({@link #bDescriptorType}). - */ - public static final int USB_DT_DEVICE = 0x01, USB_DT_CONFIG = 0x02, - USB_DT_STRING = 0x03, USB_DT_INTERFACE = 0x04, - USB_DT_ENDPOINT = 0x05; - - /** - * Descriptor types ({@link #bDescriptorType}). - */ - public static final int USB_DT_HID = 0x21, USB_DT_REPORT = 0x22, - USB_DT_PHYSICAL = 0x23, USB_DT_HUB = 0x29; - - /** - * Descriptor sizes per descriptor type ({@link #bLength}). - */ - public static final int USB_DT_DEVICE_SIZE = 18, USB_DT_CONFIG_SIZE = 9, - USB_DT_INTERFACE_SIZE = 9, USB_DT_ENDPOINT_SIZE = 7, - USB_DT_ENDPOINT_AUDIO_SIZE = 9 /* Audio extension */, - USB_DT_HUB_NONVAR_SIZE = 7; - - private byte bLength; - - private byte bDescriptorType; - - /** - * Get the type of this descriptor.
- * - * @return the type of this descriptor - */ - public byte getBDescriptorType() { - return bDescriptorType; - } - - /** - * Get the size of this descriptor in bytes.
- * - * @return the size of this descriptor in bytes - */ - public byte getBLength() { - return bLength; - } - -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +/** + * Common USB descriptor values.
+ * + */ +public class Usb_Descriptor { + + /** + * Descriptor types ({@link #bDescriptorType}). + */ + public static final int USB_DT_DEVICE = 0x01, USB_DT_CONFIG = 0x02, + USB_DT_STRING = 0x03, USB_DT_INTERFACE = 0x04, + USB_DT_ENDPOINT = 0x05; + + /** + * Descriptor types ({@link #bDescriptorType}). + */ + public static final int USB_DT_HID = 0x21, USB_DT_REPORT = 0x22, + USB_DT_PHYSICAL = 0x23, USB_DT_HUB = 0x29; + + /** + * Descriptor sizes per descriptor type ({@link #bLength}). + */ + public static final int USB_DT_DEVICE_SIZE = 18, USB_DT_CONFIG_SIZE = 9, + USB_DT_INTERFACE_SIZE = 9, USB_DT_ENDPOINT_SIZE = 7, + USB_DT_ENDPOINT_AUDIO_SIZE = 9 /* Audio extension */, + USB_DT_HUB_NONVAR_SIZE = 7; + + private byte bLength; + + private byte bDescriptorType; + + /** + * Get the type of this descriptor.
+ * + * @return the type of this descriptor + */ + public byte getBDescriptorType() { + return bDescriptorType; + } + + /** + * Get the size of this descriptor in bytes.
+ * + * @return the size of this descriptor in bytes + */ + public byte getBLength() { + return bLength; + } + +} diff --git a/java/src/ch/ntb/usb/Usb_Device.java b/src/main/java/ch/ntb/usb.r273/Usb_Device.java similarity index 95% rename from java/src/ch/ntb/usb/Usb_Device.java rename to src/main/java/ch/ntb/usb.r273/Usb_Device.java index 4fc7aeb..5cb314a 100644 --- a/java/src/ch/ntb/usb/Usb_Device.java +++ b/src/main/java/ch/ntb/usb.r273/Usb_Device.java @@ -1,125 +1,125 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -/** - * Represents an USB device.
- * An USB device has one device descriptor and it may have multiple - * configuration descriptors. - * - */ -public class Usb_Device { - - private Usb_Device next, prev; - - private String filename; - - private Usb_Bus bus; - - private Usb_Device_Descriptor descriptor; - - private Usb_Config_Descriptor[] config; - - private byte devnum; - - private byte num_children; - - private Usb_Device children; - - /** - * The address of the device structure to be passed to usb_open. This value - * is used only internally so we don't use getter or setter methods. - */ - public long devStructAddr; - - /** - * Returns the reference to the bus to which this device is connected.
- * - * @return the reference to the bus to which this device is connected - */ - public Usb_Bus getBus() { - return bus; - } - - /** - * Returns a reference to the first child.
- * - * @return a reference to the first child - */ - public Usb_Device getChildren() { - return children; - } - - /** - * Returns the USB config descriptors.
- * - * @return the USB config descriptors - */ - public Usb_Config_Descriptor[] getConfig() { - return config; - } - - /** - * Returns the USB device descriptor.
- * - * @return the USB device descriptor - */ - public Usb_Device_Descriptor getDescriptor() { - return descriptor; - } - - /** - * Returns the number assigned to this device.
- * - * @return the number assigned to this device - */ - public byte getDevnum() { - return devnum; - } - - /** - * Returns the systems String representation.
- * - * @return the systems String representation - */ - public String getFilename() { - return filename; - } - - /** - * Returns the pointer to the next device.
- * - * @return the pointer to the next device or null - */ - public Usb_Device getNext() { - return next; - } - - /** - * Returns the number of children of this device.
- * - * @return the number of children of this device - */ - public byte getNumChildren() { - return num_children; - } - - /** - * Returns the pointer to the previous device.
- * - * @return the pointer to the previous device or null - */ - public Usb_Device getPrev() { - return prev; - } - - @Override - public String toString() { - return "Usb_Device " + filename; - } +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +/** + * Represents an USB device.
+ * An USB device has one device descriptor and it may have multiple + * configuration descriptors. + * + */ +public class Usb_Device { + + private Usb_Device next, prev; + + private String filename; + + private Usb_Bus bus; + + private Usb_Device_Descriptor descriptor; + + private Usb_Config_Descriptor[] config; + + private byte devnum; + + private byte num_children; + + private Usb_Device children; + + /** + * The address of the device structure to be passed to usb_open. This value + * is used only internally so we don't use getter or setter methods. + */ + public long devStructAddr; + + /** + * Returns the reference to the bus to which this device is connected.
+ * + * @return the reference to the bus to which this device is connected + */ + public Usb_Bus getBus() { + return bus; + } + + /** + * Returns a reference to the first child.
+ * + * @return a reference to the first child + */ + public Usb_Device getChildren() { + return children; + } + + /** + * Returns the USB config descriptors.
+ * + * @return the USB config descriptors + */ + public Usb_Config_Descriptor[] getConfig() { + return config; + } + + /** + * Returns the USB device descriptor.
+ * + * @return the USB device descriptor + */ + public Usb_Device_Descriptor getDescriptor() { + return descriptor; + } + + /** + * Returns the number assigned to this device.
+ * + * @return the number assigned to this device + */ + public byte getDevnum() { + return devnum; + } + + /** + * Returns the systems String representation.
+ * + * @return the systems String representation + */ + public String getFilename() { + return filename; + } + + /** + * Returns the pointer to the next device.
+ * + * @return the pointer to the next device or null + */ + public Usb_Device getNext() { + return next; + } + + /** + * Returns the number of children of this device.
+ * + * @return the number of children of this device + */ + public byte getNumChildren() { + return num_children; + } + + /** + * Returns the pointer to the previous device.
+ * + * @return the pointer to the previous device or null + */ + public Usb_Device getPrev() { + return prev; + } + + @Override + public String toString() { + return "Usb_Device " + filename; + } } \ No newline at end of file diff --git a/java/src/ch/ntb/usb/Usb_Device_Descriptor.java b/src/main/java/ch/ntb/usb.r273/Usb_Device_Descriptor.java similarity index 96% rename from java/src/ch/ntb/usb/Usb_Device_Descriptor.java rename to src/main/java/ch/ntb/usb.r273/Usb_Device_Descriptor.java index 720909f..5cf30e9 100644 --- a/java/src/ch/ntb/usb/Usb_Device_Descriptor.java +++ b/src/main/java/ch/ntb/usb.r273/Usb_Device_Descriptor.java @@ -1,190 +1,190 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -/** - * Represents the descriptor of a USB device.
- * A USB device can only have one device descriptor. It specifies some basic, - * yet important information about the device.
- *
- * The length of the device descriptor is - * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_DEVICE_SIZE} and the type is - * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_DEVICE}. - * - */ -public class Usb_Device_Descriptor extends Usb_Descriptor { - /** - * Device and/or interface class codes. - */ - public static final int USB_CLASS_PER_INTERFACE = 0, USB_CLASS_AUDIO = 1, - USB_CLASS_COMM = 2, USB_CLASS_HID = 3, USB_CLASS_PRINTER = 7, - USB_CLASS_MASS_STORAGE = 8, USB_CLASS_HUB = 9, USB_CLASS_DATA = 10, - USB_CLASS_VENDOR_SPEC = 0xff; - - private short bcdUSB; - - private byte bDeviceClass; - - private byte bDeviceSubClass; - - private byte bDeviceProtocol; - - private byte bMaxPacketSize0; - - private short idVendor; - - private short idProduct; - - private short bcdDevice; - - private byte iManufacturer; - - private byte iProduct; - - private byte iSerialNumber; - - private byte bNumConfigurations; - - /** - * Returns the device release number.
- * Assigned by the manufacturer of the device. - * - * @return the device release number - */ - public short getBcdDevice() { - return bcdDevice; - } - - /** - * Returns the USB specification number to which the device complies to.
- * This field reports the highest version of USB the device supports. The - * value is in binary coded decimal with a format of 0xJJMN where JJ is the - * major version number, M is the minor version number and N is the sub - * minor version number.
- * Examples: USB 2.0 is reported as 0x0200, USB 1.1 as 0x0110 and USB 1.0 as - * 0x100 - * - * @return the USB specification number to which the device complies to - */ - public short getBcdUSB() { - return bcdUSB; - } - - /** - * Returns the class code (Assigned by www.usb.org)
- * If equal to zero, each interface specifies it's own class code. If equal - * to 0xFF, the class code is vendor specified. Otherwise the field is a - * valid class code. - * - * @return the class code - */ - public byte getBDeviceClass() { - return bDeviceClass; - } - - /** - * Returns the protocol code (Assigned by www.usb.org)
- * - * @return the protocol code - */ - public byte getBDeviceProtocol() { - return bDeviceProtocol; - } - - /** - * Returns the subclass code (Assigned by www.usb.org)
- * - * @return the subclass code - */ - public byte getBDeviceSubClass() { - return bDeviceSubClass; - } - - /** - * Returns the maximum packet size for endpoint zero.
- * Valid sizes are 8, 16, 32, 64. - * - * @return the maximum packet size for endpoint zero - */ - public byte getBMaxPacketSize0() { - return bMaxPacketSize0; - } - - /** - * Returns the number of possible configurations supported at its current - * speed.
- * - * @return the number of possible configurations supported at its current - * speed - */ - public byte getBNumConfigurations() { - return bNumConfigurations; - } - - /** - * Returns the product ID (Assigned by www.usb.org)
- * - * @return the product ID - */ - public short getIdProduct() { - return idProduct; - } - - /** - * Returns the Vendor ID (Assigned by www.usb.org)
- * - * @return the Vendor ID - */ - public short getIdVendor() { - return idVendor; - } - - /** - * Returns the index of the manufacturer string descriptor.
- * If this value is 0, no string descriptor is used. - * - * @return the index of the manufacturer string descriptor - */ - public byte getIManufacturer() { - return iManufacturer; - } - - /** - * Returns the index of the product string descriptor.
- * If this value is 0, no string descriptor is used. - * - * @return the index of the product string descriptor - */ - public byte getIProduct() { - return iProduct; - } - - /** - * Returns the index of serial number string descriptor.
- * If this value is 0, no string descriptor is used. - * - * @return the index of serial number string descriptor - */ - public byte getISerialNumber() { - return iSerialNumber; - } - - @Override - public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append("Usb_Device_Descriptor idVendor: 0x" - + Integer.toHexString(idVendor & 0xFFFF) + ", idProduct: 0x" - + Integer.toHexString(idProduct & 0xFFFF)); - return sb.toString(); - } +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +/** + * Represents the descriptor of a USB device.
+ * A USB device can only have one device descriptor. It specifies some basic, + * yet important information about the device.
+ *
+ * The length of the device descriptor is + * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_DEVICE_SIZE} and the type is + * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_DEVICE}. + * + */ +public class Usb_Device_Descriptor extends Usb_Descriptor { + /** + * Device and/or interface class codes. + */ + public static final int USB_CLASS_PER_INTERFACE = 0, USB_CLASS_AUDIO = 1, + USB_CLASS_COMM = 2, USB_CLASS_HID = 3, USB_CLASS_PRINTER = 7, + USB_CLASS_MASS_STORAGE = 8, USB_CLASS_HUB = 9, USB_CLASS_DATA = 10, + USB_CLASS_VENDOR_SPEC = 0xff; + + private short bcdUSB; + + private byte bDeviceClass; + + private byte bDeviceSubClass; + + private byte bDeviceProtocol; + + private byte bMaxPacketSize0; + + private short idVendor; + + private short idProduct; + + private short bcdDevice; + + private byte iManufacturer; + + private byte iProduct; + + private byte iSerialNumber; + + private byte bNumConfigurations; + + /** + * Returns the device release number.
+ * Assigned by the manufacturer of the device. + * + * @return the device release number + */ + public short getBcdDevice() { + return bcdDevice; + } + + /** + * Returns the USB specification number to which the device complies to.
+ * This field reports the highest version of USB the device supports. The + * value is in binary coded decimal with a format of 0xJJMN where JJ is the + * major version number, M is the minor version number and N is the sub + * minor version number.
+ * Examples: USB 2.0 is reported as 0x0200, USB 1.1 as 0x0110 and USB 1.0 as + * 0x100 + * + * @return the USB specification number to which the device complies to + */ + public short getBcdUSB() { + return bcdUSB; + } + + /** + * Returns the class code (Assigned by www.usb.org)
+ * If equal to zero, each interface specifies it's own class code. If equal + * to 0xFF, the class code is vendor specified. Otherwise the field is a + * valid class code. + * + * @return the class code + */ + public byte getBDeviceClass() { + return bDeviceClass; + } + + /** + * Returns the protocol code (Assigned by www.usb.org)
+ * + * @return the protocol code + */ + public byte getBDeviceProtocol() { + return bDeviceProtocol; + } + + /** + * Returns the subclass code (Assigned by www.usb.org)
+ * + * @return the subclass code + */ + public byte getBDeviceSubClass() { + return bDeviceSubClass; + } + + /** + * Returns the maximum packet size for endpoint zero.
+ * Valid sizes are 8, 16, 32, 64. + * + * @return the maximum packet size for endpoint zero + */ + public byte getBMaxPacketSize0() { + return bMaxPacketSize0; + } + + /** + * Returns the number of possible configurations supported at its current + * speed.
+ * + * @return the number of possible configurations supported at its current + * speed + */ + public byte getBNumConfigurations() { + return bNumConfigurations; + } + + /** + * Returns the product ID (Assigned by www.usb.org)
+ * + * @return the product ID + */ + public short getIdProduct() { + return idProduct; + } + + /** + * Returns the Vendor ID (Assigned by www.usb.org)
+ * + * @return the Vendor ID + */ + public short getIdVendor() { + return idVendor; + } + + /** + * Returns the index of the manufacturer string descriptor.
+ * If this value is 0, no string descriptor is used. + * + * @return the index of the manufacturer string descriptor + */ + public byte getIManufacturer() { + return iManufacturer; + } + + /** + * Returns the index of the product string descriptor.
+ * If this value is 0, no string descriptor is used. + * + * @return the index of the product string descriptor + */ + public byte getIProduct() { + return iProduct; + } + + /** + * Returns the index of serial number string descriptor.
+ * If this value is 0, no string descriptor is used. + * + * @return the index of serial number string descriptor + */ + public byte getISerialNumber() { + return iSerialNumber; + } + + @Override + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append("Usb_Device_Descriptor idVendor: 0x" + + Integer.toHexString(idVendor & 0xFFFF) + ", idProduct: 0x" + + Integer.toHexString(idProduct & 0xFFFF)); + return sb.toString(); + } } \ No newline at end of file diff --git a/java/src/ch/ntb/usb/Usb_Endpoint_Descriptor.java b/src/main/java/ch/ntb/usb.r273/Usb_Endpoint_Descriptor.java similarity index 96% rename from java/src/ch/ntb/usb/Usb_Endpoint_Descriptor.java rename to src/main/java/ch/ntb/usb.r273/Usb_Endpoint_Descriptor.java index 049cbd4..00e4bbc 100644 --- a/java/src/ch/ntb/usb/Usb_Endpoint_Descriptor.java +++ b/src/main/java/ch/ntb/usb.r273/Usb_Endpoint_Descriptor.java @@ -1,158 +1,158 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -/** - * Represents the descriptor of an USB endpoint.
- * Endpoint descriptors are used to describe endpoints other than endpoint zero. - * Endpoint zero is always assumed to be a control endpoint and is configured - * before any descriptors are even requested. The host will use the information - * returned from these descriptors to determine the bandwidth requirements of - * the bus.
- *
- * The length of the configuration descriptor is - * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_ENDPOINT_SIZE} and the type is - * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_ENDPOINT}. - * - */ -public class Usb_Endpoint_Descriptor extends Usb_Descriptor { - - /** - * Maximum number of endpoints - */ - public static final int USB_MAXENDPOINTS = 32; - - /** - * Endpoint address mask (in bEndpointAddress). - */ - public static final int USB_ENDPOINT_ADDRESS_MASK = 0x0f, - USB_ENDPOINT_DIR_MASK = 0x80; - - /** - * Endpoint type mask (in bmAttributes). - */ - public static final int USB_ENDPOINT_TYPE_MASK = 0x03; - - /** - * Possible endpoint types (in bmAttributes). - */ - public static final int USB_ENDPOINT_TYPE_CONTROL = 0, - USB_ENDPOINT_TYPE_ISOCHRONOUS = 1, USB_ENDPOINT_TYPE_BULK = 2, - USB_ENDPOINT_TYPE_INTERRUPT = 3; - - private byte bEndpointAddress; - - private byte bmAttributes; - - private short wMaxPacketSize; - - private byte bInterval; - - private byte bRefresh; - - private byte bSynchAddress; - - private byte[] extra; /* Extra descriptors */ - - private int extralen; - - /** - * Returns the endpoint address.
- *
- * Bits 3..0: Endpoint number
- * Bits 6..4: Reserved. Set to zero
- * Bit 7: Direction (host to device). 0 = OUT (send data from host to - * device), 1 = IN (host receives data from device). Note: these values are - * ignored for control endpoints.
- * - * @return the endpoint address - */ - public byte getBEndpointAddress() { - return bEndpointAddress; - } - - /** - * Returns the intervall for polling endpoint data transfers.
- * Value in frame counts. Ignored for Bulk & Control eEndpoints. Isochronous - * endpoints must equal 1 and field may range from 1 to 255 for interrupt - * endpoints. - * - * @return the intervall for polling endpoint data transfers - */ - public byte getBInterval() { - return bInterval; - } - - /** - * Returns the attributes of this endpoint.
- * - * Bits 1..0: Transfer Type (see USB_ENDPOINT_TYPE_XXX).
- * Bits 7..2: Reserved.
- * - *
-	 * 	If isochronous endpoint:
-	 * 		Bits 3..2: Synchronisation type
-	 *  		00 = No synchronisation
-	 * 			01 = Asynchronous
-	 *          10 = Adaptive
-	 *          11 = Synchronous
-	 *     	Bits 5..4: Usage Type
-	 *      	00 = Data endpoint
-	 *      	01 = Feedback endpoint
-	 *      	10 = Explicit feedback data endpoint
-	 *      	11 = Reserved
-	 * 
- * - * @return the attributes of this endpoint - */ - public byte getBmAttributes() { - return bmAttributes; - } - - public byte getBRefresh() { - return bRefresh; - } - - public byte getBSynchAddress() { - return bSynchAddress; - } - - /** - * Returns the data of extra descriptor(s) if available.
- * - * @return null or a byte array with the extra descriptor data - */ - public byte[] getExtra() { - return extra; - } - - /** - * Returns the number of bytes of the extra descriptor.
- * - * @return the number of bytes of the extra descriptor - */ - public int getExtralen() { - return extralen; - } - - /** - * Returns the maximum packet size of this endpoint is capable of sending or - * receiving.
- * - * @return the maximum packet size - */ - public short getWMaxPacketSize() { - return wMaxPacketSize; - } - - @Override - public String toString() { - return "Usb_Endpoint_Descriptor bEndpointAddress: 0x" - + Integer.toHexString(bEndpointAddress & 0xFF); - } -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +/** + * Represents the descriptor of an USB endpoint.
+ * Endpoint descriptors are used to describe endpoints other than endpoint zero. + * Endpoint zero is always assumed to be a control endpoint and is configured + * before any descriptors are even requested. The host will use the information + * returned from these descriptors to determine the bandwidth requirements of + * the bus.
+ *
+ * The length of the configuration descriptor is + * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_ENDPOINT_SIZE} and the type is + * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_ENDPOINT}. + * + */ +public class Usb_Endpoint_Descriptor extends Usb_Descriptor { + + /** + * Maximum number of endpoints + */ + public static final int USB_MAXENDPOINTS = 32; + + /** + * Endpoint address mask (in bEndpointAddress). + */ + public static final int USB_ENDPOINT_ADDRESS_MASK = 0x0f, + USB_ENDPOINT_DIR_MASK = 0x80; + + /** + * Endpoint type mask (in bmAttributes). + */ + public static final int USB_ENDPOINT_TYPE_MASK = 0x03; + + /** + * Possible endpoint types (in bmAttributes). + */ + public static final int USB_ENDPOINT_TYPE_CONTROL = 0, + USB_ENDPOINT_TYPE_ISOCHRONOUS = 1, USB_ENDPOINT_TYPE_BULK = 2, + USB_ENDPOINT_TYPE_INTERRUPT = 3; + + private byte bEndpointAddress; + + private byte bmAttributes; + + private short wMaxPacketSize; + + private byte bInterval; + + private byte bRefresh; + + private byte bSynchAddress; + + private byte[] extra; /* Extra descriptors */ + + private int extralen; + + /** + * Returns the endpoint address.
+ *
+ * Bits 3..0: Endpoint number
+ * Bits 6..4: Reserved. Set to zero
+ * Bit 7: Direction (host to device). 0 = OUT (send data from host to + * device), 1 = IN (host receives data from device). Note: these values are + * ignored for control endpoints.
+ * + * @return the endpoint address + */ + public byte getBEndpointAddress() { + return bEndpointAddress; + } + + /** + * Returns the intervall for polling endpoint data transfers.
+ * Value in frame counts. Ignored for Bulk & Control eEndpoints. Isochronous + * endpoints must equal 1 and field may range from 1 to 255 for interrupt + * endpoints. + * + * @return the intervall for polling endpoint data transfers + */ + public byte getBInterval() { + return bInterval; + } + + /** + * Returns the attributes of this endpoint.
+ * + * Bits 1..0: Transfer Type (see USB_ENDPOINT_TYPE_XXX).
+ * Bits 7..2: Reserved.
+ * + *
+	 * 	If isochronous endpoint:
+	 * 		Bits 3..2: Synchronisation type
+	 *  		00 = No synchronisation
+	 * 			01 = Asynchronous
+	 *          10 = Adaptive
+	 *          11 = Synchronous
+	 *     	Bits 5..4: Usage Type
+	 *      	00 = Data endpoint
+	 *      	01 = Feedback endpoint
+	 *      	10 = Explicit feedback data endpoint
+	 *      	11 = Reserved
+	 * 
+ * + * @return the attributes of this endpoint + */ + public byte getBmAttributes() { + return bmAttributes; + } + + public byte getBRefresh() { + return bRefresh; + } + + public byte getBSynchAddress() { + return bSynchAddress; + } + + /** + * Returns the data of extra descriptor(s) if available.
+ * + * @return null or a byte array with the extra descriptor data + */ + public byte[] getExtra() { + return extra; + } + + /** + * Returns the number of bytes of the extra descriptor.
+ * + * @return the number of bytes of the extra descriptor + */ + public int getExtralen() { + return extralen; + } + + /** + * Returns the maximum packet size of this endpoint is capable of sending or + * receiving.
+ * + * @return the maximum packet size + */ + public short getWMaxPacketSize() { + return wMaxPacketSize; + } + + @Override + public String toString() { + return "Usb_Endpoint_Descriptor bEndpointAddress: 0x" + + Integer.toHexString(bEndpointAddress & 0xFF); + } +} diff --git a/java/src/ch/ntb/usb/Usb_Interface.java b/src/main/java/ch/ntb/usb.r273/Usb_Interface.java similarity index 95% rename from java/src/ch/ntb/usb/Usb_Interface.java rename to src/main/java/ch/ntb/usb.r273/Usb_Interface.java index 4ea724a..a8bb6bc 100644 --- a/java/src/ch/ntb/usb/Usb_Interface.java +++ b/src/main/java/ch/ntb/usb.r273/Usb_Interface.java @@ -1,50 +1,50 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -/** - * Represents an USB interface.
- * An interface is a group of alternate settings of a configuration.
- * - */ -public class Usb_Interface { - - /** - * Maximal number of alternate settings - */ - public static final int USB_MAXALTSETTING = 128; /* Hard limit */ - - private Usb_Interface_Descriptor[] altsetting; - - private int num_altsetting; - - @Override - public String toString() { - return "Usb_Interface num_altsetting: 0x" - + Integer.toHexString(num_altsetting); - } - - /** - * Retuns an array of interface descriptors.
- * - * @return an array of interface descriptors - */ - public Usb_Interface_Descriptor[] getAltsetting() { - return altsetting; - } - - /** - * Returns the number of alternate settings.
- * - * @return the number of alternate settings - */ - public int getNumAltsetting() { - return num_altsetting; - } - -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +/** + * Represents an USB interface.
+ * An interface is a group of alternate settings of a configuration.
+ * + */ +public class Usb_Interface { + + /** + * Maximal number of alternate settings + */ + public static final int USB_MAXALTSETTING = 128; /* Hard limit */ + + private Usb_Interface_Descriptor[] altsetting; + + private int num_altsetting; + + @Override + public String toString() { + return "Usb_Interface num_altsetting: 0x" + + Integer.toHexString(num_altsetting); + } + + /** + * Retuns an array of interface descriptors.
+ * + * @return an array of interface descriptors + */ + public Usb_Interface_Descriptor[] getAltsetting() { + return altsetting; + } + + /** + * Returns the number of alternate settings.
+ * + * @return the number of alternate settings + */ + public int getNumAltsetting() { + return num_altsetting; + } + +} diff --git a/java/src/ch/ntb/usb/Usb_Interface_Descriptor.java b/src/main/java/ch/ntb/usb.r273/Usb_Interface_Descriptor.java similarity index 95% rename from java/src/ch/ntb/usb/Usb_Interface_Descriptor.java rename to src/main/java/ch/ntb/usb.r273/Usb_Interface_Descriptor.java index 683f143..a36d3ed 100644 --- a/java/src/ch/ntb/usb/Usb_Interface_Descriptor.java +++ b/src/main/java/ch/ntb/usb.r273/Usb_Interface_Descriptor.java @@ -1,145 +1,145 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -/** - * Represents the descriptor of a USB interface.
- * The interface descriptor could be seen as a header or grouping of the - * endpoints into a functional group performing a single feature of the device.
- *
- * The length of the interface descriptor is - * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_INTERFACE_SIZE} and the type is - * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_INTERFACE}. - * - */ -public class Usb_Interface_Descriptor extends Usb_Descriptor { - - /** - * Maximum number of interfaces - */ - public static final int USB_MAXINTERFACES = 32; - - private byte bInterfaceNumber; - - private byte bAlternateSetting; - - private byte bNumEndpoints; - - private byte bInterfaceClass; - - private byte bInterfaceSubClass; - - private byte bInterfaceProtocol; - - private byte iInterface; - - private Usb_Endpoint_Descriptor[] endpoint; - - private byte[] extra; /* Extra descriptors */ - - private int extralen; - - @Override - public String toString() { - return "Usb_Interface_Descriptor bNumEndpoints: 0x" - + Integer.toHexString(bNumEndpoints); - } - - /** - * Returns the value used to select the alternate setting ({@link LibusbJava#usb_set_altinterface(long, int)}).
- * - * @return the alternate setting - */ - public byte getBAlternateSetting() { - return bAlternateSetting; - } - - /** - * Returns the class code (Assigned by www.usb.org).
- * - * @return the class code - */ - public byte getBInterfaceClass() { - return bInterfaceClass; - } - - /** - * Returns the number (identifier) of this interface.
- * - * @return the number (identifier) of this interface - */ - public byte getBInterfaceNumber() { - return bInterfaceNumber; - } - - /** - * Returns the protocol code (Assigned by www.usb.org).
- * - * @return the protocol code - */ - public byte getBInterfaceProtocol() { - return bInterfaceProtocol; - } - - /** - * Returns the subclass code (Assigned by www.usb.org).
- * - * @return the subclass code - */ - public byte getBInterfaceSubClass() { - return bInterfaceSubClass; - } - - /** - * Returns the number of endpoints used for this interface.
- * - * @return the number of endpoints used for this interface - */ - public byte getBNumEndpoints() { - return bNumEndpoints; - } - - /** - * Returns an array of endpoint descriptors.
- * - * @return an array of endpoint descriptors - */ - public Usb_Endpoint_Descriptor[] getEndpoint() { - return endpoint; - } - - /** - * Returns the data of extra descriptor(s) if available.
- * - * @return null or a byte array with the extra descriptor data - */ - public byte[] getExtra() { - return extra; - } - - /** - * Returns the number of bytes of the extra descriptor.
- * - * @return the number of bytes of the extra descriptor - */ - public int getExtralen() { - return extralen; - } - - /** - * Returns the index of the String descriptor describing this interface.
- * - * @return the index of the String descriptor - */ - public byte getIInterface() { - return iInterface; - } -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +/** + * Represents the descriptor of a USB interface.
+ * The interface descriptor could be seen as a header or grouping of the + * endpoints into a functional group performing a single feature of the device.
+ *
+ * The length of the interface descriptor is + * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_INTERFACE_SIZE} and the type is + * {@link ch.ntb.usb.Usb_Descriptor#USB_DT_INTERFACE}. + * + */ +public class Usb_Interface_Descriptor extends Usb_Descriptor { + + /** + * Maximum number of interfaces + */ + public static final int USB_MAXINTERFACES = 32; + + private byte bInterfaceNumber; + + private byte bAlternateSetting; + + private byte bNumEndpoints; + + private byte bInterfaceClass; + + private byte bInterfaceSubClass; + + private byte bInterfaceProtocol; + + private byte iInterface; + + private Usb_Endpoint_Descriptor[] endpoint; + + private byte[] extra; /* Extra descriptors */ + + private int extralen; + + @Override + public String toString() { + return "Usb_Interface_Descriptor bNumEndpoints: 0x" + + Integer.toHexString(bNumEndpoints); + } + + /** + * Returns the value used to select the alternate setting ({@link LibusbJava#usb_set_altinterface(long, int)}).
+ * + * @return the alternate setting + */ + public byte getBAlternateSetting() { + return bAlternateSetting; + } + + /** + * Returns the class code (Assigned by www.usb.org).
+ * + * @return the class code + */ + public byte getBInterfaceClass() { + return bInterfaceClass; + } + + /** + * Returns the number (identifier) of this interface.
+ * + * @return the number (identifier) of this interface + */ + public byte getBInterfaceNumber() { + return bInterfaceNumber; + } + + /** + * Returns the protocol code (Assigned by www.usb.org).
+ * + * @return the protocol code + */ + public byte getBInterfaceProtocol() { + return bInterfaceProtocol; + } + + /** + * Returns the subclass code (Assigned by www.usb.org).
+ * + * @return the subclass code + */ + public byte getBInterfaceSubClass() { + return bInterfaceSubClass; + } + + /** + * Returns the number of endpoints used for this interface.
+ * + * @return the number of endpoints used for this interface + */ + public byte getBNumEndpoints() { + return bNumEndpoints; + } + + /** + * Returns an array of endpoint descriptors.
+ * + * @return an array of endpoint descriptors + */ + public Usb_Endpoint_Descriptor[] getEndpoint() { + return endpoint; + } + + /** + * Returns the data of extra descriptor(s) if available.
+ * + * @return null or a byte array with the extra descriptor data + */ + public byte[] getExtra() { + return extra; + } + + /** + * Returns the number of bytes of the extra descriptor.
+ * + * @return the number of bytes of the extra descriptor + */ + public int getExtralen() { + return extralen; + } + + /** + * Returns the index of the String descriptor describing this interface.
+ * + * @return the index of the String descriptor + */ + public byte getIInterface() { + return iInterface; + } +} diff --git a/java/src/ch/ntb/usb/Utils.java b/src/main/java/ch/ntb/usb.r273/Utils.java similarity index 96% rename from java/src/ch/ntb/usb/Utils.java rename to src/main/java/ch/ntb/usb.r273/Utils.java index e14591d..d13a5ba 100644 --- a/java/src/ch/ntb/usb/Utils.java +++ b/src/main/java/ch/ntb/usb.r273/Utils.java @@ -1,60 +1,60 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb; - -import java.io.PrintStream; - -public class Utils { - - public static void logBus(Usb_Bus bus) { - logBus(bus, System.out); - } - - public static void logBus(Usb_Bus bus, PrintStream out) { - Usb_Bus usb_Bus = bus; - while (usb_Bus != null) { - out.println(usb_Bus.toString()); - Usb_Device dev = usb_Bus.getDevices(); - while (dev != null) { - out.println("\t" + dev.toString()); - // Usb_Device_Descriptor - Usb_Device_Descriptor defDesc = dev.getDescriptor(); - out.println("\t\t" + defDesc.toString()); - // Usb_Config_Descriptor - Usb_Config_Descriptor[] confDesc = dev.getConfig(); - for (int i = 0; i < confDesc.length; i++) { - out.println("\t\t" + confDesc[i].toString()); - Usb_Interface[] int_ = confDesc[i].getInterface(); - if (int_ != null) { - for (int j = 0; j < int_.length; j++) { - out.println("\t\t\t" + int_[j].toString()); - Usb_Interface_Descriptor[] intDesc = int_[j] - .getAltsetting(); - if (intDesc != null) { - for (int k = 0; k < intDesc.length; k++) { - out.println("\t\t\t\t" - + intDesc[k].toString()); - Usb_Endpoint_Descriptor[] epDesc = intDesc[k] - .getEndpoint(); - if (epDesc != null) { - for (int e = 0; e < epDesc.length; e++) { - out.println("\t\t\t\t\t" - + epDesc[e].toString()); - } - } - } - } - } - } - } - dev = dev.getNext(); - } - usb_Bus = usb_Bus.getNext(); - } - } -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb; + +import java.io.PrintStream; + +public class Utils { + + public static void logBus(Usb_Bus bus) { + logBus(bus, System.out); + } + + public static void logBus(Usb_Bus bus, PrintStream out) { + Usb_Bus usb_Bus = bus; + while (usb_Bus != null) { + out.println(usb_Bus.toString()); + Usb_Device dev = usb_Bus.getDevices(); + while (dev != null) { + out.println("\t" + dev.toString()); + // Usb_Device_Descriptor + Usb_Device_Descriptor defDesc = dev.getDescriptor(); + out.println("\t\t" + defDesc.toString()); + // Usb_Config_Descriptor + Usb_Config_Descriptor[] confDesc = dev.getConfig(); + for (int i = 0; i < confDesc.length; i++) { + out.println("\t\t" + confDesc[i].toString()); + Usb_Interface[] int_ = confDesc[i].getInterface(); + if (int_ != null) { + for (int j = 0; j < int_.length; j++) { + out.println("\t\t\t" + int_[j].toString()); + Usb_Interface_Descriptor[] intDesc = int_[j] + .getAltsetting(); + if (intDesc != null) { + for (int k = 0; k < intDesc.length; k++) { + out.println("\t\t\t\t" + + intDesc[k].toString()); + Usb_Endpoint_Descriptor[] epDesc = intDesc[k] + .getEndpoint(); + if (epDesc != null) { + for (int e = 0; e < epDesc.length; e++) { + out.println("\t\t\t\t\t" + + epDesc[e].toString()); + } + } + } + } + } + } + } + dev = dev.getNext(); + } + usb_Bus = usb_Bus.getNext(); + } + } +} diff --git a/java/src/ch/ntb/usb/logger/LogUtil.java b/src/main/java/ch/ntb/usb.r273/logger/LogUtil.java similarity index 96% rename from java/src/ch/ntb/usb/logger/LogUtil.java rename to src/main/java/ch/ntb/usb.r273/logger/LogUtil.java index f227a14..998b602 100644 --- a/java/src/ch/ntb/usb/logger/LogUtil.java +++ b/src/main/java/ch/ntb/usb.r273/logger/LogUtil.java @@ -1,135 +1,135 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.logger; - -import java.io.InputStream; -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 { - - // debug this class - private static final boolean debugLogUtil = false; - - private static final String PLUGIN_ID = "ch.ntb.usb"; - private static final String PROPERTIES_FILE = ".configure"; - private static final String LOGGER_WARNING = "Warning in class " - + LogUtil.class.getName() - + ": could not load the logger properties file " + PROPERTIES_FILE; - - private static boolean debugEnabled; - - static { - createLoggersFromProperties(); - } - - private static void debugMsg(String method, String message) { - if (debugLogUtil) { - System.out.println(method + ": " + message); - } - } - - public static void setLevel(Logger logger, Level loglevel) { - Handler[] h = logger.getHandlers(); - for (int i = 0; i < h.length; i++) { - System.out.println("setLevel " + loglevel.toString()); - h[i].setLevel(loglevel); - } - logger.setLevel(loglevel); - } - - public static Logger getLogger(String name) { - debugMsg("getLogger", name); - LogManager manager = LogManager.getLogManager(); - // check if logger is already registered - Logger logger = manager.getLogger(name); - if (logger == null) { - logger = Logger.getLogger(name); - setLevel(logger, Level.OFF); - manager.addLogger(logger); - debugMsg("getLogger", "creating new logger"); - } - if (logger.getLevel() == null) { - debugMsg("getLogger", "level == null -> setLevel to OFF "); - setLevel(logger, Level.OFF); - } - debugMsg("getLogger", "logLevel " + logger.getLevel().getName()); - 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]); - } - Handler console = new ConsoleHandler(); - console.setLevel(loglevel); - logger.addHandler(console); - logger.setLevel(loglevel); - logger.setUseParentHandlers(false); - } - - private static void createLoggersFromProperties() { - try { - debugMsg(LogUtil.class.getName(), "createLoggersFromProperties"); - InputStream is = LogUtil.class.getClassLoader() - .getResourceAsStream(PROPERTIES_FILE); - if (is == null) { - System.err.println(LOGGER_WARNING); - } else { - Properties prop = new Properties(); - prop.load(is); - debugMsg("createLoggersFromProperties", - "properties file loaded: " + PROPERTIES_FILE); - debugMsg("createLoggersFromProperties", "file content:\n" - + prop.toString()); - // get global debug enable flag - debugEnabled = Boolean.parseBoolean(prop.getProperty(PLUGIN_ID - + "/debug")); - debugMsg("createLoggersFromProperties", "debuging enabled: " - + debugEnabled); - // 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); - debugMsg("createLoggersFromProperties", - "create logger " + loggerName + " with level " - + level.toString()); - } else { - moreLoggers = false; - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb.logger; + +import java.io.InputStream; +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 { + + // debug this class + private static final boolean debugLogUtil = false; + + private static final String PLUGIN_ID = "ch.ntb.usb"; + private static final String PROPERTIES_FILE = ".configure"; + private static final String LOGGER_WARNING = "Warning in class " + + LogUtil.class.getName() + + ": could not load the logger properties file " + PROPERTIES_FILE; + + private static boolean debugEnabled; + + static { + createLoggersFromProperties(); + } + + private static void debugMsg(String method, String message) { + if (debugLogUtil) { + System.out.println(method + ": " + message); + } + } + + public static void setLevel(Logger logger, Level loglevel) { + Handler[] h = logger.getHandlers(); + for (int i = 0; i < h.length; i++) { + System.out.println("setLevel " + loglevel.toString()); + h[i].setLevel(loglevel); + } + logger.setLevel(loglevel); + } + + public static Logger getLogger(String name) { + debugMsg("getLogger", name); + LogManager manager = LogManager.getLogManager(); + // check if logger is already registered + Logger logger = manager.getLogger(name); + if (logger == null) { + logger = Logger.getLogger(name); + setLevel(logger, Level.OFF); + manager.addLogger(logger); + debugMsg("getLogger", "creating new logger"); + } + if (logger.getLevel() == null) { + debugMsg("getLogger", "level == null -> setLevel to OFF "); + setLevel(logger, Level.OFF); + } + debugMsg("getLogger", "logLevel " + logger.getLevel().getName()); + 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]); + } + Handler console = new ConsoleHandler(); + console.setLevel(loglevel); + logger.addHandler(console); + logger.setLevel(loglevel); + logger.setUseParentHandlers(false); + } + + private static void createLoggersFromProperties() { + try { + debugMsg(LogUtil.class.getName(), "createLoggersFromProperties"); + InputStream is = LogUtil.class.getClassLoader() + .getResourceAsStream(PROPERTIES_FILE); + if (is == null) { + System.err.println(LOGGER_WARNING); + } else { + Properties prop = new Properties(); + prop.load(is); + debugMsg("createLoggersFromProperties", + "properties file loaded: " + PROPERTIES_FILE); + debugMsg("createLoggersFromProperties", "file content:\n" + + prop.toString()); + // get global debug enable flag + debugEnabled = Boolean.parseBoolean(prop.getProperty(PLUGIN_ID + + "/debug")); + debugMsg("createLoggersFromProperties", "debuging enabled: " + + debugEnabled); + // 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); + debugMsg("createLoggersFromProperties", + "create logger " + loggerName + " with level " + + level.toString()); + } else { + moreLoggers = false; + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/java/src/ch/ntb/usb/logger/package.html b/src/main/java/ch/ntb/usb.r273/logger/package.html similarity index 94% rename from java/src/ch/ntb/usb/logger/package.html rename to src/main/java/ch/ntb/usb.r273/logger/package.html index 0fbe441..fe57a92 100644 --- a/java/src/ch/ntb/usb/logger/package.html +++ b/src/main/java/ch/ntb/usb.r273/logger/package.html @@ -1,16 +1,16 @@ - - - - - -Logging related classes. - -

Related Resources

- -For more information about this project visit -http://libusbjava.sourceforge.net -. - - - + + + + + +Logging related classes. + +

Related Resources

+ +For more information about this project visit +http://libusbjava.sourceforge.net +. + + + diff --git a/java/src/ch/ntb/usb/package.html b/src/main/java/ch/ntb/usb.r273/package.html similarity index 95% rename from java/src/ch/ntb/usb/package.html rename to src/main/java/ch/ntb/usb.r273/package.html index e698310..147866d 100644 --- a/java/src/ch/ntb/usb/package.html +++ b/src/main/java/ch/ntb/usb.r273/package.html @@ -1,26 +1,26 @@ - - - - - -Includes the main classes for the Java libusb wrapper. -
-LibusbJava.java -is the JNI class to the -LibusbJava.dll -. Every class starting with -Usb_ -represents a descriptor of the bus structure which is retrieved by -calling -LibusbJava.usb_get_busses() -. - -

Related Resources

- -For more information about this project visit -http://libusbjava.sourceforge.net -. - - - + + + + + +Includes the main classes for the Java libusb wrapper. +
+LibusbJava.java +is the JNI class to the +LibusbJava.dll +. Every class starting with +Usb_ +represents a descriptor of the bus structure which is retrieved by +calling +LibusbJava.usb_get_busses() +. + +

Related Resources

+ +For more information about this project visit +http://libusbjava.sourceforge.net +. + + + diff --git a/java/src/ch/ntb/usb/usbView/UsbTreeModel.java b/src/main/java/ch/ntb/usb.r273/usbView/UsbTreeModel.java similarity index 97% rename from java/src/ch/ntb/usb/usbView/UsbTreeModel.java rename to src/main/java/ch/ntb/usb.r273/usbView/UsbTreeModel.java index 26ddb43..8e4b1ca 100644 --- a/java/src/ch/ntb/usb/usbView/UsbTreeModel.java +++ b/src/main/java/ch/ntb/usb.r273/usbView/UsbTreeModel.java @@ -1,495 +1,495 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.usbView; - -import java.util.Vector; - -import javax.swing.JTextArea; -import javax.swing.JTree; -import javax.swing.event.TreeModelEvent; -import javax.swing.event.TreeModelListener; -import javax.swing.event.TreeSelectionEvent; -import javax.swing.event.TreeSelectionListener; -import javax.swing.tree.TreeModel; -import javax.swing.tree.TreePath; - -import ch.ntb.usb.LibusbJava; -import ch.ntb.usb.Usb_Bus; -import ch.ntb.usb.Usb_Config_Descriptor; -import ch.ntb.usb.Usb_Device; -import ch.ntb.usb.Usb_Device_Descriptor; -import ch.ntb.usb.Usb_Endpoint_Descriptor; -import ch.ntb.usb.Usb_Interface; -import ch.ntb.usb.Usb_Interface_Descriptor; - -public class UsbTreeModel implements TreeModel, TreeSelectionListener { - - private Usb_Bus rootBus; - - private static final String USB_ROOT = "USB"; - - private JTextArea textArea; - - private Vector treeModelListeners = new Vector(); - - /** - * Default constructor.
- * - * @param rootBus - * the root bus from which the data is read - * @param textArea - * the text area to which the data is written - */ - public UsbTreeModel(Usb_Bus rootBus, JTextArea textArea) { - this.rootBus = rootBus; - this.textArea = textArea; - } - - /** - * Returns the root of the tree. - */ - public Object getRoot() { - return USB_ROOT; - } - - /** - * Returns the child of parent at index index in the parent's child array. - */ - public Object getChild(Object parent, int index) { - - if (parent instanceof String && ((String) parent).compareTo(USB_ROOT) == 0) - { - Usb_Bus curBus = rootBus; - - for (int i = 0; curBus != null; curBus = curBus.getNext(), i++) - { - if (i == index) - return curBus; - } - } - - else if (parent instanceof Usb_Bus) { - Usb_Device device = ((Usb_Bus) parent).getDevices(); - int count = 0; - while (device != null) { - if (count == index) - return device; - count++; - device = device.getNext(); - } - return null; - } else if (parent instanceof Usb_Device) { - Usb_Device dev = (Usb_Device) parent; - // return the Usb_Device_Descriptor at index 0 - if (index == 0) { - return dev.getDescriptor(); - } - Usb_Config_Descriptor[] confDescs = dev.getConfig(); - if (index >= confDescs.length + 1) - return null; - return confDescs[index - 1]; - } else if (parent instanceof Usb_Config_Descriptor) { - Usb_Interface[] intDescs = ((Usb_Config_Descriptor) parent) - .getInterface(); - if (index >= intDescs.length) - return null; - return intDescs[index]; - } else if (parent instanceof Usb_Interface) { - Usb_Interface_Descriptor[] altSettings = ((Usb_Interface) parent) - .getAltsetting(); - if (index >= altSettings.length) - return null; - return altSettings[index]; - } else if (parent instanceof Usb_Interface_Descriptor) { - Usb_Endpoint_Descriptor[] endpoints = ((Usb_Interface_Descriptor) parent) - .getEndpoint(); - if (index >= endpoints.length) - return null; - return endpoints[index]; - } - return null; - } - - /** - * Returns the number of children of parent. - */ - public int getChildCount(Object parent) - { - if (parent instanceof String && ((String) parent).compareTo(USB_ROOT) == 0) - { - int count = 0; - - Usb_Bus curBus = rootBus; - - for (; curBus != null; curBus = curBus.getNext()) - { - count++; - } - - return count; - - } - else if (parent instanceof Usb_Bus) { - Usb_Device device = ((Usb_Bus) parent).getDevices(); - int count = 0; - while (device != null) { - count++; - device = device.getNext(); - } - return count; - } else if (parent instanceof Usb_Device) { - // add the Usb_Device_Descriptor - return ((Usb_Device) parent).getConfig().length + 1; - } else if (parent instanceof Usb_Config_Descriptor) { - return ((Usb_Config_Descriptor) parent).getInterface().length; - } else if (parent instanceof Usb_Interface) { - return ((Usb_Interface) parent).getAltsetting().length; - } else if (parent instanceof Usb_Interface_Descriptor) { - return ((Usb_Interface_Descriptor) parent).getEndpoint().length; - } - return 0; - } - - /** - * Returns true if node is a leaf. - */ - public boolean isLeaf(Object node) { - return false; - } - - /** - * Messaged when the user has altered the value for the item identified by - * path to newValue. Not used by this model. - */ - public void valueForPathChanged(TreePath path, Object newValue) { - System.out.println("*** valueForPathChanged : " + path + " --> " - + newValue); - } - - /** - * Returns the index of child in parent. - */ - public int getIndexOfChild(Object parent, Object child) { - return 0; - } - - public void addTreeModelListener(TreeModelListener l) { - treeModelListeners.addElement(l); - } - - public void removeTreeModelListener(TreeModelListener l) { - treeModelListeners.removeElement(l); - } - - /** - * The only event raised by this model is TreeStructureChanged with the root - * as path, i.e. the whole tree has changed. - */ - protected void fireTreeStructureChanged(Usb_Bus newRootBus) { - rootBus = newRootBus; - int len = treeModelListeners.size(); - TreeModelEvent e = new TreeModelEvent(this, new Object[] { newRootBus }); - for (int i = 0; i < len; i++) { - treeModelListeners.elementAt(i).treeStructureChanged(e); - } - } - - public void valueChanged(TreeSelectionEvent e) { - JTree tree = (JTree) e.getSource(); - Object component = tree.getLastSelectedPathComponent(); - if (component instanceof Usb_Bus) { - Usb_Bus bus = (Usb_Bus) component; - StringBuffer sb = new StringBuffer("Usb_Bus\n"); - sb.append("\tdirname: " + bus.getDirname() + "\n"); - sb.append("\tlocation: 0x" + Long.toHexString(bus.getLocation()) - + "\n"); - textArea.setText(sb.toString()); - } else if (component instanceof Usb_Device) { - Usb_Device device = (Usb_Device) component; - StringBuffer sb = new StringBuffer("Usb_Device\n"); - sb.append("\tfilename: " + device.getFilename() + "\n"); - sb.append("\tdevnum: " + device.getDevnum() + "\n"); - sb.append("\tnum_children: " + device.getNumChildren() + "\n"); - textArea.setText(sb.toString()); - } else if (component instanceof Usb_Device_Descriptor) { - Usb_Device_Descriptor devDesc = (Usb_Device_Descriptor) component; - StringBuffer sb = new StringBuffer("Usb_Device_Descriptor\n"); - sb.append("\tblenght: 0x" - + Integer.toHexString(devDesc.getBLength() & 0xFF) + "\n"); - sb.append("\tbDescriptorType: 0x" - + Integer.toHexString(devDesc.getBDescriptorType() & 0xFF) - + "\n"); - sb.append("\tbcdUSB: 0x" - + Integer.toHexString(devDesc.getBcdUSB() & 0xFFFF) + "\n"); - sb.append("\tbDeviceClass: 0x" - + Integer.toHexString(devDesc.getBDeviceClass() & 0xFF) - + "\n"); - sb.append("\tbDeviceSubClass: 0x" - + Integer.toHexString(devDesc.getBDeviceSubClass() & 0xFF) - + "\n"); - sb.append("\tbDeviceProtocol: 0x" - + Integer.toHexString(devDesc.getBDeviceProtocol() & 0xFF) - + "\n"); - sb.append("\tbMaxPacketSize0: 0x" - + Integer.toHexString(devDesc.getBMaxPacketSize0() & 0xFF) - + " (" + devDesc.getBMaxPacketSize0() + ")\n"); - sb.append("\tidVendor: 0x" - + Integer.toHexString(devDesc.getIdVendor() & 0xFFFF) - + "\n"); - sb.append("\tidProduct: 0x" - + Integer.toHexString(devDesc.getIdProduct() & 0xFFFF) - + "\n"); - sb - .append("\tbcdDevice: 0x" - + Integer - .toHexString(devDesc.getBcdDevice() & 0xFF) - + "\n"); - sb.append("\tiManufacturer: 0x" - + Integer.toHexString(devDesc.getIManufacturer() & 0xFF) - + "\n"); - sb.append("\tiProduct: 0x" - + Integer.toHexString(devDesc.getIProduct()) + "\n"); - sb.append("\tiSerialNumber: 0x" - + Integer.toHexString(devDesc.getISerialNumber() & 0xFF) - + "\n"); - sb - .append("\tbNumConfigurations: 0x" - + Integer.toHexString(devDesc - .getBNumConfigurations() & 0xFF) + "\n"); - // get device handle to retrieve string descriptors - Usb_Bus bus = rootBus; - while (bus != null) { - Usb_Device dev = bus.getDevices(); - while (dev != null) { - Usb_Device_Descriptor tmpDevDesc = dev.getDescriptor(); - if ((dev.getDescriptor() != null) - && ((dev.getDescriptor().getIManufacturer() > 0) - || (dev.getDescriptor().getIProduct() > 0) || (dev - .getDescriptor().getISerialNumber() > 0))) { - if (tmpDevDesc.equals(devDesc)) { - long handle = LibusbJava.usb_open(dev); - sb.append("\nString descriptors\n"); - if (handle <= 0) { - sb.append("\terror opening the device\n"); - break; - } - if (dev.getDescriptor().getIManufacturer() > 0) { - String manufacturer = LibusbJava - .usb_get_string_simple(handle, devDesc - .getIManufacturer()); - if (manufacturer == null) - manufacturer = "unable to fetch manufacturer string"; - sb.append("\tiManufacturer: " + manufacturer - + "\n"); - } - if (dev.getDescriptor().getIProduct() > 0) { - String product = LibusbJava - .usb_get_string_simple(handle, devDesc - .getIProduct()); - if (product == null) - product = "unable to fetch product string"; - sb.append("\tiProduct: " + product + "\n"); - } - if (dev.getDescriptor().getISerialNumber() > 0) { - String serialNumber = LibusbJava - .usb_get_string_simple(handle, devDesc - .getISerialNumber()); - if (serialNumber == null) - serialNumber = "unable to fetch serial number string"; - sb.append("\tiSerialNumber: " + serialNumber - + "\n"); - } - LibusbJava.usb_close(handle); - } - } - dev = dev.getNext(); - } - bus = bus.getNext(); - } - textArea.setText(sb.toString()); - } else if (component instanceof Usb_Config_Descriptor) { - Usb_Config_Descriptor confDesc = (Usb_Config_Descriptor) component; - StringBuffer sb = new StringBuffer("Usb_Config_Descriptor\n"); - sb.append("\tblenght: 0x" - + Integer.toHexString(confDesc.getBLength()) + "\n"); - sb.append("\tbDescriptorType: 0x" - + Integer.toHexString(confDesc.getBDescriptorType() & 0xFF) - + "\n"); - sb.append("\tbNumInterfaces: 0x" - + Integer.toHexString(confDesc.getBNumInterfaces() & 0xFF) - + "\n"); - sb - .append("\tbConfigurationValue: 0x" - + Integer.toHexString(confDesc - .getBConfigurationValue() & 0xFF) + "\n"); - sb.append("\tiConfiguration: 0x" - + Integer.toHexString(confDesc.getIConfiguration() & 0xFF) - + "\n"); - sb.append("\tbmAttributes: 0x" - + Integer.toHexString(confDesc.getBmAttributes() & 0xFF) - + "\n"); - sb.append("\tMaxPower [mA]: 0x" - + Integer.toHexString(confDesc.getMaxPower() & 0xFF) + " (" - + confDesc.getMaxPower() + ")\n"); - sb.append("\textralen: 0x" - + Integer.toHexString(confDesc.getExtralen()) + "\n"); - sb.append("\textra: " + extraDescriptorToString(confDesc.getExtra()) + "\n"); - // get device handle to retrieve string descriptors - Usb_Bus bus = rootBus; - while (bus != null) { - Usb_Device dev = bus.getDevices(); - while (dev != null) { - Usb_Config_Descriptor[] tmpConfDesc = dev.getConfig(); - for (int i = 0; i < tmpConfDesc.length; i++) { - if ((tmpConfDesc.equals(confDesc)) - && (confDesc.getIConfiguration() > 0)) { - long handle = LibusbJava.usb_open(dev); - sb.append("\nString descriptors\n"); - if (handle <= 0) { - sb.append("\terror opening the device\n"); - break; - } - String configuration = LibusbJava - .usb_get_string_simple(handle, confDesc - .getIConfiguration()); - if (configuration == null) - configuration = "unable to fetch configuration string"; - sb.append("\tiConfiguration: " + configuration - + "\n"); - - LibusbJava.usb_close(handle); - - } - } - dev = dev.getNext(); - } - bus = bus.getNext(); - } - textArea.setText(sb.toString()); - } else if (component instanceof Usb_Interface) { - Usb_Interface int_ = (Usb_Interface) component; - StringBuffer sb = new StringBuffer("Usb_Interface\n"); - sb.append("\tnum_altsetting: 0x" - + Integer.toHexString(int_.getNumAltsetting()) + "\n"); - sb.append("\taltsetting: " + int_.getAltsetting() + "\n"); - textArea.setText(sb.toString()); - } else if (component instanceof Usb_Interface_Descriptor) { - Usb_Interface_Descriptor intDesc = (Usb_Interface_Descriptor) component; - StringBuffer sb = new StringBuffer("Usb_Interface_Descriptor\n"); - sb.append("\tblenght: 0x" - + Integer.toHexString(intDesc.getBLength() & 0xFF) + "\n"); - sb.append("\tbDescriptorType: 0x" - + Integer.toHexString(intDesc.getBDescriptorType() & 0xFF) - + "\n"); - sb.append("\tbInterfaceNumber: 0x" - + Integer.toHexString(intDesc.getBInterfaceNumber() & 0xFF) - + "\n"); - sb.append("\tbAlternateSetting: 0x" - + Integer - .toHexString(intDesc.getBAlternateSetting() & 0xFF) - + "\n"); - sb.append("\tbNumEndpoints: 0x" - + Integer.toHexString(intDesc.getBNumEndpoints() & 0xFF) - + "\n"); - sb.append("\tbInterfaceClass: 0x" - + Integer.toHexString(intDesc.getBInterfaceClass() & 0xFF) - + "\n"); - sb - .append("\tbInterfaceSubClass: 0x" - + Integer.toHexString(intDesc - .getBInterfaceSubClass() & 0xFF) + "\n"); - sb - .append("\tbInterfaceProtocol: 0x" - + Integer.toHexString(intDesc - .getBInterfaceProtocol() & 0xFF) + "\n"); - sb.append("\tiInterface: 0x" - + Integer.toHexString(intDesc.getIInterface()) + "\n"); - sb.append("\textralen: 0x" - + Integer.toHexString(intDesc.getExtralen()) + "\n"); - sb.append("\textra: " + extraDescriptorToString(intDesc.getExtra()) + "\n"); - // get device handle to retrieve string descriptors - Usb_Bus bus = rootBus; - while (bus != null) { - Usb_Device dev = bus.getDevices(); - while (dev != null) { - Usb_Config_Descriptor[] confDescs = dev.getConfig(); - for (int i = 0; i < confDescs.length; i++) { - Usb_Interface[] ints = confDescs[i].getInterface(); - for (int j = 0; j < ints.length; j++) { - Usb_Interface_Descriptor[] tmpIntDescs = ints[j] - .getAltsetting(); - for (int k = 0; k < ints.length; k++) { - if (i < tmpIntDescs.length && tmpIntDescs[i].equals(intDesc) - && (intDesc.getIInterface() > 0)) { - long handle = LibusbJava.usb_open(dev); - sb.append("\nString descriptors\n"); - if (handle <= 0) { - sb - .append("\terror opening the device\n"); - break; - } - String interface_ = LibusbJava - .usb_get_string_simple(handle, - intDesc.getIInterface()); - if (interface_ == null) - interface_ = "unable to fetch interface string"; - sb.append("\tiInterface: " + interface_ - + "\n"); - LibusbJava.usb_close(handle); - } - } - } - } - dev = dev.getNext(); - } - bus = bus.getNext(); - } - textArea.setText(sb.toString()); - } else if (component instanceof Usb_Endpoint_Descriptor) { - Usb_Endpoint_Descriptor epDesc = (Usb_Endpoint_Descriptor) component; - StringBuffer sb = new StringBuffer("Usb_Endpoint_Descriptor\n"); - sb.append("\tblenght: 0x" - + Integer.toHexString(epDesc.getBLength() & 0xFF) + "\n"); - sb.append("\tbDescriptorType: 0x" - + Integer.toHexString(epDesc.getBDescriptorType() & 0xFF) - + "\n"); - sb.append("\tbEndpointAddress: 0x" - + Integer.toHexString(epDesc.getBEndpointAddress() & 0xFF) - + "\n"); - sb.append("\tbmAttributes: 0x" - + Integer.toHexString(epDesc.getBmAttributes() & 0xFF) - + "\n"); - sb.append("\twMaxPacketSize: 0x" - + Integer.toHexString(epDesc.getWMaxPacketSize() & 0xFFFF) - + " (" + epDesc.getWMaxPacketSize() + ")\n"); - sb.append("\tbInterval: 0x" - + Integer.toHexString(epDesc.getBInterval() & 0xFF) + "\n"); - sb.append("\tbRefresh: 0x" - + Integer.toHexString(epDesc.getBRefresh() & 0xFF) + "\n"); - sb.append("\tbSynchAddress: 0x" - + Integer.toHexString(epDesc.getBSynchAddress()) + "\n"); - sb.append("\textralen: 0x" - + Integer.toHexString(epDesc.getExtralen()) + "\n"); - sb.append("\textra: " + extraDescriptorToString(epDesc.getExtra()) + "\n"); - textArea.setText(sb.toString()); - } - } - - private String extraDescriptorToString(byte[] extra) { - if (extra != null) { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < extra.length; i++) { - sb.append("0x"); - sb.append(Integer.toHexString(extra[i] & 0xff)); - sb.append(' '); - } - return sb.toString(); - } - return null; - } -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb.usbView; + +import java.util.Vector; + +import javax.swing.JTextArea; +import javax.swing.JTree; +import javax.swing.event.TreeModelEvent; +import javax.swing.event.TreeModelListener; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; +import javax.swing.tree.TreeModel; +import javax.swing.tree.TreePath; + +import ch.ntb.usb.LibusbJava; +import ch.ntb.usb.Usb_Bus; +import ch.ntb.usb.Usb_Config_Descriptor; +import ch.ntb.usb.Usb_Device; +import ch.ntb.usb.Usb_Device_Descriptor; +import ch.ntb.usb.Usb_Endpoint_Descriptor; +import ch.ntb.usb.Usb_Interface; +import ch.ntb.usb.Usb_Interface_Descriptor; + +public class UsbTreeModel implements TreeModel, TreeSelectionListener { + + private Usb_Bus rootBus; + + private static final String USB_ROOT = "USB"; + + private JTextArea textArea; + + private Vector treeModelListeners = new Vector(); + + /** + * Default constructor.
+ * + * @param rootBus + * the root bus from which the data is read + * @param textArea + * the text area to which the data is written + */ + public UsbTreeModel(Usb_Bus rootBus, JTextArea textArea) { + this.rootBus = rootBus; + this.textArea = textArea; + } + + /** + * Returns the root of the tree. + */ + public Object getRoot() { + return USB_ROOT; + } + + /** + * Returns the child of parent at index index in the parent's child array. + */ + public Object getChild(Object parent, int index) { + + if (parent instanceof String && ((String) parent).compareTo(USB_ROOT) == 0) + { + Usb_Bus curBus = rootBus; + + for (int i = 0; curBus != null; curBus = curBus.getNext(), i++) + { + if (i == index) + return curBus; + } + } + + else if (parent instanceof Usb_Bus) { + Usb_Device device = ((Usb_Bus) parent).getDevices(); + int count = 0; + while (device != null) { + if (count == index) + return device; + count++; + device = device.getNext(); + } + return null; + } else if (parent instanceof Usb_Device) { + Usb_Device dev = (Usb_Device) parent; + // return the Usb_Device_Descriptor at index 0 + if (index == 0) { + return dev.getDescriptor(); + } + Usb_Config_Descriptor[] confDescs = dev.getConfig(); + if (index >= confDescs.length + 1) + return null; + return confDescs[index - 1]; + } else if (parent instanceof Usb_Config_Descriptor) { + Usb_Interface[] intDescs = ((Usb_Config_Descriptor) parent) + .getInterface(); + if (index >= intDescs.length) + return null; + return intDescs[index]; + } else if (parent instanceof Usb_Interface) { + Usb_Interface_Descriptor[] altSettings = ((Usb_Interface) parent) + .getAltsetting(); + if (index >= altSettings.length) + return null; + return altSettings[index]; + } else if (parent instanceof Usb_Interface_Descriptor) { + Usb_Endpoint_Descriptor[] endpoints = ((Usb_Interface_Descriptor) parent) + .getEndpoint(); + if (index >= endpoints.length) + return null; + return endpoints[index]; + } + return null; + } + + /** + * Returns the number of children of parent. + */ + public int getChildCount(Object parent) + { + if (parent instanceof String && ((String) parent).compareTo(USB_ROOT) == 0) + { + int count = 0; + + Usb_Bus curBus = rootBus; + + for (; curBus != null; curBus = curBus.getNext()) + { + count++; + } + + return count; + + } + else if (parent instanceof Usb_Bus) { + Usb_Device device = ((Usb_Bus) parent).getDevices(); + int count = 0; + while (device != null) { + count++; + device = device.getNext(); + } + return count; + } else if (parent instanceof Usb_Device) { + // add the Usb_Device_Descriptor + return ((Usb_Device) parent).getConfig().length + 1; + } else if (parent instanceof Usb_Config_Descriptor) { + return ((Usb_Config_Descriptor) parent).getInterface().length; + } else if (parent instanceof Usb_Interface) { + return ((Usb_Interface) parent).getAltsetting().length; + } else if (parent instanceof Usb_Interface_Descriptor) { + return ((Usb_Interface_Descriptor) parent).getEndpoint().length; + } + return 0; + } + + /** + * Returns true if node is a leaf. + */ + public boolean isLeaf(Object node) { + return false; + } + + /** + * Messaged when the user has altered the value for the item identified by + * path to newValue. Not used by this model. + */ + public void valueForPathChanged(TreePath path, Object newValue) { + System.out.println("*** valueForPathChanged : " + path + " --> " + + newValue); + } + + /** + * Returns the index of child in parent. + */ + public int getIndexOfChild(Object parent, Object child) { + return 0; + } + + public void addTreeModelListener(TreeModelListener l) { + treeModelListeners.addElement(l); + } + + public void removeTreeModelListener(TreeModelListener l) { + treeModelListeners.removeElement(l); + } + + /** + * The only event raised by this model is TreeStructureChanged with the root + * as path, i.e. the whole tree has changed. + */ + protected void fireTreeStructureChanged(Usb_Bus newRootBus) { + rootBus = newRootBus; + int len = treeModelListeners.size(); + TreeModelEvent e = new TreeModelEvent(this, new Object[] { newRootBus }); + for (int i = 0; i < len; i++) { + treeModelListeners.elementAt(i).treeStructureChanged(e); + } + } + + public void valueChanged(TreeSelectionEvent e) { + JTree tree = (JTree) e.getSource(); + Object component = tree.getLastSelectedPathComponent(); + if (component instanceof Usb_Bus) { + Usb_Bus bus = (Usb_Bus) component; + StringBuffer sb = new StringBuffer("Usb_Bus\n"); + sb.append("\tdirname: " + bus.getDirname() + "\n"); + sb.append("\tlocation: 0x" + Long.toHexString(bus.getLocation()) + + "\n"); + textArea.setText(sb.toString()); + } else if (component instanceof Usb_Device) { + Usb_Device device = (Usb_Device) component; + StringBuffer sb = new StringBuffer("Usb_Device\n"); + sb.append("\tfilename: " + device.getFilename() + "\n"); + sb.append("\tdevnum: " + device.getDevnum() + "\n"); + sb.append("\tnum_children: " + device.getNumChildren() + "\n"); + textArea.setText(sb.toString()); + } else if (component instanceof Usb_Device_Descriptor) { + Usb_Device_Descriptor devDesc = (Usb_Device_Descriptor) component; + StringBuffer sb = new StringBuffer("Usb_Device_Descriptor\n"); + sb.append("\tblenght: 0x" + + Integer.toHexString(devDesc.getBLength() & 0xFF) + "\n"); + sb.append("\tbDescriptorType: 0x" + + Integer.toHexString(devDesc.getBDescriptorType() & 0xFF) + + "\n"); + sb.append("\tbcdUSB: 0x" + + Integer.toHexString(devDesc.getBcdUSB() & 0xFFFF) + "\n"); + sb.append("\tbDeviceClass: 0x" + + Integer.toHexString(devDesc.getBDeviceClass() & 0xFF) + + "\n"); + sb.append("\tbDeviceSubClass: 0x" + + Integer.toHexString(devDesc.getBDeviceSubClass() & 0xFF) + + "\n"); + sb.append("\tbDeviceProtocol: 0x" + + Integer.toHexString(devDesc.getBDeviceProtocol() & 0xFF) + + "\n"); + sb.append("\tbMaxPacketSize0: 0x" + + Integer.toHexString(devDesc.getBMaxPacketSize0() & 0xFF) + + " (" + devDesc.getBMaxPacketSize0() + ")\n"); + sb.append("\tidVendor: 0x" + + Integer.toHexString(devDesc.getIdVendor() & 0xFFFF) + + "\n"); + sb.append("\tidProduct: 0x" + + Integer.toHexString(devDesc.getIdProduct() & 0xFFFF) + + "\n"); + sb + .append("\tbcdDevice: 0x" + + Integer + .toHexString(devDesc.getBcdDevice() & 0xFF) + + "\n"); + sb.append("\tiManufacturer: 0x" + + Integer.toHexString(devDesc.getIManufacturer() & 0xFF) + + "\n"); + sb.append("\tiProduct: 0x" + + Integer.toHexString(devDesc.getIProduct()) + "\n"); + sb.append("\tiSerialNumber: 0x" + + Integer.toHexString(devDesc.getISerialNumber() & 0xFF) + + "\n"); + sb + .append("\tbNumConfigurations: 0x" + + Integer.toHexString(devDesc + .getBNumConfigurations() & 0xFF) + "\n"); + // get device handle to retrieve string descriptors + Usb_Bus bus = rootBus; + while (bus != null) { + Usb_Device dev = bus.getDevices(); + while (dev != null) { + Usb_Device_Descriptor tmpDevDesc = dev.getDescriptor(); + if ((dev.getDescriptor() != null) + && ((dev.getDescriptor().getIManufacturer() > 0) + || (dev.getDescriptor().getIProduct() > 0) || (dev + .getDescriptor().getISerialNumber() > 0))) { + if (tmpDevDesc.equals(devDesc)) { + long handle = LibusbJava.usb_open(dev); + sb.append("\nString descriptors\n"); + if (handle <= 0) { + sb.append("\terror opening the device\n"); + break; + } + if (dev.getDescriptor().getIManufacturer() > 0) { + String manufacturer = LibusbJava + .usb_get_string_simple(handle, devDesc + .getIManufacturer()); + if (manufacturer == null) + manufacturer = "unable to fetch manufacturer string"; + sb.append("\tiManufacturer: " + manufacturer + + "\n"); + } + if (dev.getDescriptor().getIProduct() > 0) { + String product = LibusbJava + .usb_get_string_simple(handle, devDesc + .getIProduct()); + if (product == null) + product = "unable to fetch product string"; + sb.append("\tiProduct: " + product + "\n"); + } + if (dev.getDescriptor().getISerialNumber() > 0) { + String serialNumber = LibusbJava + .usb_get_string_simple(handle, devDesc + .getISerialNumber()); + if (serialNumber == null) + serialNumber = "unable to fetch serial number string"; + sb.append("\tiSerialNumber: " + serialNumber + + "\n"); + } + LibusbJava.usb_close(handle); + } + } + dev = dev.getNext(); + } + bus = bus.getNext(); + } + textArea.setText(sb.toString()); + } else if (component instanceof Usb_Config_Descriptor) { + Usb_Config_Descriptor confDesc = (Usb_Config_Descriptor) component; + StringBuffer sb = new StringBuffer("Usb_Config_Descriptor\n"); + sb.append("\tblenght: 0x" + + Integer.toHexString(confDesc.getBLength()) + "\n"); + sb.append("\tbDescriptorType: 0x" + + Integer.toHexString(confDesc.getBDescriptorType() & 0xFF) + + "\n"); + sb.append("\tbNumInterfaces: 0x" + + Integer.toHexString(confDesc.getBNumInterfaces() & 0xFF) + + "\n"); + sb + .append("\tbConfigurationValue: 0x" + + Integer.toHexString(confDesc + .getBConfigurationValue() & 0xFF) + "\n"); + sb.append("\tiConfiguration: 0x" + + Integer.toHexString(confDesc.getIConfiguration() & 0xFF) + + "\n"); + sb.append("\tbmAttributes: 0x" + + Integer.toHexString(confDesc.getBmAttributes() & 0xFF) + + "\n"); + sb.append("\tMaxPower [mA]: 0x" + + Integer.toHexString(confDesc.getMaxPower() & 0xFF) + " (" + + confDesc.getMaxPower() + ")\n"); + sb.append("\textralen: 0x" + + Integer.toHexString(confDesc.getExtralen()) + "\n"); + sb.append("\textra: " + extraDescriptorToString(confDesc.getExtra()) + "\n"); + // get device handle to retrieve string descriptors + Usb_Bus bus = rootBus; + while (bus != null) { + Usb_Device dev = bus.getDevices(); + while (dev != null) { + Usb_Config_Descriptor[] tmpConfDesc = dev.getConfig(); + for (int i = 0; i < tmpConfDesc.length; i++) { + if ((tmpConfDesc.equals(confDesc)) + && (confDesc.getIConfiguration() > 0)) { + long handle = LibusbJava.usb_open(dev); + sb.append("\nString descriptors\n"); + if (handle <= 0) { + sb.append("\terror opening the device\n"); + break; + } + String configuration = LibusbJava + .usb_get_string_simple(handle, confDesc + .getIConfiguration()); + if (configuration == null) + configuration = "unable to fetch configuration string"; + sb.append("\tiConfiguration: " + configuration + + "\n"); + + LibusbJava.usb_close(handle); + + } + } + dev = dev.getNext(); + } + bus = bus.getNext(); + } + textArea.setText(sb.toString()); + } else if (component instanceof Usb_Interface) { + Usb_Interface int_ = (Usb_Interface) component; + StringBuffer sb = new StringBuffer("Usb_Interface\n"); + sb.append("\tnum_altsetting: 0x" + + Integer.toHexString(int_.getNumAltsetting()) + "\n"); + sb.append("\taltsetting: " + int_.getAltsetting() + "\n"); + textArea.setText(sb.toString()); + } else if (component instanceof Usb_Interface_Descriptor) { + Usb_Interface_Descriptor intDesc = (Usb_Interface_Descriptor) component; + StringBuffer sb = new StringBuffer("Usb_Interface_Descriptor\n"); + sb.append("\tblenght: 0x" + + Integer.toHexString(intDesc.getBLength() & 0xFF) + "\n"); + sb.append("\tbDescriptorType: 0x" + + Integer.toHexString(intDesc.getBDescriptorType() & 0xFF) + + "\n"); + sb.append("\tbInterfaceNumber: 0x" + + Integer.toHexString(intDesc.getBInterfaceNumber() & 0xFF) + + "\n"); + sb.append("\tbAlternateSetting: 0x" + + Integer + .toHexString(intDesc.getBAlternateSetting() & 0xFF) + + "\n"); + sb.append("\tbNumEndpoints: 0x" + + Integer.toHexString(intDesc.getBNumEndpoints() & 0xFF) + + "\n"); + sb.append("\tbInterfaceClass: 0x" + + Integer.toHexString(intDesc.getBInterfaceClass() & 0xFF) + + "\n"); + sb + .append("\tbInterfaceSubClass: 0x" + + Integer.toHexString(intDesc + .getBInterfaceSubClass() & 0xFF) + "\n"); + sb + .append("\tbInterfaceProtocol: 0x" + + Integer.toHexString(intDesc + .getBInterfaceProtocol() & 0xFF) + "\n"); + sb.append("\tiInterface: 0x" + + Integer.toHexString(intDesc.getIInterface()) + "\n"); + sb.append("\textralen: 0x" + + Integer.toHexString(intDesc.getExtralen()) + "\n"); + sb.append("\textra: " + extraDescriptorToString(intDesc.getExtra()) + "\n"); + // get device handle to retrieve string descriptors + Usb_Bus bus = rootBus; + while (bus != null) { + Usb_Device dev = bus.getDevices(); + while (dev != null) { + Usb_Config_Descriptor[] confDescs = dev.getConfig(); + for (int i = 0; i < confDescs.length; i++) { + Usb_Interface[] ints = confDescs[i].getInterface(); + for (int j = 0; j < ints.length; j++) { + Usb_Interface_Descriptor[] tmpIntDescs = ints[j] + .getAltsetting(); + for (int k = 0; k < ints.length; k++) { + if (i < tmpIntDescs.length && tmpIntDescs[i].equals(intDesc) + && (intDesc.getIInterface() > 0)) { + long handle = LibusbJava.usb_open(dev); + sb.append("\nString descriptors\n"); + if (handle <= 0) { + sb + .append("\terror opening the device\n"); + break; + } + String interface_ = LibusbJava + .usb_get_string_simple(handle, + intDesc.getIInterface()); + if (interface_ == null) + interface_ = "unable to fetch interface string"; + sb.append("\tiInterface: " + interface_ + + "\n"); + LibusbJava.usb_close(handle); + } + } + } + } + dev = dev.getNext(); + } + bus = bus.getNext(); + } + textArea.setText(sb.toString()); + } else if (component instanceof Usb_Endpoint_Descriptor) { + Usb_Endpoint_Descriptor epDesc = (Usb_Endpoint_Descriptor) component; + StringBuffer sb = new StringBuffer("Usb_Endpoint_Descriptor\n"); + sb.append("\tblenght: 0x" + + Integer.toHexString(epDesc.getBLength() & 0xFF) + "\n"); + sb.append("\tbDescriptorType: 0x" + + Integer.toHexString(epDesc.getBDescriptorType() & 0xFF) + + "\n"); + sb.append("\tbEndpointAddress: 0x" + + Integer.toHexString(epDesc.getBEndpointAddress() & 0xFF) + + "\n"); + sb.append("\tbmAttributes: 0x" + + Integer.toHexString(epDesc.getBmAttributes() & 0xFF) + + "\n"); + sb.append("\twMaxPacketSize: 0x" + + Integer.toHexString(epDesc.getWMaxPacketSize() & 0xFFFF) + + " (" + epDesc.getWMaxPacketSize() + ")\n"); + sb.append("\tbInterval: 0x" + + Integer.toHexString(epDesc.getBInterval() & 0xFF) + "\n"); + sb.append("\tbRefresh: 0x" + + Integer.toHexString(epDesc.getBRefresh() & 0xFF) + "\n"); + sb.append("\tbSynchAddress: 0x" + + Integer.toHexString(epDesc.getBSynchAddress()) + "\n"); + sb.append("\textralen: 0x" + + Integer.toHexString(epDesc.getExtralen()) + "\n"); + sb.append("\textra: " + extraDescriptorToString(epDesc.getExtra()) + "\n"); + textArea.setText(sb.toString()); + } + } + + private String extraDescriptorToString(byte[] extra) { + if (extra != null) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < extra.length; i++) { + sb.append("0x"); + sb.append(Integer.toHexString(extra[i] & 0xff)); + sb.append(' '); + } + return sb.toString(); + } + return null; + } +} diff --git a/java/src/ch/ntb/usb/usbView/UsbView.java b/src/main/java/ch/ntb/usb.r273/usbView/UsbView.java similarity index 96% rename from java/src/ch/ntb/usb/usbView/UsbView.java rename to src/main/java/ch/ntb/usb.r273/usbView/UsbView.java index dfeed49..c531812 100644 --- a/java/src/ch/ntb/usb/usbView/UsbView.java +++ b/src/main/java/ch/ntb/usb.r273/usbView/UsbView.java @@ -1,403 +1,403 @@ -/* - * Java libusb wrapper - * Copyright (c) 2005-2006 Andreas Schläpfer - * - * http://libusbjava.sourceforge.net - * This library is covered by the LGPL, read LGPL.txt for details. - */ -package ch.ntb.usb.usbView; - -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - -import javax.swing.JFrame; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JScrollPane; -import javax.swing.JSplitPane; -import javax.swing.JTextArea; -import javax.swing.JTree; -import javax.swing.KeyStroke; -import javax.swing.tree.TreePath; - -import ch.ntb.usb.LibusbJava; -import ch.ntb.usb.Usb_Bus; -import ch.ntb.usb.Usb_Config_Descriptor; -import ch.ntb.usb.Usb_Device; -import ch.ntb.usb.Usb_Device_Descriptor; -import ch.ntb.usb.Usb_Endpoint_Descriptor; -import ch.ntb.usb.Usb_Interface_Descriptor; -import ch.ntb.usb.testApp.TestApp; -import ch.ntb.usb.testApp.TestDevice; -import ch.ntb.usb.testApp.AbstractDeviceInfo.TransferMode; - -public class UsbView extends JFrame { - - private static final long serialVersionUID = 4693554326612734263L; - - private static final int APP_WIDTH = 600, APP_HIGHT = 800; - - private JPanel jContentPane = null; - private JMenuBar jJMenuBar = null; - private JMenu commandsMenu = null; - private JMenuItem exitMenuItem = null; - private JMenuItem updateMenuItem = null; - JTree usbTree = null; - private JSplitPane jSplitPane = null; - - private JTextArea jPropertiesArea = null; - - UsbTreeModel treeModel; - - JPopupMenu testAppPopup; - - protected JPopupMenu endpointPopup; - - /** - * This is the default constructor - */ - public UsbView() { - super(); - initialize(); - } - - /** - * This method initializes this - * - * @return void - */ - private void initialize() { - this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - this.setJMenuBar(getJJMenuBar()); - this.setSize(APP_WIDTH, APP_HIGHT); - this.setContentPane(getJContentPane()); - this.setTitle("USB View"); - } - - /** - * This method initializes jContentPane - * - * @return javax.swing.JPanel - */ - private JPanel getJContentPane() { - if (jContentPane == null) { - jContentPane = new JPanel(); - jContentPane.setLayout(new BorderLayout()); - jContentPane.add(getJSplitPane(), java.awt.BorderLayout.CENTER); - } - return jContentPane; - } - - /** - * This method initializes jJMenuBar - * - * @return javax.swing.JMenuBar - */ - private JMenuBar getJJMenuBar() { - if (jJMenuBar == null) { - jJMenuBar = new JMenuBar(); - jJMenuBar.add(getFileMenu()); - } - return jJMenuBar; - } - - /** - * This method initializes jMenu - * - * @return javax.swing.JMenu - */ - private JMenu getFileMenu() { - if (commandsMenu == null) { - commandsMenu = new JMenu(); - commandsMenu.setText("Commands"); - commandsMenu.add(getUpdateMenuItem()); - commandsMenu.add(getExitMenuItem()); - } - return commandsMenu; - } - - /** - * This method initializes jMenuItem - * - * @return javax.swing.JMenuItem - */ - private JMenuItem getExitMenuItem() { - if (exitMenuItem == null) { - exitMenuItem = new JMenuItem(); - exitMenuItem.setText("Exit"); - exitMenuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - System.exit(0); - } - }); - } - return exitMenuItem; - } - - /** - * This method initializes jMenuItem - * - * @return javax.swing.JMenuItem - */ - private JMenuItem getUpdateMenuItem() { - if (updateMenuItem == null) { - updateMenuItem = new JMenuItem(); - updateMenuItem.setText("Update"); - updateMenuItem.setAccelerator(KeyStroke.getKeyStroke( - KeyEvent.VK_F5, 0, true)); - updateMenuItem - .addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent e) { - // open bus - LibusbJava.usb_init(); - LibusbJava.usb_find_busses(); - LibusbJava.usb_find_devices(); - - Usb_Bus bus = LibusbJava.usb_get_busses(); - if (bus != null) { - treeModel.fireTreeStructureChanged(bus); - expandAll(usbTree); - } - } - }); - } - return updateMenuItem; - } - - /** - * This method initializes usbTree - * - * @return javax.swing.JTree - */ - private JTree getUsbTree() { - if (usbTree == null) { - // open bus - LibusbJava.usb_init(); - LibusbJava.usb_find_busses(); - LibusbJava.usb_find_devices(); - - Usb_Bus bus = LibusbJava.usb_get_busses(); - - treeModel = new UsbTreeModel(bus, jPropertiesArea); - usbTree = new JTree(treeModel); - expandAll(usbTree); - usbTree.addTreeSelectionListener(treeModel); - getJTestAppPopup(); - usbTree.addMouseListener(new MouseAdapter() { - - @Override - public void mousePressed(MouseEvent e) { - if (e.isPopupTrigger()) { - Object source = e.getSource(); - if (source instanceof JTree) { - JTree tree = (JTree) source; - TreePath path = tree.getPathForLocation(e.getX(), e - .getY()); - if (path != null - && (path.getLastPathComponent() instanceof Usb_Interface_Descriptor)) { - usbTree.setSelectionPath(path); - testAppPopup.show(tree, e.getX(), e.getY()); - } - } - } - } - - @Override - public void mouseReleased(MouseEvent e) { - if (e.isPopupTrigger()) { - if (e.isPopupTrigger()) { - Object source = e.getSource(); - if (source instanceof JTree) { - JTree tree = (JTree) source; - TreePath path = tree.getPathForLocation(e - .getX(), e.getY()); - if (path != null - && (path.getLastPathComponent() instanceof Usb_Interface_Descriptor)) { - usbTree.setSelectionPath(path); - testAppPopup.show(tree, e.getX(), e.getY()); - } - } - } - } - } - }); - } - return usbTree; - } - - private void getJTestAppPopup() { - // Create the popup menu. - testAppPopup = new JPopupMenu(); - endpointPopup = new JPopupMenu(); - JMenuItem menuItem = new JMenuItem( - "Start a test application using this interface"); - menuItem.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent e) { - initAndStartTestApp(); - } - - private void initAndStartTestApp() { - JTree tree = (JTree) testAppPopup.getInvoker(); - TreePath path = tree.getSelectionPath(); - TreePath parent = path; - Usb_Endpoint_Descriptor[] endpoints = null; - int altinterface = -1; - int interface_ = -1; - int configuration = -1; - short vendorId = -1; - short productId = -1; - while (parent != null - && !(parent.getLastPathComponent() instanceof Usb_Bus)) { - Object usbObj = parent.getLastPathComponent(); - if (usbObj instanceof Usb_Interface_Descriptor) { - Usb_Interface_Descriptor usbIntDesc = (Usb_Interface_Descriptor) usbObj; - endpoints = usbIntDesc.getEndpoint(); - interface_ = usbIntDesc.getBInterfaceNumber(); - altinterface = usbIntDesc.getBAlternateSetting(); - } else if (usbObj instanceof Usb_Config_Descriptor) { - configuration = ((Usb_Config_Descriptor) usbObj) - .getBConfigurationValue(); - } else if (usbObj instanceof Usb_Device) { - Usb_Device_Descriptor devDesc = ((Usb_Device) usbObj) - .getDescriptor(); - productId = devDesc.getIdProduct(); - vendorId = devDesc.getIdVendor(); - } - parent = parent.getParentPath(); - } - if (parent != null) { - // present a dialog to select in/out endpoint - // TODO: present dialog to select in/out endpoint - Usb_Endpoint_Descriptor[] outEPs = null; - int nofOutEPs = 0; - Usb_Endpoint_Descriptor[] inEPs = null; - int nofInEPs = 0; - - if (endpoints != null) { - outEPs = new Usb_Endpoint_Descriptor[endpoints.length]; - inEPs = new Usb_Endpoint_Descriptor[endpoints.length]; - for (int i = 0; i < endpoints.length; i++) { - int epAddr = endpoints[i].getBEndpointAddress() & 0xFF; - if ((epAddr & 0x80) > 0) { - // is IN endpoint - inEPs[nofInEPs++] = endpoints[i]; - } else { - // is OUT endpoint - outEPs[nofOutEPs++] = endpoints[i]; - } - } - } - // create a new TestDevice - TestDevice testDevice = new TestDevice(); - testDevice.setIdProduct(productId); - testDevice.setIdVendor(vendorId); - testDevice.setAltinterface(altinterface); - testDevice.setConfiguration(configuration); - testDevice.setInterface(interface_); - if (inEPs != null) { - for (int i = 0; i < nofInEPs; i++) { - int type = inEPs[i].getBmAttributes() & 0x03; - switch (type) { - case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_BULK: - testDevice.setInEPBulk(inEPs[i] - .getBEndpointAddress() & 0xff); - testDevice.setInMode(TransferMode.Bulk); - break; - case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_INTERRUPT: - testDevice.setInEPInt(inEPs[i] - .getBEndpointAddress() & 0xff); - testDevice.setInMode(TransferMode.Interrupt); - break; - default: - break; - } - } - } - if (outEPs != null) { - for (int i = 0; i < nofOutEPs; i++) { - int type = outEPs[i].getBmAttributes() & 0x03; - switch (type) { - case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_BULK: - testDevice.setOutEPBulk(outEPs[i] - .getBEndpointAddress() & 0xff); - testDevice.setOutMode(TransferMode.Bulk); - break; - case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_INTERRUPT: - testDevice.setOutEPInt(outEPs[i] - .getBEndpointAddress() & 0xff); - testDevice.setOutMode(TransferMode.Interrupt); - break; - default: - break; - } - } - } - // open a new testApp - TestApp app = new TestApp(testDevice); - app.setVisible(true); - } else { - System.out.println("error, could not find device node"); - // TODO: handle error - } - } - }); - testAppPopup.add(menuItem); - } - - /** - * This method initializes jSplitPane - * - * @return javax.swing.JSplitPane - */ - private JSplitPane getJSplitPane() { - if (jSplitPane == null) { - jSplitPane = new JSplitPane(); - jSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); - jSplitPane.setContinuousLayout(true); - jSplitPane.setDividerLocation(APP_HIGHT / 2); - jSplitPane - .setBottomComponent(createScrollPane(getJPropertiesArea())); - jSplitPane.setTopComponent(createScrollPane(getUsbTree())); - } - return jSplitPane; - } - - /** - * This method initializes jPropertiesArea - * - * @return javax.swing.JTextArea - */ - private JTextArea getJPropertiesArea() { - if (jPropertiesArea == null) { - jPropertiesArea = new JTextArea(); - } - return jPropertiesArea; - } - - private JScrollPane createScrollPane(Component view) { - JScrollPane scrollPane = new JScrollPane(view); - return scrollPane; - } - - /** - * Launches this application - */ - public static void main(String[] args) { - UsbView application = new UsbView(); - application.setVisible(true); - } - - void expandAll(JTree tree) { - for (int row = 0; row < tree.getRowCount(); row++) { - tree.expandRow(row); - } - } -} +/* + * Java libusb wrapper + * Copyright (c) 2005-2006 Andreas Schläpfer + * + * http://libusbjava.sourceforge.net + * This library is covered by the LGPL, read LGPL.txt for details. + */ +package ch.ntb.usb.usbView; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; +import javax.swing.JTextArea; +import javax.swing.JTree; +import javax.swing.KeyStroke; +import javax.swing.tree.TreePath; + +import ch.ntb.usb.LibusbJava; +import ch.ntb.usb.Usb_Bus; +import ch.ntb.usb.Usb_Config_Descriptor; +import ch.ntb.usb.Usb_Device; +import ch.ntb.usb.Usb_Device_Descriptor; +import ch.ntb.usb.Usb_Endpoint_Descriptor; +import ch.ntb.usb.Usb_Interface_Descriptor; +import ch.ntb.usb.testApp.TestApp; +import ch.ntb.usb.testApp.TestDevice; +import ch.ntb.usb.testApp.AbstractDeviceInfo.TransferMode; + +public class UsbView extends JFrame { + + private static final long serialVersionUID = 4693554326612734263L; + + private static final int APP_WIDTH = 600, APP_HIGHT = 800; + + private JPanel jContentPane = null; + private JMenuBar jJMenuBar = null; + private JMenu commandsMenu = null; + private JMenuItem exitMenuItem = null; + private JMenuItem updateMenuItem = null; + JTree usbTree = null; + private JSplitPane jSplitPane = null; + + private JTextArea jPropertiesArea = null; + + UsbTreeModel treeModel; + + JPopupMenu testAppPopup; + + protected JPopupMenu endpointPopup; + + /** + * This is the default constructor + */ + public UsbView() { + super(); + initialize(); + } + + /** + * This method initializes this + * + * @return void + */ + private void initialize() { + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setJMenuBar(getJJMenuBar()); + this.setSize(APP_WIDTH, APP_HIGHT); + this.setContentPane(getJContentPane()); + this.setTitle("USB View"); + } + + /** + * This method initializes jContentPane + * + * @return javax.swing.JPanel + */ + private JPanel getJContentPane() { + if (jContentPane == null) { + jContentPane = new JPanel(); + jContentPane.setLayout(new BorderLayout()); + jContentPane.add(getJSplitPane(), java.awt.BorderLayout.CENTER); + } + return jContentPane; + } + + /** + * This method initializes jJMenuBar + * + * @return javax.swing.JMenuBar + */ + private JMenuBar getJJMenuBar() { + if (jJMenuBar == null) { + jJMenuBar = new JMenuBar(); + jJMenuBar.add(getFileMenu()); + } + return jJMenuBar; + } + + /** + * This method initializes jMenu + * + * @return javax.swing.JMenu + */ + private JMenu getFileMenu() { + if (commandsMenu == null) { + commandsMenu = new JMenu(); + commandsMenu.setText("Commands"); + commandsMenu.add(getUpdateMenuItem()); + commandsMenu.add(getExitMenuItem()); + } + return commandsMenu; + } + + /** + * This method initializes jMenuItem + * + * @return javax.swing.JMenuItem + */ + private JMenuItem getExitMenuItem() { + if (exitMenuItem == null) { + exitMenuItem = new JMenuItem(); + exitMenuItem.setText("Exit"); + exitMenuItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + System.exit(0); + } + }); + } + return exitMenuItem; + } + + /** + * This method initializes jMenuItem + * + * @return javax.swing.JMenuItem + */ + private JMenuItem getUpdateMenuItem() { + if (updateMenuItem == null) { + updateMenuItem = new JMenuItem(); + updateMenuItem.setText("Update"); + updateMenuItem.setAccelerator(KeyStroke.getKeyStroke( + KeyEvent.VK_F5, 0, true)); + updateMenuItem + .addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + // open bus + LibusbJava.usb_init(); + LibusbJava.usb_find_busses(); + LibusbJava.usb_find_devices(); + + Usb_Bus bus = LibusbJava.usb_get_busses(); + if (bus != null) { + treeModel.fireTreeStructureChanged(bus); + expandAll(usbTree); + } + } + }); + } + return updateMenuItem; + } + + /** + * This method initializes usbTree + * + * @return javax.swing.JTree + */ + private JTree getUsbTree() { + if (usbTree == null) { + // open bus + LibusbJava.usb_init(); + LibusbJava.usb_find_busses(); + LibusbJava.usb_find_devices(); + + Usb_Bus bus = LibusbJava.usb_get_busses(); + + treeModel = new UsbTreeModel(bus, jPropertiesArea); + usbTree = new JTree(treeModel); + expandAll(usbTree); + usbTree.addTreeSelectionListener(treeModel); + getJTestAppPopup(); + usbTree.addMouseListener(new MouseAdapter() { + + @Override + public void mousePressed(MouseEvent e) { + if (e.isPopupTrigger()) { + Object source = e.getSource(); + if (source instanceof JTree) { + JTree tree = (JTree) source; + TreePath path = tree.getPathForLocation(e.getX(), e + .getY()); + if (path != null + && (path.getLastPathComponent() instanceof Usb_Interface_Descriptor)) { + usbTree.setSelectionPath(path); + testAppPopup.show(tree, e.getX(), e.getY()); + } + } + } + } + + @Override + public void mouseReleased(MouseEvent e) { + if (e.isPopupTrigger()) { + if (e.isPopupTrigger()) { + Object source = e.getSource(); + if (source instanceof JTree) { + JTree tree = (JTree) source; + TreePath path = tree.getPathForLocation(e + .getX(), e.getY()); + if (path != null + && (path.getLastPathComponent() instanceof Usb_Interface_Descriptor)) { + usbTree.setSelectionPath(path); + testAppPopup.show(tree, e.getX(), e.getY()); + } + } + } + } + } + }); + } + return usbTree; + } + + private void getJTestAppPopup() { + // Create the popup menu. + testAppPopup = new JPopupMenu(); + endpointPopup = new JPopupMenu(); + JMenuItem menuItem = new JMenuItem( + "Start a test application using this interface"); + menuItem.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + initAndStartTestApp(); + } + + private void initAndStartTestApp() { + JTree tree = (JTree) testAppPopup.getInvoker(); + TreePath path = tree.getSelectionPath(); + TreePath parent = path; + Usb_Endpoint_Descriptor[] endpoints = null; + int altinterface = -1; + int interface_ = -1; + int configuration = -1; + short vendorId = -1; + short productId = -1; + while (parent != null + && !(parent.getLastPathComponent() instanceof Usb_Bus)) { + Object usbObj = parent.getLastPathComponent(); + if (usbObj instanceof Usb_Interface_Descriptor) { + Usb_Interface_Descriptor usbIntDesc = (Usb_Interface_Descriptor) usbObj; + endpoints = usbIntDesc.getEndpoint(); + interface_ = usbIntDesc.getBInterfaceNumber(); + altinterface = usbIntDesc.getBAlternateSetting(); + } else if (usbObj instanceof Usb_Config_Descriptor) { + configuration = ((Usb_Config_Descriptor) usbObj) + .getBConfigurationValue(); + } else if (usbObj instanceof Usb_Device) { + Usb_Device_Descriptor devDesc = ((Usb_Device) usbObj) + .getDescriptor(); + productId = devDesc.getIdProduct(); + vendorId = devDesc.getIdVendor(); + } + parent = parent.getParentPath(); + } + if (parent != null) { + // present a dialog to select in/out endpoint + // TODO: present dialog to select in/out endpoint + Usb_Endpoint_Descriptor[] outEPs = null; + int nofOutEPs = 0; + Usb_Endpoint_Descriptor[] inEPs = null; + int nofInEPs = 0; + + if (endpoints != null) { + outEPs = new Usb_Endpoint_Descriptor[endpoints.length]; + inEPs = new Usb_Endpoint_Descriptor[endpoints.length]; + for (int i = 0; i < endpoints.length; i++) { + int epAddr = endpoints[i].getBEndpointAddress() & 0xFF; + if ((epAddr & 0x80) > 0) { + // is IN endpoint + inEPs[nofInEPs++] = endpoints[i]; + } else { + // is OUT endpoint + outEPs[nofOutEPs++] = endpoints[i]; + } + } + } + // create a new TestDevice + TestDevice testDevice = new TestDevice(); + testDevice.setIdProduct(productId); + testDevice.setIdVendor(vendorId); + testDevice.setAltinterface(altinterface); + testDevice.setConfiguration(configuration); + testDevice.setInterface(interface_); + if (inEPs != null) { + for (int i = 0; i < nofInEPs; i++) { + int type = inEPs[i].getBmAttributes() & 0x03; + switch (type) { + case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_BULK: + testDevice.setInEPBulk(inEPs[i] + .getBEndpointAddress() & 0xff); + testDevice.setInMode(TransferMode.Bulk); + break; + case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_INTERRUPT: + testDevice.setInEPInt(inEPs[i] + .getBEndpointAddress() & 0xff); + testDevice.setInMode(TransferMode.Interrupt); + break; + default: + break; + } + } + } + if (outEPs != null) { + for (int i = 0; i < nofOutEPs; i++) { + int type = outEPs[i].getBmAttributes() & 0x03; + switch (type) { + case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_BULK: + testDevice.setOutEPBulk(outEPs[i] + .getBEndpointAddress() & 0xff); + testDevice.setOutMode(TransferMode.Bulk); + break; + case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_INTERRUPT: + testDevice.setOutEPInt(outEPs[i] + .getBEndpointAddress() & 0xff); + testDevice.setOutMode(TransferMode.Interrupt); + break; + default: + break; + } + } + } + // open a new testApp + TestApp app = new TestApp(testDevice); + app.setVisible(true); + } else { + System.out.println("error, could not find device node"); + // TODO: handle error + } + } + }); + testAppPopup.add(menuItem); + } + + /** + * This method initializes jSplitPane + * + * @return javax.swing.JSplitPane + */ + private JSplitPane getJSplitPane() { + if (jSplitPane == null) { + jSplitPane = new JSplitPane(); + jSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); + jSplitPane.setContinuousLayout(true); + jSplitPane.setDividerLocation(APP_HIGHT / 2); + jSplitPane + .setBottomComponent(createScrollPane(getJPropertiesArea())); + jSplitPane.setTopComponent(createScrollPane(getUsbTree())); + } + return jSplitPane; + } + + /** + * This method initializes jPropertiesArea + * + * @return javax.swing.JTextArea + */ + private JTextArea getJPropertiesArea() { + if (jPropertiesArea == null) { + jPropertiesArea = new JTextArea(); + } + return jPropertiesArea; + } + + private JScrollPane createScrollPane(Component view) { + JScrollPane scrollPane = new JScrollPane(view); + return scrollPane; + } + + /** + * Launches this application + */ + public static void main(String[] args) { + UsbView application = new UsbView(); + application.setVisible(true); + } + + void expandAll(JTree tree) { + for (int row = 0; row < tree.getRowCount(); row++) { + tree.expandRow(row); + } + } +} diff --git a/java/src/ch/ntb/usb/usbView/package.html b/src/main/java/ch/ntb/usb.r273/usbView/package.html similarity index 95% rename from java/src/ch/ntb/usb/usbView/package.html rename to src/main/java/ch/ntb/usb.r273/usbView/package.html index d5f8295..2a64b06 100644 --- a/java/src/ch/ntb/usb/usbView/package.html +++ b/src/main/java/ch/ntb/usb.r273/usbView/package.html @@ -1,17 +1,17 @@ - - - - - -Displays the bus and device information of the currently attached -devices in a tree (based on Swing). - -

Related Resources

- -For more information about this project visit -http://libusbjava.sourceforge.net -. - - - + + + + + +Displays the bus and device information of the currently attached +devices in a tree (based on Swing). + +

Related Resources

+ +For more information about this project visit +http://libusbjava.sourceforge.net +. + + +