Roughly move files to fit gradle project

This commit is contained in:
2014-11-29 20:01:56 +00:00
parent 1e8e887d60
commit f847c1a597
57 changed files with 13960 additions and 13952 deletions

8
.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
.gradle
.settings
.project
.classpath
.project
.maven
bin
build

File diff suppressed because it is too large Load Diff

22
build.gradle Normal file
View File

@@ -0,0 +1,22 @@
apply plugin: 'java'
apply plugin: 'cpp'
apply plugin: 'maven'
apply plugin: 'eclipse'
group = 'com.github.boukefalos'
archivesBaseName = 'jlibusb'
version = '0.5.7'
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.11'
}
uploadArchives {
repositories.mavenDeployer {
repository(url: uri('.maven'))
}
}

View File

@@ -1,3 +0,0 @@
#Thu Oct 06 09:12:32 CEST 2005
eclipse.preferences.version=1
internal.default.compliance=default

View File

@@ -1,13 +0,0 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Java libusb-1.0 wrapper
Bundle-SymbolicName: ch.ntb.inf.libusbJava
Bundle-Version: 1.0.2
Bundle-Vendor: libusbjava.sourceforge.net
Require-Bundle: org.junit4
Export-Package: ch.ntb.inf.libusbJava,
ch.ntb.inf.libusbJava.logger,
ch.ntb.inf.libusbJava.testApp,
ch.ntb.inf.libusbJava.usbView
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: ch.ntb.inf.libusbJava

View File

@@ -1,6 +0,0 @@
# enable or disable logging
ch.ntb.inf.libusbJava/debug = true
# set and configure individual loggers here
# the format is: projectName/debug/<loggerX> = <logger name>/<log level>
ch.ntb.inf.libusbJava/debug/logger0 = ch.ntb.inf.libusbJava/OFF
ch.ntb.inf.libusbJava/debug/logger1 = ch.ntb.inf.libusbJava.test/INFO

View File

@@ -1,126 +1,126 @@
LIBRARY "libusb-1.0.dll" LIBRARY "libusb-1.0.dll"
EXPORTS EXPORTS
libusb_alloc_transfer libusb_alloc_transfer
libusb_alloc_transfer@4 = libusb_alloc_transfer libusb_alloc_transfer@4 = libusb_alloc_transfer
libusb_attach_kernel_driver libusb_attach_kernel_driver
libusb_attach_kernel_driver@8 = libusb_attach_kernel_driver libusb_attach_kernel_driver@8 = libusb_attach_kernel_driver
libusb_bulk_transfer libusb_bulk_transfer
libusb_bulk_transfer@24 = libusb_bulk_transfer libusb_bulk_transfer@24 = libusb_bulk_transfer
libusb_cancel_transfer libusb_cancel_transfer
libusb_cancel_transfer@4 = libusb_cancel_transfer libusb_cancel_transfer@4 = libusb_cancel_transfer
libusb_claim_interface libusb_claim_interface
libusb_claim_interface@8 = libusb_claim_interface libusb_claim_interface@8 = libusb_claim_interface
libusb_clear_halt libusb_clear_halt
libusb_clear_halt@8 = libusb_clear_halt libusb_clear_halt@8 = libusb_clear_halt
libusb_close libusb_close
libusb_close@4 = libusb_close libusb_close@4 = libusb_close
libusb_control_transfer libusb_control_transfer
libusb_control_transfer@32 = libusb_control_transfer libusb_control_transfer@32 = libusb_control_transfer
libusb_detach_kernel_driver libusb_detach_kernel_driver
libusb_detach_kernel_driver@8 = libusb_detach_kernel_driver libusb_detach_kernel_driver@8 = libusb_detach_kernel_driver
libusb_error_name libusb_error_name
libusb_error_name@4 = libusb_error_name libusb_error_name@4 = libusb_error_name
libusb_event_handler_active libusb_event_handler_active
libusb_event_handler_active@4 = libusb_event_handler_active libusb_event_handler_active@4 = libusb_event_handler_active
libusb_event_handling_ok libusb_event_handling_ok
libusb_event_handling_ok@4 = libusb_event_handling_ok libusb_event_handling_ok@4 = libusb_event_handling_ok
libusb_exit libusb_exit
libusb_exit@4 = libusb_exit libusb_exit@4 = libusb_exit
libusb_free_config_descriptor libusb_free_config_descriptor
libusb_free_config_descriptor@4 = libusb_free_config_descriptor libusb_free_config_descriptor@4 = libusb_free_config_descriptor
libusb_free_device_list libusb_free_device_list
libusb_free_device_list@8 = libusb_free_device_list libusb_free_device_list@8 = libusb_free_device_list
libusb_free_transfer libusb_free_transfer
libusb_free_transfer@4 = libusb_free_transfer libusb_free_transfer@4 = libusb_free_transfer
libusb_get_active_config_descriptor libusb_get_active_config_descriptor
libusb_get_active_config_descriptor@8 = libusb_get_active_config_descriptor libusb_get_active_config_descriptor@8 = libusb_get_active_config_descriptor
libusb_get_bus_number libusb_get_bus_number
libusb_get_bus_number@4 = libusb_get_bus_number libusb_get_bus_number@4 = libusb_get_bus_number
libusb_get_config_descriptor libusb_get_config_descriptor
libusb_get_config_descriptor@12 = libusb_get_config_descriptor libusb_get_config_descriptor@12 = libusb_get_config_descriptor
libusb_get_config_descriptor_by_value libusb_get_config_descriptor_by_value
libusb_get_config_descriptor_by_value@12 = libusb_get_config_descriptor_by_value libusb_get_config_descriptor_by_value@12 = libusb_get_config_descriptor_by_value
libusb_get_configuration libusb_get_configuration
libusb_get_configuration@8 = libusb_get_configuration libusb_get_configuration@8 = libusb_get_configuration
libusb_get_device libusb_get_device
libusb_get_device@4 = libusb_get_device libusb_get_device@4 = libusb_get_device
libusb_get_device_address libusb_get_device_address
libusb_get_device_address@4 = libusb_get_device_address libusb_get_device_address@4 = libusb_get_device_address
libusb_get_device_descriptor libusb_get_device_descriptor
libusb_get_device_descriptor@8 = libusb_get_device_descriptor libusb_get_device_descriptor@8 = libusb_get_device_descriptor
libusb_get_device_list libusb_get_device_list
libusb_get_device_list@8 = libusb_get_device_list libusb_get_device_list@8 = libusb_get_device_list
libusb_get_device_speed libusb_get_device_speed
libusb_get_device_speed@4 = libusb_get_device_speed libusb_get_device_speed@4 = libusb_get_device_speed
libusb_get_max_iso_packet_size libusb_get_max_iso_packet_size
libusb_get_max_iso_packet_size@8 = libusb_get_max_iso_packet_size libusb_get_max_iso_packet_size@8 = libusb_get_max_iso_packet_size
libusb_get_max_packet_size libusb_get_max_packet_size
libusb_get_max_packet_size@8 = libusb_get_max_packet_size libusb_get_max_packet_size@8 = libusb_get_max_packet_size
libusb_get_next_timeout libusb_get_next_timeout
libusb_get_next_timeout@8 = libusb_get_next_timeout libusb_get_next_timeout@8 = libusb_get_next_timeout
libusb_get_parent libusb_get_parent
libusb_get_parent@4 = libusb_get_parent libusb_get_parent@4 = libusb_get_parent
libusb_get_pollfds libusb_get_pollfds
libusb_get_pollfds@4 = libusb_get_pollfds libusb_get_pollfds@4 = libusb_get_pollfds
libusb_get_port_number libusb_get_port_number
libusb_get_port_number@4 = libusb_get_port_number libusb_get_port_number@4 = libusb_get_port_number
libusb_get_port_path libusb_get_port_path
libusb_get_port_path@16 = libusb_get_port_path libusb_get_port_path@16 = libusb_get_port_path
libusb_get_string_descriptor_ascii libusb_get_string_descriptor_ascii
libusb_get_string_descriptor_ascii@16 = libusb_get_string_descriptor_ascii libusb_get_string_descriptor_ascii@16 = libusb_get_string_descriptor_ascii
libusb_get_version libusb_get_version
libusb_get_version@0 = libusb_get_version libusb_get_version@0 = libusb_get_version
libusb_handle_events libusb_handle_events
libusb_handle_events@4 = libusb_handle_events libusb_handle_events@4 = libusb_handle_events
libusb_handle_events_completed libusb_handle_events_completed
libusb_handle_events_completed@8 = libusb_handle_events_completed libusb_handle_events_completed@8 = libusb_handle_events_completed
libusb_handle_events_locked libusb_handle_events_locked
libusb_handle_events_locked@8 = libusb_handle_events_locked libusb_handle_events_locked@8 = libusb_handle_events_locked
libusb_handle_events_timeout libusb_handle_events_timeout
libusb_handle_events_timeout@8 = libusb_handle_events_timeout libusb_handle_events_timeout@8 = libusb_handle_events_timeout
libusb_handle_events_timeout_completed libusb_handle_events_timeout_completed
libusb_handle_events_timeout_completed@12 = libusb_handle_events_timeout_completed libusb_handle_events_timeout_completed@12 = libusb_handle_events_timeout_completed
libusb_has_capability libusb_has_capability
libusb_has_capability@4 = libusb_has_capability libusb_has_capability@4 = libusb_has_capability
libusb_init libusb_init
libusb_init@4 = libusb_init libusb_init@4 = libusb_init
libusb_interrupt_transfer libusb_interrupt_transfer
libusb_interrupt_transfer@24 = libusb_interrupt_transfer libusb_interrupt_transfer@24 = libusb_interrupt_transfer
libusb_kernel_driver_active libusb_kernel_driver_active
libusb_kernel_driver_active@8 = libusb_kernel_driver_active libusb_kernel_driver_active@8 = libusb_kernel_driver_active
libusb_lock_event_waiters libusb_lock_event_waiters
libusb_lock_event_waiters@4 = libusb_lock_event_waiters libusb_lock_event_waiters@4 = libusb_lock_event_waiters
libusb_lock_events libusb_lock_events
libusb_lock_events@4 = libusb_lock_events libusb_lock_events@4 = libusb_lock_events
libusb_open libusb_open
libusb_open@8 = libusb_open libusb_open@8 = libusb_open
libusb_open_device_with_vid_pid libusb_open_device_with_vid_pid
libusb_open_device_with_vid_pid@12 = libusb_open_device_with_vid_pid libusb_open_device_with_vid_pid@12 = libusb_open_device_with_vid_pid
libusb_pollfds_handle_timeouts libusb_pollfds_handle_timeouts
libusb_pollfds_handle_timeouts@4 = libusb_pollfds_handle_timeouts libusb_pollfds_handle_timeouts@4 = libusb_pollfds_handle_timeouts
libusb_ref_device libusb_ref_device
libusb_ref_device@4 = libusb_ref_device libusb_ref_device@4 = libusb_ref_device
libusb_release_interface libusb_release_interface
libusb_release_interface@8 = libusb_release_interface libusb_release_interface@8 = libusb_release_interface
libusb_reset_device libusb_reset_device
libusb_reset_device@4 = libusb_reset_device libusb_reset_device@4 = libusb_reset_device
libusb_set_configuration libusb_set_configuration
libusb_set_configuration@8 = libusb_set_configuration libusb_set_configuration@8 = libusb_set_configuration
libusb_set_debug libusb_set_debug
libusb_set_debug@8 = libusb_set_debug libusb_set_debug@8 = libusb_set_debug
libusb_set_interface_alt_setting libusb_set_interface_alt_setting
libusb_set_interface_alt_setting@12 = libusb_set_interface_alt_setting libusb_set_interface_alt_setting@12 = libusb_set_interface_alt_setting
libusb_set_pollfd_notifiers libusb_set_pollfd_notifiers
libusb_set_pollfd_notifiers@16 = libusb_set_pollfd_notifiers libusb_set_pollfd_notifiers@16 = libusb_set_pollfd_notifiers
libusb_submit_transfer libusb_submit_transfer
libusb_submit_transfer@4 = libusb_submit_transfer libusb_submit_transfer@4 = libusb_submit_transfer
libusb_try_lock_events libusb_try_lock_events
libusb_try_lock_events@4 = libusb_try_lock_events libusb_try_lock_events@4 = libusb_try_lock_events
libusb_unlock_event_waiters libusb_unlock_event_waiters
libusb_unlock_event_waiters@4 = libusb_unlock_event_waiters libusb_unlock_event_waiters@4 = libusb_unlock_event_waiters
libusb_unlock_events libusb_unlock_events
libusb_unlock_events@4 = libusb_unlock_events libusb_unlock_events@4 = libusb_unlock_events
libusb_unref_device libusb_unref_device
libusb_unref_device@4 = libusb_unref_device libusb_unref_device@4 = libusb_unref_device
libusb_wait_for_event libusb_wait_for_event
libusb_wait_for_event@8 = libusb_wait_for_event libusb_wait_for_event@8 = libusb_wait_for_event

File diff suppressed because it is too large Load Diff

View File

@@ -1,141 +1,141 @@
/*! \file /*! \file
* *
* C++ Stub for the java class of a java class ch.ntb.inf.libusbJava.Usb_Device. * C++ Stub for the java class of a java class ch.ntb.inf.libusbJava.Usb_Device.
* *
* \author Ueli Niederer <ueli.niederer @ ntb.ch> * \author Ueli Niederer <ueli.niederer @ ntb.ch>
*/ */
#include "Usb_Device.h" #include "Usb_Device.h"
#include <string.h> #include <string.h>
#ifdef DO_UNIT_TEST #ifdef DO_UNIT_TEST
# include <test/CuTest.h> # include <test/CuTest.h>
# define TEST_CASE(name) static void name(CuTest *tc) # define TEST_CASE(name) static void name(CuTest *tc)
#endif #endif
typedef struct JField { typedef struct JField {
const char *type; const char *type;
const char *name; const char *name;
jfieldID id; jfieldID id;
}tJField; }tJField;
typedef struct Usb_Device { typedef struct Usb_Device {
int loaded; int loaded;
jclass clazz; jclass clazz;
jmethodID constructor; jmethodID constructor;
jfieldID next; jfieldID next;
jfieldID prev; jfieldID prev;
jfieldID filename; jfieldID filename;
jfieldID bus; jfieldID bus;
jfieldID descriptor; jfieldID descriptor;
jfieldID config; jfieldID config;
jfieldID devnum; jfieldID devnum;
jfieldID num_children; jfieldID num_children;
jfieldID children; jfieldID children;
jfieldID devStructAddr; jfieldID devStructAddr;
}tUsb_Device; }tUsb_Device;
#define LOAD_FIELD(env, me, type, name) me->name = env->GetFieldID(me->clazz, #name, (type)) #define LOAD_FIELD(env, me, type, name) me->name = env->GetFieldID(me->clazz, #name, (type))
#if 0 #if 0
#define SANITY_CHECK() { if (me->loaded == 0) Usb_Device_connect(env); } #define SANITY_CHECK() { if (me->loaded == 0) Usb_Device_connect(env); }
#else #else
#define SANITY_CHECK() #define SANITY_CHECK()
#endif #endif
static tUsb_Device instance = { 0 }; static tUsb_Device instance = { 0 };
static tUsb_Device *me = &instance; static tUsb_Device *me = &instance;
int Usb_Device_connect(JNIEnv *env) int Usb_Device_connect(JNIEnv *env)
{ {
jobject theClass = env->FindClass("ch/ntb/inf/libusbJava/Usb_Device"); jobject theClass = env->FindClass("ch/ntb/inf/libusbJava/Usb_Device");
if (theClass == NULL) goto no_class; if (theClass == NULL) goto no_class;
me->clazz = (jclass) env->NewGlobalRef(theClass); // make it global to avoid class unloading and therefore me->clazz = (jclass) env->NewGlobalRef(theClass); // make it global to avoid class unloading and therefore
// invalidating the references obtained. // invalidating the references obtained.
if (me->clazz == NULL) goto no_memory; if (me->clazz == NULL) goto no_memory;
me->constructor = env->GetMethodID(me->clazz, "<init>", "()V"); me->constructor = env->GetMethodID(me->clazz, "<init>", "()V");
if (me->constructor == NULL) goto no_constructor; if (me->constructor == NULL) goto no_constructor;
LOAD_FIELD(env, me, "Lch/ntb/inf/libusbJava/Usb_Device;", next); LOAD_FIELD(env, me, "Lch/ntb/inf/libusbJava/Usb_Device;", next);
LOAD_FIELD(env, me, "Lch/ntb/inf/libusbJava/Usb_Device;", prev); LOAD_FIELD(env, me, "Lch/ntb/inf/libusbJava/Usb_Device;", prev);
LOAD_FIELD(env, me, "Ljava/lang/String;", filename); LOAD_FIELD(env, me, "Ljava/lang/String;", filename);
LOAD_FIELD(env, me, "Lch/ntb/inf/libusbJava/Usb_Bus;", bus); LOAD_FIELD(env, me, "Lch/ntb/inf/libusbJava/Usb_Bus;", bus);
LOAD_FIELD(env, me, "Lch/ntb/inf/libusbJava/Usb_Device_Descriptor;", descriptor); LOAD_FIELD(env, me, "Lch/ntb/inf/libusbJava/Usb_Device_Descriptor;", descriptor);
LOAD_FIELD(env, me, "[Lch/ntb/inf/libusbJava/Usb_Config_Descriptor;", config); LOAD_FIELD(env, me, "[Lch/ntb/inf/libusbJava/Usb_Config_Descriptor;", config);
LOAD_FIELD(env, me, "B", devnum); LOAD_FIELD(env, me, "B", devnum);
LOAD_FIELD(env, me, "B", num_children); LOAD_FIELD(env, me, "B", num_children);
LOAD_FIELD(env, me, "Lch/ntb/inf/libusbJava/Usb_Device;", children); LOAD_FIELD(env, me, "Lch/ntb/inf/libusbJava/Usb_Device;", children);
LOAD_FIELD(env, me, "J", devStructAddr); LOAD_FIELD(env, me, "J", devStructAddr);
me->loaded = 1; me->loaded = 1;
return 0; return 0;
no_constructor: no_constructor:
env->DeleteGlobalRef(me->clazz); env->DeleteGlobalRef(me->clazz);
no_memory: no_memory:
no_class: no_class:
return -1; return -1;
} }
void Usb_Device_disconnect(JNIEnv *env) void Usb_Device_disconnect(JNIEnv *env)
{ {
if (me->loaded == 0) return; if (me->loaded == 0) return;
env->DeleteGlobalRef(me->clazz); env->DeleteGlobalRef(me->clazz);
memset(me, 0, sizeof(tUsb_Device)); memset(me, 0, sizeof(tUsb_Device));
} }
jobject Usb_Device_create(JNIEnv *env, libusb_device *handle, uint8_t address){ jobject Usb_Device_create(JNIEnv *env, libusb_device *handle, uint8_t address){
if (me->loaded == 0) return NULL; if (me->loaded == 0) return NULL;
jobject result = env->NewObject(me->clazz, me->constructor); jobject result = env->NewObject(me->clazz, me->constructor);
if (result != NULL) { if (result != NULL) {
char filename[4]; char filename[4];
snprintf(filename, 4, "%03d", address); snprintf(filename, 4, "%03d", address);
env->SetLongField(result, me->devStructAddr, (jlong)handle); env->SetLongField(result, me->devStructAddr, (jlong)handle);
env->SetByteField(result, me->devnum, address); env->SetByteField(result, me->devnum, address);
env->SetObjectField(result, me->filename, env->NewStringUTF(filename)); env->SetObjectField(result, me->filename, env->NewStringUTF(filename));
env->SetByteField(result, me->num_children, 0); /*Hardcoded to 0, like the compatibility Layer*/ env->SetByteField(result, me->num_children, 0); /*Hardcoded to 0, like the compatibility Layer*/
env->SetObjectField(result, me->children, NULL); /*Hardcoded to NULL, like the compatibility Layer*/ env->SetObjectField(result, me->children, NULL); /*Hardcoded to NULL, like the compatibility Layer*/
} }
return result; return result;
} }
libusb_device * Usb_Device_HandleGet(JNIEnv *env, jobject dev) libusb_device * Usb_Device_HandleGet(JNIEnv *env, jobject dev)
{ {
if (me->loaded == 0) return NULL; if (me->loaded == 0) return NULL;
return (libusb_device*)env->GetLongField(dev, me->devStructAddr); return (libusb_device*)env->GetLongField(dev, me->devStructAddr);
} }
void Usb_Device_HandleSet(JNIEnv *env, jobject dev, libusb_device *handle) void Usb_Device_HandleSet(JNIEnv *env, jobject dev, libusb_device *handle)
{ {
env->SetLongField(dev, me->devStructAddr, (jlong)handle); env->SetLongField(dev, me->devStructAddr, (jlong)handle);
} }
void Usb_Device_ConfigSet(JNIEnv *env, jobject dev, jobjectArray config) void Usb_Device_ConfigSet(JNIEnv *env, jobject dev, jobjectArray config)
{ {
env->SetObjectField(dev, me->config, config); env->SetObjectField(dev, me->config, config);
} }
void Usb_Device_DescriptorSet(JNIEnv *env, jobject dev, jobject desc) void Usb_Device_DescriptorSet(JNIEnv *env, jobject dev, jobject desc)
{ {
env->SetObjectField(dev, me->descriptor, desc); env->SetObjectField(dev, me->descriptor, desc);
} }
void Usb_Device_NextSet(JNIEnv *env, jobject dev, jobject next) { void Usb_Device_NextSet(JNIEnv *env, jobject dev, jobject next) {
env->SetObjectField(dev, me->next, next); env->SetObjectField(dev, me->next, next);
} }
void Usb_Device_PrevSet(JNIEnv *env, jobject dev, jobject prev) { void Usb_Device_PrevSet(JNIEnv *env, jobject dev, jobject prev) {
env->SetObjectField(dev, me->prev, prev); env->SetObjectField(dev, me->prev, prev);
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +1,18 @@
#ifndef USBDEVICE_H_ #ifndef USBDEVICE_H_
#define USBDEVICE_H_ #define USBDEVICE_H_
#include <jni.h> #include <jni.h>
#include <libusb.h> #include <libusb.h>
int Usb_Device_connect(JNIEnv *env); int Usb_Device_connect(JNIEnv *env);
void Usb_Device_disconnect(JNIEnv *env); void Usb_Device_disconnect(JNIEnv *env);
jobject Usb_Device_create(JNIEnv *env, libusb_device *handle, uint8_t address); jobject Usb_Device_create(JNIEnv *env, libusb_device *handle, uint8_t address);
libusb_device * Usb_Device_HandleGet(JNIEnv *env, jobject dev); libusb_device * Usb_Device_HandleGet(JNIEnv *env, jobject dev);
void Usb_Device_HandleSet(JNIEnv *env, jobject dev, libusb_device *handle); void Usb_Device_HandleSet(JNIEnv *env, jobject dev, libusb_device *handle);
void Usb_Device_ConfigSet(JNIEnv *env, jobject dev, jobjectArray config); void Usb_Device_ConfigSet(JNIEnv *env, jobject dev, jobjectArray config);
void Usb_Device_DescriptorSet(JNIEnv *env, jobject dev, jobject desc); void Usb_Device_DescriptorSet(JNIEnv *env, jobject dev, jobject desc);
void Usb_Device_NextSet(JNIEnv *env, jobject dev, jobject next); void Usb_Device_NextSet(JNIEnv *env, jobject dev, jobject next);
void Usb_Device_PrevSet(JNIEnv *env, jobject dev, jobject prev); void Usb_Device_PrevSet(JNIEnv *env, jobject dev, jobject prev);
#endif /* USBDEVICE_H_ */ #endif /* USBDEVICE_H_ */

View File

@@ -1,19 +1,19 @@
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
public class Libusb_event { public class Libusb_event {
public void transferCallback(){ public void transferCallback(){
} }
public void fdAddedCallback(int fd){ public void fdAddedCallback(int fd){
System.out.println("addedCallback"); System.out.println("addedCallback");
} }
public void fdRemovedCallback(int fd){ public void fdRemovedCallback(int fd){
System.out.println("removedCallback"); System.out.println("removedCallback");
} }
} }

View File

@@ -1,7 +1,7 @@
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
public class Libusb_pollfd { public class Libusb_pollfd {
int fd; int fd;
byte events; byte events;
} }

View File

@@ -1,318 +1,318 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.logging.Logger; import java.util.logging.Logger;
import ch.ntb.inf.libusbJava.logger.LogUtil; import ch.ntb.inf.libusbJava.logger.LogUtil;
/** /**
* This class manages all USB devices and defines some USB specific constants.<br> * This class manages all USB devices and defines some USB specific constants.<br>
* *
*/ */
public class USB { public class USB {
// Standard requests (USB spec 9.4) // Standard requests (USB spec 9.4)
/** /**
* This request returns status for the specified recipient (USB spec 9.4.5). * This request returns status for the specified recipient (USB spec 9.4.5).
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_GET_STATUS = 0x00; public static final int REQ_GET_STATUS = 0x00;
/** /**
* This request is used to clear or disable a specific feature (USB spec * This request is used to clear or disable a specific feature (USB spec
* 9.4.1). * 9.4.1).
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_CLEAR_FEATURE = 0x01; public static final int REQ_CLEAR_FEATURE = 0x01;
// 0x02 is reserved // 0x02 is reserved
/** /**
* This request is used to set or enable a specific feature (USB spec * This request is used to set or enable a specific feature (USB spec
* 9.4.9). * 9.4.9).
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_SET_FEATURE = 0x03; public static final int REQ_SET_FEATURE = 0x03;
// 0x04 is reserved // 0x04 is reserved
/** /**
* This request sets the device address for all future device accesses (USB * This request sets the device address for all future device accesses (USB
* spec 9.4.6). * spec 9.4.6).
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_SET_ADDRESS = 0x05; public static final int REQ_SET_ADDRESS = 0x05;
/** /**
* This request returns the specified descriptor if the descriptor exists * This request returns the specified descriptor if the descriptor exists
* (USB spec 9.4.3). * (USB spec 9.4.3).
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_GET_DESCRIPTOR = 0x06; public static final int REQ_GET_DESCRIPTOR = 0x06;
/** /**
* This request is optional and may be used to update existing descriptors * This request is optional and may be used to update existing descriptors
* or new descriptors may be added (USB spec 9.4.8). * or new descriptors may be added (USB spec 9.4.8).
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_SET_DESCRIPTOR = 0x07; public static final int REQ_SET_DESCRIPTOR = 0x07;
/** /**
* This request returns the current device configuration value (USB spec * This request returns the current device configuration value (USB spec
* 9.4.2). * 9.4.2).
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_GET_CONFIGURATION = 0x08; public static final int REQ_GET_CONFIGURATION = 0x08;
/** /**
* This request sets the device configuration (USB spec 9.4.7). * This request sets the device configuration (USB spec 9.4.7).
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_SET_CONFIGURATION = 0x09; public static final int REQ_SET_CONFIGURATION = 0x09;
/** /**
* This request returns the selected alternate setting for the specified * This request returns the selected alternate setting for the specified
* interface (USB spec 9.4.4). * interface (USB spec 9.4.4).
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_GET_INTERFACE = 0x0A; public static final int REQ_GET_INTERFACE = 0x0A;
/** /**
* This request allows the host to select an alternate setting for the * This request allows the host to select an alternate setting for the
* specified interface (USB spec 9.4.10). * specified interface (USB spec 9.4.10).
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_SET_INTERFACE = 0x0B; public static final int REQ_SET_INTERFACE = 0x0B;
/** /**
* This request is used to set and then report an endpoints synchronization * This request is used to set and then report an endpoints synchronization
* frame (USB spec 9.4.11). * frame (USB spec 9.4.11).
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_SYNCH_FRAME = 0x0C; public static final int REQ_SYNCH_FRAME = 0x0C;
// data transfer direction (USB spec 9.3) // data transfer direction (USB spec 9.3)
/** /**
* Identifies the direction of data transfer in the second phase of the * Identifies the direction of data transfer in the second phase of the
* control transfer.<br> * control transfer.<br>
* The state of the Direction bit is ignored if the wLength field is zero, * The state of the Direction bit is ignored if the wLength field is zero,
* signifying there is no Data stage.<br> * signifying there is no Data stage.<br>
* Specifies bit 7 of bmRequestType. * Specifies bit 7 of bmRequestType.
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_TYPE_DIR_HOST_TO_DEVICE = (0x00 << 7), public static final int REQ_TYPE_DIR_HOST_TO_DEVICE = (0x00 << 7),
REQ_TYPE_DIR_DEVICE_TO_HOST = (0x01 << 7); REQ_TYPE_DIR_DEVICE_TO_HOST = (0x01 << 7);
// request types (USB spec 9.3) // request types (USB spec 9.3)
/** /**
* Specifies the type of the request.<br> * Specifies the type of the request.<br>
* Specifies bits 6..5 of bmRequestType. * Specifies bits 6..5 of bmRequestType.
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_TYPE_TYPE_STANDARD = (0x00 << 5), public static final int REQ_TYPE_TYPE_STANDARD = (0x00 << 5),
REQ_TYPE_TYPE_CLASS = (0x01 << 5), REQ_TYPE_TYPE_CLASS = (0x01 << 5),
REQ_TYPE_TYPE_VENDOR = (0x02 << 5), REQ_TYPE_TYPE_VENDOR = (0x02 << 5),
REQ_TYPE_TYPE_RESERVED = (0x03 << 5); REQ_TYPE_TYPE_RESERVED = (0x03 << 5);
// request recipient (USB spec 9.3) // request recipient (USB spec 9.3)
/** /**
* Specifies the intended recipient of the request.<br> * Specifies the intended recipient of the request.<br>
* Requests may be directed to the device, an interface on the device, or a * 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 * specific endpoint on a device. When an interface or endpoint is
* specified, the wIndex field identifies the interface or endpoint.<br> * specified, the wIndex field identifies the interface or endpoint.<br>
* Specifies bits 4..0 of bmRequestType. * Specifies bits 4..0 of bmRequestType.
* *
* @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int, * @see ch.ntb.inf.libusbJava.Device#controlMsg(int, int, int, int, byte[], int, int,
* boolean) * boolean)
*/ */
public static final int REQ_TYPE_RECIP_DEVICE = 0x00, public static final int REQ_TYPE_RECIP_DEVICE = 0x00,
REQ_TYPE_RECIP_INTERFACE = 0x01, REQ_TYPE_RECIP_ENDPOINT = 0x02, REQ_TYPE_RECIP_INTERFACE = 0x01, REQ_TYPE_RECIP_ENDPOINT = 0x02,
REQ_TYPE_RECIP_OTHER = 0x03; REQ_TYPE_RECIP_OTHER = 0x03;
/** /**
* The maximum packet size of a bulk transfer when operating in highspeed * The maximum packet size of a bulk transfer when operating in highspeed
* (480 MB/s) mode. * (480 MB/s) mode.
*/ */
public static int HIGHSPEED_MAX_BULK_PACKET_SIZE = 512; public static int HIGHSPEED_MAX_BULK_PACKET_SIZE = 512;
/** /**
* The maximum packet size of a bulk transfer when operating in fullspeed * The maximum packet size of a bulk transfer when operating in fullspeed
* (12 MB/s) mode. * (12 MB/s) mode.
*/ */
public static int FULLSPEED_MAX_BULK_PACKET_SIZE = 64; public static int FULLSPEED_MAX_BULK_PACKET_SIZE = 64;
private static final Logger logger = LogUtil.getLogger("ch.ntb.inf.libusbJava"); private static final Logger logger = LogUtil.getLogger("ch.ntb.inf.libusbJava");
private static LinkedList<Device> devices = new LinkedList<Device>(); private static LinkedList<Device> devices = new LinkedList<Device>();
private static boolean initUSBDone = false; private static boolean initUSBDone = false;
/** /**
* Create a new device an register it in a device list. If the device is * Create a new device an register it in a device list. If the device is
* already registered, a reference to it will be returned.<br> * already registered, a reference to it will be returned.<br>
* After resetting or re-attaching a device the busName and filename may * After resetting or re-attaching a device the busName and filename may
* change. You can unregister the current device instance (see * change. You can unregister the current device instance (see
* {@link #unregisterDevice(Device)}) and get a new instance with the * {@link #unregisterDevice(Device)}) and get a new instance with the
* updated bus and filename. * updated bus and filename.
* *
* @param idVendor * @param idVendor
* the vendor id of the USB device * the vendor id of the USB device
* @param idProduct * @param idProduct
* the product id of the USB device * the product id of the USB device
* @param busName * @param busName
* optional name of the bus which can be used to distinguish * optional name of the bus which can be used to distinguish
* multiple devices with the same vendor and product id.<br> * multiple devices with the same vendor and product id.<br>
* see {@link Usb_Bus#getDirname()} * see {@link Usb_Bus#getDirname()}
* @param filename * @param filename
* optional filename which can be used to distinguish multiple * optional filename which can be used to distinguish multiple
* devices with the same vendor and product id.<br> * devices with the same vendor and product id.<br>
* see {@link Usb_Device#getFilename()} * see {@link Usb_Device#getFilename()}
* @return a newly created device or an already registered device * @return a newly created device or an already registered device
*/ */
public static Device getDevice(short idVendor, short idProduct, public static Device getDevice(short idVendor, short idProduct,
String busName, String filename) { String busName, String filename) {
// check if this device is already registered // check if this device is already registered
Device dev = getRegisteredDevice(idVendor, idProduct, busName, filename); Device dev = getRegisteredDevice(idVendor, idProduct, busName, filename);
if (dev != null) { if (dev != null) {
logger.info("return already registered device: " + dev); logger.info("return already registered device: " + dev);
return dev; return dev;
} }
dev = new Device(idVendor, idProduct, busName, filename); dev = new Device(idVendor, idProduct, busName, filename);
logger.info("create new device: " + dev); logger.info("create new device: " + dev);
devices.add(dev); devices.add(dev);
return dev; return dev;
} }
/** /**
* See {@link #getDevice(short, short, String, String)}. The parameter * See {@link #getDevice(short, short, String, String)}. The parameter
* <code>filename</code> and <code>busName</code>is set to null. * <code>filename</code> and <code>busName</code>is set to null.
* *
* @param idVendor * @param idVendor
* @param idProduct * @param idProduct
* @return a newly created device or an already registered device * @return a newly created device or an already registered device
*/ */
public static Device getDevice(short idVendor, short idProduct) { public static Device getDevice(short idVendor, short idProduct) {
return getDevice(idVendor, idProduct, null, null); return getDevice(idVendor, idProduct, null, null);
} }
/** /**
* Unregister a registered device. * Unregister a registered device.
* *
* @param dev * @param dev
* the device to unregister * the device to unregister
* @return true if the device has been removed, else false * @return true if the device has been removed, else false
*/ */
public static boolean unregisterDevice(Device dev) { public static boolean unregisterDevice(Device dev) {
return devices.remove(dev); return devices.remove(dev);
} }
/** /**
* Get an already registered device or null if the device does not exist.<br> * Get an already registered device or null if the device does not exist.<br>
* To uniquely identify a device bus and filename should be set. If only one * 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. * of those is set the first device matching the criteria is returned.
* *
* @param idVendor * @param idVendor
* the vendor id of the USB device * the vendor id of the USB device
* @param idProduct * @param idProduct
* the product id of the USB device * the product id of the USB device
* @param busName * @param busName
* the name of the bus which can be used to distinguish multiple * the name of the bus which can be used to distinguish multiple
* devices with the same vendor and product id.<br> * devices with the same vendor and product id.<br>
* see {@link Usb_Bus#getDirname()} * see {@link Usb_Bus#getDirname()}
* @param filename * @param filename
* an optional filename which can be used to distinguish multiple * an optional filename which can be used to distinguish multiple
* devices with the same vendor and product id. see * devices with the same vendor and product id. see
* {@link Usb_Device#getFilename()} * {@link Usb_Device#getFilename()}
* *
* @return the device or null * @return the device or null
*/ */
private static Device getRegisteredDevice(short idVendor, short idProduct, private static Device getRegisteredDevice(short idVendor, short idProduct,
String busName, String filename) { String busName, String filename) {
for (Iterator<Device> iter = devices.iterator(); iter.hasNext();) { for (Iterator<Device> iter = devices.iterator(); iter.hasNext();) {
Device dev = iter.next(); Device dev = iter.next();
// bus and filename // bus and filename
if (busName != null && filename != null) { if (busName != null && filename != null) {
if (busName.compareTo(dev.getBusName() == null ? "" : dev if (busName.compareTo(dev.getBusName() == null ? "" : dev
.getBusName()) == 0 .getBusName()) == 0
&& filename.compareTo(dev.getFilename() == null ? "" && filename.compareTo(dev.getFilename() == null ? ""
: dev.getFilename()) == 0 : dev.getFilename()) == 0
&& dev.getIdVendor() == idVendor && dev.getIdVendor() == idVendor
&& dev.getIdProduct() == idProduct) { && dev.getIdProduct() == idProduct) {
return dev; return dev;
} }
} else if (filename != null) { } else if (filename != null) {
if (filename.compareTo(dev.getFilename() == null ? "" : dev if (filename.compareTo(dev.getFilename() == null ? "" : dev
.getFilename()) == 0 .getFilename()) == 0
&& dev.getIdVendor() == idVendor && dev.getIdVendor() == idVendor
&& dev.getIdProduct() == idProduct) { && dev.getIdProduct() == idProduct) {
return dev; return dev;
} }
} else if (busName != null) { } else if (busName != null) {
if (busName.compareTo(dev.getBusName() == null ? "" : dev if (busName.compareTo(dev.getBusName() == null ? "" : dev
.getBusName()) == 0 .getBusName()) == 0
&& dev.getIdVendor() == idVendor && dev.getIdVendor() == idVendor
&& dev.getIdProduct() == idProduct) { && dev.getIdProduct() == idProduct) {
return dev; return dev;
} }
} else if (dev.getIdVendor() == idVendor } else if (dev.getIdVendor() == idVendor
&& dev.getIdProduct() == idProduct) { && dev.getIdProduct() == idProduct) {
return dev; return dev;
} }
} }
return null; return null;
} }
/** /**
* Returns the root {@link Usb_Bus} element. * Returns the root {@link Usb_Bus} element.
* *
* @return the root {@link Usb_Bus} element * @return the root {@link Usb_Bus} element
* @throws USBException * @throws USBException
*/ */
public static Usb_Bus getBus() throws USBException { public static Usb_Bus getBus() throws USBException {
if (!initUSBDone) { if (!initUSBDone) {
init(); init();
} }
LibusbJava.usb_find_busses(); LibusbJava.usb_find_busses();
LibusbJava.usb_find_devices(); LibusbJava.usb_find_devices();
Usb_Bus bus = LibusbJava.usb_get_busses(); Usb_Bus bus = LibusbJava.usb_get_busses();
if (bus == null) { if (bus == null) {
throw new USBException("LibusbJava.usb_get_busses(): " throw new USBException("LibusbJava.usb_get_busses(): "
+ LibusbJava.usb_strerror()); + LibusbJava.usb_strerror());
} }
return bus; return bus;
} }
/** /**
* Explicitly calls {@link LibusbJava#usb_init()}. Note that you don't need * 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 * to call this procedure as it is called implicitly when creating a new
* device with {@link USB#getDevice(short, short, String, String)}. * device with {@link USB#getDevice(short, short, String, String)}.
*/ */
public static void init() { public static void init() {
LibusbJava.usb_init(); LibusbJava.usb_init();
initUSBDone = true; initUSBDone = true;
} }
} }

View File

@@ -1,23 +1,23 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
import java.io.IOException; import java.io.IOException;
public class USBException extends IOException { public class USBException extends IOException {
public USBException(String string) { public USBException(String string) {
super(string); super(string);
} }
/** /**
* *
*/ */
private static final long serialVersionUID = 1690857437804284710L; private static final long serialVersionUID = 1690857437804284710L;
} }

View File

@@ -1,21 +1,21 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
public class USBTimeoutException extends USBException { public class USBTimeoutException extends USBException {
public USBTimeoutException(String string) { public USBTimeoutException(String string) {
super(string); super(string);
} }
/** /**
* *
*/ */
private static final long serialVersionUID = -1065328371159778249L; private static final long serialVersionUID = -1065328371159778249L;
} }

View File

@@ -1,107 +1,107 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
/** /**
* Represents an USB bus.<br> * Represents an USB bus.<br>
* This is the root class for the representation of the libusb USB structure. * This is the root class for the representation of the libusb USB structure.
* Zero or more devices may be connected to an USB bus. * Zero or more devices may be connected to an USB bus.
* *
*/ */
public class Usb_Bus { public class Usb_Bus {
private Usb_Bus next, prev; private Usb_Bus next, prev;
private String dirname; private String dirname;
private Usb_Device devices; private Usb_Device devices;
private long location; private long location;
private Usb_Device root_dev; private Usb_Device root_dev;
public Usb_Bus(String dirname, long location) { public Usb_Bus(String dirname, long location) {
this.dirname = dirname; this.dirname = dirname;
this.location = location; this.location = location;
} }
/** /**
* Get the first device ojects of the devices linked list.<br> * Get the first device ojects of the devices linked list.<br>
* *
* @return the first device ojects of the devices linked list or null * @return the first device ojects of the devices linked list or null
*/ */
public Usb_Device getDevices() { public Usb_Device getDevices() {
return devices; return devices;
} }
protected void setDevices(Usb_Device devices) { protected void setDevices(Usb_Device devices) {
this.devices = devices; this.devices = devices;
} }
/** /**
* Returns the systems String representation of the bus.<br> * Returns the systems String representation of the bus.<br>
* *
* @return the systems String representation of the bus * @return the systems String representation of the bus
*/ */
public String getDirname() { public String getDirname() {
return dirname; return dirname;
} }
/** /**
* Returns the next bus object.<br> * Returns the next bus object.<br>
* *
* @return Returns the next bus object or null * @return Returns the next bus object or null
*/ */
public Usb_Bus getNext() { public Usb_Bus getNext() {
return next; return next;
} }
protected void setNext(Usb_Bus bus) { protected void setNext(Usb_Bus bus) {
next = bus; next = bus;
} }
/** /**
* Returns the previous bus object.<br> * Returns the previous bus object.<br>
* *
* @return Returns the previous bus object or null * @return Returns the previous bus object or null
*/ */
public Usb_Bus getPrev() { public Usb_Bus getPrev() {
return prev; return prev;
} }
protected void setPrev(Usb_Bus bus) { protected void setPrev(Usb_Bus bus) {
prev = bus; prev = bus;
} }
/** /**
* Get the root device of this bus.<br> * Get the root device of this bus.<br>
* *
* @return the root device oject or null * @return the root device oject or null
*/ */
public Usb_Device getRootDev() { public Usb_Device getRootDev() {
return root_dev; return root_dev;
} }
/** /**
* Returns the location in the USB bus linked list.<br> * Returns the location in the USB bus linked list.<br>
* *
* @return the location in the USB bus linked list * @return the location in the USB bus linked list
*/ */
public long getLocation() { public long getLocation() {
return location; return location;
} }
protected void setLocation(long busnumber) { protected void setLocation(long busnumber) {
location = busnumber; location = busnumber;
} }
@Override @Override
public String toString() { public String toString() {
return "Usb_Bus " + dirname; return "Usb_Bus " + dirname;
} }
} }

View File

@@ -1,139 +1,139 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
/** /**
* Represents the descriptor of a USB configuration.<br> * Represents the descriptor of a USB configuration.<br>
* A USB device can have several different configuration.<br> * A USB device can have several different configuration.<br>
* <br> * <br>
* The length of the configuration descriptor is * The length of the configuration descriptor is
* {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_CONFIG_SIZE} and the type is * {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_CONFIG_SIZE} and the type is
* {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_CONFIG}. * {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_CONFIG}.
* *
*/ */
public class Usb_Config_Descriptor extends Usb_Descriptor { public class Usb_Config_Descriptor extends Usb_Descriptor {
/** /**
* Maximum number of configurations per device * Maximum number of configurations per device
*/ */
public static final int USB_MAXCONFIG = 8; public static final int USB_MAXCONFIG = 8;
private short wTotalLength; private short wTotalLength;
private byte bNumInterfaces; private byte bNumInterfaces;
private byte bConfigurationValue; private byte bConfigurationValue;
private byte iConfiguration; private byte iConfiguration;
private byte bmAttributes; private byte bmAttributes;
private byte MaxPower; private byte MaxPower;
private Usb_Interface[] interface_; private Usb_Interface[] interface_;
private byte[] extra; /* Extra descriptors */ private byte[] extra; /* Extra descriptors */
private int extralen; private int extralen;
/** /**
* Returns the value to use as an argument to select this configuration ({@link LibusbJava#usb_set_configuration(long, int)}). * 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 * @return the value to use as an argument to select this configuration
*/ */
public byte getBConfigurationValue() { public byte getBConfigurationValue() {
return bConfigurationValue; return bConfigurationValue;
} }
/** /**
* Returns the power parameters for this configuration.<br> * Returns the power parameters for this configuration.<br>
* <br> * <br>
* Bit 7: Reserved, set to 1 (USB 1.0 Bus Powered)<br> * Bit 7: Reserved, set to 1 (USB 1.0 Bus Powered)<br>
* Bit 6: Self Powered<br> * Bit 6: Self Powered<br>
* Bit 5: Remote Wakeup<br> * Bit 5: Remote Wakeup<br>
* Bit 4..0: Reserved, set to 0 * Bit 4..0: Reserved, set to 0
* *
* @return the power parameters for this configuration * @return the power parameters for this configuration
*/ */
public byte getBmAttributes() { public byte getBmAttributes() {
return bmAttributes; return bmAttributes;
} }
/** /**
* Returns the number of interfaces.<br> * Returns the number of interfaces.<br>
* *
* @return the number of interfaces * @return the number of interfaces
*/ */
public byte getBNumInterfaces() { public byte getBNumInterfaces() {
return bNumInterfaces; return bNumInterfaces;
} }
/** /**
* Returns the data of extra descriptor(s) if available.<br> * Returns the data of extra descriptor(s) if available.<br>
* *
* @return null or a byte array with the extra descriptor data * @return null or a byte array with the extra descriptor data
*/ */
public byte[] getExtra() { public byte[] getExtra() {
return extra; return extra;
} }
/** /**
* Returns the number of bytes of the extra descriptor.<br> * Returns the number of bytes of the extra descriptor.<br>
* *
* @return the number of bytes of the extra descriptor * @return the number of bytes of the extra descriptor
*/ */
public int getExtralen() { public int getExtralen() {
return extralen; return extralen;
} }
/** /**
* Returns the index of the String descriptor describing this configuration.<br> * Returns the index of the String descriptor describing this configuration.<br>
* *
* @return the index of the String descriptor * @return the index of the String descriptor
*/ */
public byte getIConfiguration() { public byte getIConfiguration() {
return iConfiguration; return iConfiguration;
} }
/** /**
* Returns the USB interface descriptors.<br> * Returns the USB interface descriptors.<br>
* *
* @return the USB interface descriptors * @return the USB interface descriptors
*/ */
public Usb_Interface[] getInterface() { public Usb_Interface[] getInterface() {
return interface_; return interface_;
} }
/** /**
* Returns the maximum power consumption in 2mA units.<br> * Returns the maximum power consumption in 2mA units.<br>
* *
* @return the maximum power consumption in 2mA units * @return the maximum power consumption in 2mA units
*/ */
public byte getMaxPower() { public byte getMaxPower() {
return MaxPower; return MaxPower;
} }
/** /**
* Returns the total length in bytes of all descriptors.<br> * Returns the total length in bytes of all descriptors.<br>
* When the configuration descriptor is read, it returns the entire * When the configuration descriptor is read, it returns the entire
* configuration hierarchy which includes all related interface and endpoint * configuration hierarchy which includes all related interface and endpoint
* descriptors. The <code>wTotalLength</code> field reflects the number of * descriptors. The <code>wTotalLength</code> field reflects the number of
* bytes in the hierarchy. * bytes in the hierarchy.
* *
* @return the total length in bytes of all descriptors * @return the total length in bytes of all descriptors
*/ */
public short getWTotalLength() { public short getWTotalLength() {
return wTotalLength; return wTotalLength;
} }
@Override @Override
public String toString() { public String toString() {
return "Usb_Config_Descriptor bNumInterfaces: 0x" return "Usb_Config_Descriptor bNumInterfaces: 0x"
+ Integer.toHexString(bNumInterfaces); + Integer.toHexString(bNumInterfaces);
} }
} }

View File

@@ -1,61 +1,61 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
/** /**
* Common USB descriptor values.<br> * Common USB descriptor values.<br>
* *
*/ */
public class Usb_Descriptor { public class Usb_Descriptor {
/** /**
* Descriptor types ({@link #bDescriptorType}). * Descriptor types ({@link #bDescriptorType}).
*/ */
public static final int USB_DT_DEVICE = 0x01, USB_DT_CONFIG = 0x02, public static final int USB_DT_DEVICE = 0x01, USB_DT_CONFIG = 0x02,
USB_DT_STRING = 0x03, USB_DT_INTERFACE = 0x04, USB_DT_STRING = 0x03, USB_DT_INTERFACE = 0x04,
USB_DT_ENDPOINT = 0x05; USB_DT_ENDPOINT = 0x05;
/** /**
* Descriptor types ({@link #bDescriptorType}). * Descriptor types ({@link #bDescriptorType}).
*/ */
public static final int LIBUSB_DT_DEVICE = 0x01, LIBUSB_DT_CONFIG = 0x02, public static final int LIBUSB_DT_DEVICE = 0x01, LIBUSB_DT_CONFIG = 0x02,
LIBUSB_DT_STRING = 0x03, LIBUSB_DT_INTERFACE = 0x04, LIBUSB_DT_STRING = 0x03, LIBUSB_DT_INTERFACE = 0x04,
LIBUSB_DT_ENDPOINT = 0x05, USB_DT_HID = 0x21, USB_DT_REPORT = 0x22, LIBUSB_DT_ENDPOINT = 0x05, USB_DT_HID = 0x21, USB_DT_REPORT = 0x22,
USB_DT_PHYSICAL = 0x23, USB_DT_HUB = 0x29; USB_DT_PHYSICAL = 0x23, USB_DT_HUB = 0x29;
/** /**
* Descriptor sizes per descriptor type ({@link #bLength}). * Descriptor sizes per descriptor type ({@link #bLength}).
*/ */
public static final int USB_DT_DEVICE_SIZE = 18, USB_DT_CONFIG_SIZE = 9, 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_INTERFACE_SIZE = 9, USB_DT_ENDPOINT_SIZE = 7,
USB_DT_ENDPOINT_AUDIO_SIZE = 9 /* Audio extension */, USB_DT_ENDPOINT_AUDIO_SIZE = 9 /* Audio extension */,
USB_DT_HUB_NONVAR_SIZE = 7; USB_DT_HUB_NONVAR_SIZE = 7;
private byte bLength; private byte bLength;
private byte bDescriptorType; private byte bDescriptorType;
/** /**
* Get the type of this descriptor.<br> * Get the type of this descriptor.<br>
* *
* @return the type of this descriptor * @return the type of this descriptor
*/ */
public byte getBDescriptorType() { public byte getBDescriptorType() {
return bDescriptorType; return bDescriptorType;
} }
/** /**
* Get the size of this descriptor in bytes.<br> * Get the size of this descriptor in bytes.<br>
* *
* @return the size of this descriptor in bytes * @return the size of this descriptor in bytes
*/ */
public byte getBLength() { public byte getBLength() {
return bLength; return bLength;
} }
} }

View File

@@ -1,165 +1,165 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
/** /**
* Represents an USB device.<br> * Represents an USB device.<br>
* An USB device has one device descriptor and it may have multiple * An USB device has one device descriptor and it may have multiple
* configuration descriptors. * configuration descriptors.
* *
*/ */
public class Usb_Device { public class Usb_Device {
private Usb_Device next, prev; private Usb_Device next, prev;
private String filename; private String filename;
private Usb_Bus bus; private Usb_Bus bus;
private Usb_Device_Descriptor descriptor; private Usb_Device_Descriptor descriptor;
private Usb_Config_Descriptor[] config; private Usb_Config_Descriptor[] config;
private byte devnum; private byte devnum;
private byte num_children; private byte num_children;
private Usb_Device children; private Usb_Device children;
/** /**
* The address of the device structure to be passed to usb_open. This value * 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. * is used only internally so we don't use getter or setter methods.
*/ */
public long devStructAddr; public long devStructAddr;
/** /**
* Returns the reference to the bus to which this device is connected.<br> * Returns the reference to the bus to which this device is connected.<br>
* *
* @return 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() { public Usb_Bus getBus() {
return bus; return bus;
} }
protected void setBus(Usb_Bus bus){ protected void setBus(Usb_Bus bus){
this.bus = bus; this.bus = bus;
} }
/** /**
* Returns a reference to the first child.<br> * Returns a reference to the first child.<br>
* *
* @return a reference to the first child * @return a reference to the first child
*/ */
public Usb_Device getChildren() { public Usb_Device getChildren() {
return children; return children;
} }
/** /**
* Returns the USB config descriptors.<br> * Returns the USB config descriptors.<br>
* *
* @return the USB config descriptors * @return the USB config descriptors
*/ */
public Usb_Config_Descriptor[] getConfig() { public Usb_Config_Descriptor[] getConfig() {
return config; return config;
} }
/** /**
* Returns the USB device descriptor.<br> * Returns the USB device descriptor.<br>
* *
* @return the USB device descriptor * @return the USB device descriptor
*/ */
public Usb_Device_Descriptor getDescriptor() { public Usb_Device_Descriptor getDescriptor() {
return descriptor; return descriptor;
} }
/** /**
* Returns the number assigned to this device.<br> * Returns the number assigned to this device.<br>
* *
* @return the number assigned to this device * @return the number assigned to this device
*/ */
public byte getDevnum() { public byte getDevnum() {
return devnum; return devnum;
} }
/** /**
* Returns the systems String representation.<br> * Returns the systems String representation.<br>
* *
* @return the systems String representation * @return the systems String representation
*/ */
public String getFilename() { public String getFilename() {
return filename; return filename;
} }
/** /**
* Returns the pointer to the next device.<br> * Returns the pointer to the next device.<br>
* *
* @return the pointer to the next device or null * @return the pointer to the next device or null
*/ */
public Usb_Device getNext() { public Usb_Device getNext() {
return next; return next;
} }
protected void setNext(Usb_Device dev){ protected void setNext(Usb_Device dev){
next = dev; next = dev;
} }
public static void freeDeviceList(Usb_Device device) public static void freeDeviceList(Usb_Device device)
{ {
Usb_Device curr = device.getPrev(); Usb_Device curr = device.getPrev();
/* Detach the left part of the list */ /* Detach the left part of the list */
device.setPrev(null); device.setPrev(null);
/* First walk to the left of the list and free all /* First walk to the left of the list and free all
devices on our way */ devices on our way */
while (curr != null) while (curr != null)
{ {
freeDevice(curr); freeDevice(curr);
curr = curr.getPrev(); curr = curr.getPrev();
} }
curr = device; curr = device;
/* Then walk to the right of the list and free all */ /* Then walk to the right of the list and free all */
while (curr != null) while (curr != null)
{ {
freeDevice(curr); freeDevice(curr);
curr = curr.getNext(); curr = curr.getNext();
} }
} }
public static void freeDevice(Usb_Device device) public static void freeDevice(Usb_Device device)
{ {
freeDeviceList(device.getChildren()); freeDeviceList(device.getChildren());
LibusbJava1.libusb_unref_device(device); LibusbJava1.libusb_unref_device(device);
} }
/** /**
* Returns the number of children of this device.<br> * Returns the number of children of this device.<br>
* *
* @return the number of children of this device * @return the number of children of this device
*/ */
public byte getNumChildren() { public byte getNumChildren() {
return num_children; return num_children;
} }
/** /**
* Returns the pointer to the previous device.<br> * Returns the pointer to the previous device.<br>
* *
* @return the pointer to the previous device or null * @return the pointer to the previous device or null
*/ */
public Usb_Device getPrev() { public Usb_Device getPrev() {
return prev; return prev;
} }
protected void setPrev(Usb_Device dev){ protected void setPrev(Usb_Device dev){
prev = dev; prev = dev;
} }
@Override @Override
public String toString() { public String toString() {
return "Usb_Device " + filename; return "Usb_Device " + filename;
} }
} }

View File

@@ -1,191 +1,191 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
/** /**
* Represents the descriptor of a USB device.<br> * Represents the descriptor of a USB device.<br>
* A USB device can only have one device descriptor. It specifies some basic, * A USB device can only have one device descriptor. It specifies some basic,
* yet important information about the device.<br> * yet important information about the device.<br>
* <br> * <br>
* The length of the device descriptor is * The length of the device descriptor is
* {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_DEVICE_SIZE} and the type is * {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_DEVICE_SIZE} and the type is
* {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_DEVICE}. * {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_DEVICE}.
* *
*/ */
public class Usb_Device_Descriptor extends Usb_Descriptor { public class Usb_Device_Descriptor extends Usb_Descriptor {
/** /**
* Device and/or interface class codes. * Device and/or interface class codes.
*/ */
public static final int USB_CLASS_PER_INTERFACE = 0, USB_CLASS_AUDIO = 1, public static final int USB_CLASS_PER_INTERFACE = 0, USB_CLASS_AUDIO = 1,
USB_CLASS_COMM = 2, USB_CLASS_HID = 3, LIBUSB_CLASS_PTP = 6, USB_CLASS_COMM = 2, USB_CLASS_HID = 3, LIBUSB_CLASS_PTP = 6,
USB_CLASS_PRINTER = 7, USB_CLASS_MASS_STORAGE = 8, USB_CLASS_PRINTER = 7, USB_CLASS_MASS_STORAGE = 8,
USB_CLASS_HUB = 9, USB_CLASS_DATA = 10, USB_CLASS_HUB = 9, USB_CLASS_DATA = 10,
USB_CLASS_VENDOR_SPEC = 0xff; USB_CLASS_VENDOR_SPEC = 0xff;
private short bcdUSB; private short bcdUSB;
private byte bDeviceClass; private byte bDeviceClass;
private byte bDeviceSubClass; private byte bDeviceSubClass;
private byte bDeviceProtocol; private byte bDeviceProtocol;
private byte bMaxPacketSize0; private byte bMaxPacketSize0;
private short idVendor; private short idVendor;
private short idProduct; private short idProduct;
private short bcdDevice; private short bcdDevice;
private byte iManufacturer; private byte iManufacturer;
private byte iProduct; private byte iProduct;
private byte iSerialNumber; private byte iSerialNumber;
private byte bNumConfigurations; private byte bNumConfigurations;
/** /**
* Returns the device release number.<br> * Returns the device release number.<br>
* Assigned by the manufacturer of the device. * Assigned by the manufacturer of the device.
* *
* @return the device release number * @return the device release number
*/ */
public short getBcdDevice() { public short getBcdDevice() {
return bcdDevice; return bcdDevice;
} }
/** /**
* Returns the USB specification number to which the device complies to.<br> * Returns the USB specification number to which the device complies to.<br>
* This field reports the highest version of USB the device supports. The * 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 * 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 * major version number, M is the minor version number and N is the sub
* minor version number.<br> * minor version number.<br>
* Examples: USB 2.0 is reported as 0x0200, USB 1.1 as 0x0110 and USB 1.0 as * Examples: USB 2.0 is reported as 0x0200, USB 1.1 as 0x0110 and USB 1.0 as
* 0x100 * 0x100
* *
* @return the USB specification number to which the device complies to * @return the USB specification number to which the device complies to
*/ */
public short getBcdUSB() { public short getBcdUSB() {
return bcdUSB; return bcdUSB;
} }
/** /**
* Returns the class code (Assigned by <a * Returns the class code (Assigned by <a
* href="http://www.usb.org">www.usb.org</a>)<br> * href="http://www.usb.org">www.usb.org</a>)<br>
* If equal to zero, each interface specifies it's own class code. If equal * 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 * to 0xFF, the class code is vendor specified. Otherwise the field is a
* valid class code. * valid class code.
* *
* @return the class code * @return the class code
*/ */
public byte getBDeviceClass() { public byte getBDeviceClass() {
return bDeviceClass; return bDeviceClass;
} }
/** /**
* Returns the protocol code (Assigned by <a * Returns the protocol code (Assigned by <a
* href="http://www.usb.org">www.usb.org</a>)<br> * href="http://www.usb.org">www.usb.org</a>)<br>
* *
* @return the protocol code * @return the protocol code
*/ */
public byte getBDeviceProtocol() { public byte getBDeviceProtocol() {
return bDeviceProtocol; return bDeviceProtocol;
} }
/** /**
* Returns the subclass code (Assigned by <a * Returns the subclass code (Assigned by <a
* href="http://www.usb.org">www.usb.org</a>)<br> * href="http://www.usb.org">www.usb.org</a>)<br>
* *
* @return the subclass code * @return the subclass code
*/ */
public byte getBDeviceSubClass() { public byte getBDeviceSubClass() {
return bDeviceSubClass; return bDeviceSubClass;
} }
/** /**
* Returns the maximum packet size for endpoint zero.<br> * Returns the maximum packet size for endpoint zero.<br>
* Valid sizes are 8, 16, 32, 64. * Valid sizes are 8, 16, 32, 64.
* *
* @return the maximum packet size for endpoint zero * @return the maximum packet size for endpoint zero
*/ */
public byte getBMaxPacketSize0() { public byte getBMaxPacketSize0() {
return bMaxPacketSize0; return bMaxPacketSize0;
} }
/** /**
* Returns the number of possible configurations supported at its current * Returns the number of possible configurations supported at its current
* speed.<br> * speed.<br>
* *
* @return the number of possible configurations supported at its current * @return the number of possible configurations supported at its current
* speed * speed
*/ */
public byte getBNumConfigurations() { public byte getBNumConfigurations() {
return bNumConfigurations; return bNumConfigurations;
} }
/** /**
* Returns the product ID (Assigned by <a * Returns the product ID (Assigned by <a
* href="http://www.usb.org">www.usb.org</a>)<br> * href="http://www.usb.org">www.usb.org</a>)<br>
* *
* @return the product ID * @return the product ID
*/ */
public short getIdProduct() { public short getIdProduct() {
return idProduct; return idProduct;
} }
/** /**
* Returns the Vendor ID (Assigned by <a * Returns the Vendor ID (Assigned by <a
* href="http://www.usb.org">www.usb.org</a>)<br> * href="http://www.usb.org">www.usb.org</a>)<br>
* *
* @return the Vendor ID * @return the Vendor ID
*/ */
public short getIdVendor() { public short getIdVendor() {
return idVendor; return idVendor;
} }
/** /**
* Returns the index of the manufacturer string descriptor.<br> * Returns the index of the manufacturer string descriptor.<br>
* If this value is 0, no string descriptor is used. * If this value is 0, no string descriptor is used.
* *
* @return the index of the manufacturer string descriptor * @return the index of the manufacturer string descriptor
*/ */
public byte getIManufacturer() { public byte getIManufacturer() {
return iManufacturer; return iManufacturer;
} }
/** /**
* Returns the index of the product string descriptor.<br> * Returns the index of the product string descriptor.<br>
* If this value is 0, no string descriptor is used. * If this value is 0, no string descriptor is used.
* *
* @return the index of the product string descriptor * @return the index of the product string descriptor
*/ */
public byte getIProduct() { public byte getIProduct() {
return iProduct; return iProduct;
} }
/** /**
* Returns the index of serial number string descriptor.<br> * Returns the index of serial number string descriptor.<br>
* If this value is 0, no string descriptor is used. * If this value is 0, no string descriptor is used.
* *
* @return the index of serial number string descriptor * @return the index of serial number string descriptor
*/ */
public byte getISerialNumber() { public byte getISerialNumber() {
return iSerialNumber; return iSerialNumber;
} }
@Override @Override
public String toString() { public String toString() {
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
sb.append("Usb_Device_Descriptor idVendor: 0x" sb.append("Usb_Device_Descriptor idVendor: 0x"
+ Integer.toHexString(idVendor & 0xFFFF) + ", idProduct: 0x" + Integer.toHexString(idVendor & 0xFFFF) + ", idProduct: 0x"
+ Integer.toHexString(idProduct & 0xFFFF)); + Integer.toHexString(idProduct & 0xFFFF));
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -1,175 +1,175 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
/** /**
* Represents the descriptor of an USB endpoint.<br> * Represents the descriptor of an USB endpoint.<br>
* Endpoint descriptors are used to describe endpoints other than endpoint zero. * Endpoint descriptors are used to describe endpoints other than endpoint zero.
* Endpoint zero is always assumed to be a control endpoint and is configured * 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 * before any descriptors are even requested. The host will use the information
* returned from these descriptors to determine the bandwidth requirements of * returned from these descriptors to determine the bandwidth requirements of
* the bus.<br> * the bus.<br>
* <br> * <br>
* The length of the configuration descriptor is * The length of the configuration descriptor is
* {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_ENDPOINT_SIZE} and the type is * {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_ENDPOINT_SIZE} and the type is
* {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_ENDPOINT}. * {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_ENDPOINT}.
* *
*/ */
public class Usb_Endpoint_Descriptor extends Usb_Descriptor { public class Usb_Endpoint_Descriptor extends Usb_Descriptor {
/** /**
* Maximum number of endpoints * Maximum number of endpoints
*/ */
public static final int USB_MAXENDPOINTS = 32; public static final int USB_MAXENDPOINTS = 32;
/** /**
* Endpoint address mask (in bEndpointAddress). * Endpoint address mask (in bEndpointAddress).
*/ */
public static final int USB_ENDPOINT_ADDRESS_MASK = 0x0f, public static final int USB_ENDPOINT_ADDRESS_MASK = 0x0f,
USB_ENDPOINT_DIR_MASK = 0x80; USB_ENDPOINT_DIR_MASK = 0x80;
/** /**
* Endpoint type mask (in bmAttributes). * Endpoint type mask (in bmAttributes).
*/ */
public static final int USB_ENDPOINT_TRANSFER_TYPE_MASK = 0x03, public static final int USB_ENDPOINT_TRANSFER_TYPE_MASK = 0x03,
USB_ENDPOINT_ISO_SYNC_TYPE = 0x0C, USB_ENDPOINT_ISO_SYNC_TYPE = 0x0C,
USB_ENDPOINT_ISO_USAGE_TYPE = 0x30; USB_ENDPOINT_ISO_USAGE_TYPE = 0x30;
/** /**
* Possible endpoint types (in bmAttributes). * Possible endpoint types (in bmAttributes).
*/ */
public static final int USB_ENDPOINT_TRANSFER_TYPE_CONTROL = 0, public static final int USB_ENDPOINT_TRANSFER_TYPE_CONTROL = 0,
USB_ENDPOINT_TRANSFER_TYPE_ISOCHRONOUS = 1, USB_ENDPOINT_TRANSFER_TYPE_ISOCHRONOUS = 1,
USB_ENDPOINT_TRANSFER_TYPE_BULK = 2, USB_ENDPOINT_TRANSFER_TYPE_BULK = 2,
USB_ENDPOINT_TRANSFER_TYPE_INTERRUPT = 3; USB_ENDPOINT_TRANSFER_TYPE_INTERRUPT = 3;
/** /**
* Possible synchronization types for isochronous endpoints. * Possible synchronization types for isochronous endpoints.
*/ */
public static final int USB_ENDPOINT_ISO_SYNC_TYPE_NONE = 0, public static final int USB_ENDPOINT_ISO_SYNC_TYPE_NONE = 0,
USB_ENDPOINT_ISO_SYNC_TYPE_ASYNC = 1, USB_ENDPOINT_ISO_SYNC_TYPE_ASYNC = 1,
USB_ENDPOINT_ISO_SYNC_TYPE_ADAPTIVE = 2, USB_ENDPOINT_ISO_SYNC_TYPE_ADAPTIVE = 2,
USB_ENDPOINT_ISO_SYNC_TYPE_SYNC = 3; USB_ENDPOINT_ISO_SYNC_TYPE_SYNC = 3;
/** /**
* Possible usage types for isochronous endpoints * Possible usage types for isochronous endpoints
*/ */
public static final int USB_ENDPOINT_ISO_USAGE_TYPE_DATA = 0, public static final int USB_ENDPOINT_ISO_USAGE_TYPE_DATA = 0,
USB_ENDPOINT_ISO_USAGE_TYPE_FEEDBACK = 1, USB_ENDPOINT_ISO_USAGE_TYPE_FEEDBACK = 1,
USB_ENDPOINT_ISO_USAGE_TYPE_IMPLICIT = 2; USB_ENDPOINT_ISO_USAGE_TYPE_IMPLICIT = 2;
private byte bEndpointAddress; private byte bEndpointAddress;
private byte bmAttributes; private byte bmAttributes;
private short wMaxPacketSize; private short wMaxPacketSize;
private byte bInterval; private byte bInterval;
private byte bRefresh; private byte bRefresh;
private byte bSynchAddress; private byte bSynchAddress;
private byte[] extra; /* Extra descriptors */ private byte[] extra; /* Extra descriptors */
private int extralen; private int extralen;
/** /**
* Returns the endpoint address.<br> * Returns the endpoint address.<br>
* <br> * <br>
* Bits 3..0: Endpoint number <br> * Bits 3..0: Endpoint number <br>
* Bits 6..4: Reserved. Set to zero <br> * Bits 6..4: Reserved. Set to zero <br>
* Bit 7: Direction (host to device). 0 = OUT (send data from host to * 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 * device), 1 = IN (host receives data from device). Note: these values are
* ignored for control endpoints.<br> * ignored for control endpoints.<br>
* *
* @return the endpoint address * @return the endpoint address
*/ */
public byte getBEndpointAddress() { public byte getBEndpointAddress() {
return bEndpointAddress; return bEndpointAddress;
} }
/** /**
* Returns the intervall for polling endpoint data transfers.<br> * Returns the intervall for polling endpoint data transfers.<br>
* Value in frame counts. Ignored for Bulk & Control eEndpoints. Isochronous * 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 must equal 1 and field may range from 1 to 255 for interrupt
* endpoints. * endpoints.
* *
* @return the intervall for polling endpoint data transfers * @return the intervall for polling endpoint data transfers
*/ */
public byte getBInterval() { public byte getBInterval() {
return bInterval; return bInterval;
} }
/** /**
* Returns the attributes of this endpoint.<br> * Returns the attributes of this endpoint.<br>
* *
* Bits 1..0: Transfer Type (see <i>USB_ENDPOINT_TYPE_XXX</i>).<br> * Bits 1..0: Transfer Type (see <i>USB_ENDPOINT_TYPE_XXX</i>).<br>
* Bits 7..2: Reserved.<br> * Bits 7..2: Reserved.<br>
* *
* <pre> * <pre>
* If isochronous endpoint: * If isochronous endpoint:
* Bits 3..2: Synchronisation type * Bits 3..2: Synchronisation type
* 00 = No synchronisation * 00 = No synchronisation
* 01 = Asynchronous * 01 = Asynchronous
* 10 = Adaptive * 10 = Adaptive
* 11 = Synchronous * 11 = Synchronous
* Bits 5..4: Usage Type * Bits 5..4: Usage Type
* 00 = Data endpoint * 00 = Data endpoint
* 01 = Feedback endpoint * 01 = Feedback endpoint
* 10 = Explicit feedback data endpoint * 10 = Explicit feedback data endpoint
* 11 = Reserved * 11 = Reserved
* </pre> * </pre>
* *
* @return the attributes of this endpoint * @return the attributes of this endpoint
*/ */
public byte getBmAttributes() { public byte getBmAttributes() {
return bmAttributes; return bmAttributes;
} }
public byte getBRefresh() { public byte getBRefresh() {
return bRefresh; return bRefresh;
} }
public byte getBSynchAddress() { public byte getBSynchAddress() {
return bSynchAddress; return bSynchAddress;
} }
/** /**
* Returns the data of extra descriptor(s) if available.<br> * Returns the data of extra descriptor(s) if available.<br>
* *
* @return null or a byte array with the extra descriptor data * @return null or a byte array with the extra descriptor data
*/ */
public byte[] getExtra() { public byte[] getExtra() {
return extra; return extra;
} }
/** /**
* Returns the number of bytes of the extra descriptor.<br> * Returns the number of bytes of the extra descriptor.<br>
* *
* @return the number of bytes of the extra descriptor * @return the number of bytes of the extra descriptor
*/ */
public int getExtralen() { public int getExtralen() {
return extralen; return extralen;
} }
/** /**
* Returns the maximum packet size of this endpoint is capable of sending or * Returns the maximum packet size of this endpoint is capable of sending or
* receiving.<br> * receiving.<br>
* *
* @return the maximum packet size * @return the maximum packet size
*/ */
public short getWMaxPacketSize() { public short getWMaxPacketSize() {
return wMaxPacketSize; return wMaxPacketSize;
} }
@Override @Override
public String toString() { public String toString() {
return "Usb_Endpoint_Descriptor bEndpointAddress: 0x" return "Usb_Endpoint_Descriptor bEndpointAddress: 0x"
+ Integer.toHexString(bEndpointAddress & 0xFF); + Integer.toHexString(bEndpointAddress & 0xFF);
} }
} }

View File

@@ -1,50 +1,50 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
/** /**
* Represents an USB interface.<br> * Represents an USB interface.<br>
* An interface is a group of alternate settings of a configuration.<br> * An interface is a group of alternate settings of a configuration.<br>
* *
*/ */
public class Usb_Interface { public class Usb_Interface {
/** /**
* Maximal number of alternate settings * Maximal number of alternate settings
*/ */
public static final int USB_MAXALTSETTING = 128; /* Hard limit */ public static final int USB_MAXALTSETTING = 128; /* Hard limit */
private Usb_Interface_Descriptor[] altsetting; private Usb_Interface_Descriptor[] altsetting;
private int num_altsetting; private int num_altsetting;
@Override @Override
public String toString() { public String toString() {
return "Usb_Interface num_altsetting: 0x" return "Usb_Interface num_altsetting: 0x"
+ Integer.toHexString(num_altsetting); + Integer.toHexString(num_altsetting);
} }
/** /**
* Retuns an array of interface descriptors.<br> * Retuns an array of interface descriptors.<br>
* *
* @return an array of interface descriptors * @return an array of interface descriptors
*/ */
public Usb_Interface_Descriptor[] getAltsetting() { public Usb_Interface_Descriptor[] getAltsetting() {
return altsetting; return altsetting;
} }
/** /**
* Returns the number of alternate settings.<br> * Returns the number of alternate settings.<br>
* *
* @return the number of alternate settings * @return the number of alternate settings
*/ */
public int getNumAltsetting() { public int getNumAltsetting() {
return num_altsetting; return num_altsetting;
} }
} }

View File

@@ -1,146 +1,146 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
/** /**
* Represents the descriptor of a USB interface.<br> * Represents the descriptor of a USB interface.<br>
* The interface descriptor could be seen as a header or grouping of the * 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.<br> * endpoints into a functional group performing a single feature of the device.<br>
* <br> * <br>
* The length of the interface descriptor is * The length of the interface descriptor is
* {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_INTERFACE_SIZE} and the * {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_INTERFACE_SIZE} and the
* type is {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_INTERFACE}. * type is {@link ch.ntb.inf.libusbJava.Usb_Descriptor#USB_DT_INTERFACE}.
* *
*/ */
public class Usb_Interface_Descriptor extends Usb_Descriptor { public class Usb_Interface_Descriptor extends Usb_Descriptor {
/** /**
* Maximum number of interfaces * Maximum number of interfaces
*/ */
public static final int USB_MAXINTERFACES = 32; public static final int USB_MAXINTERFACES = 32;
private byte bInterfaceNumber; private byte bInterfaceNumber;
private byte bAlternateSetting; private byte bAlternateSetting;
private byte bNumEndpoints; private byte bNumEndpoints;
private byte bInterfaceClass; private byte bInterfaceClass;
private byte bInterfaceSubClass; private byte bInterfaceSubClass;
private byte bInterfaceProtocol; private byte bInterfaceProtocol;
private byte iInterface; private byte iInterface;
private Usb_Endpoint_Descriptor[] endpoint; private Usb_Endpoint_Descriptor[] endpoint;
private byte[] extra; /* Extra descriptors */ private byte[] extra; /* Extra descriptors */
private int extralen; private int extralen;
@Override @Override
public String toString() { public String toString() {
return "Usb_Interface_Descriptor bNumEndpoints: 0x" return "Usb_Interface_Descriptor bNumEndpoints: 0x"
+ Integer.toHexString(bNumEndpoints); + Integer.toHexString(bNumEndpoints);
} }
/** /**
* Returns the value used to select the alternate setting ( * Returns the value used to select the alternate setting (
* {@link LibusbJava#usb_set_altinterface(long, int)}).<br> * {@link LibusbJava#usb_set_altinterface(long, int)}).<br>
* *
* @return the alternate setting * @return the alternate setting
*/ */
public byte getBAlternateSetting() { public byte getBAlternateSetting() {
return bAlternateSetting; return bAlternateSetting;
} }
/** /**
* Returns the class code (Assigned by <a * Returns the class code (Assigned by <a
* href="http://www.usb.org">www.usb.org</a>).<br> * href="http://www.usb.org">www.usb.org</a>).<br>
* *
* @return the class code * @return the class code
*/ */
public byte getBInterfaceClass() { public byte getBInterfaceClass() {
return bInterfaceClass; return bInterfaceClass;
} }
/** /**
* Returns the number (identifier) of this interface.<br> * Returns the number (identifier) of this interface.<br>
* *
* @return the number (identifier) of this interface * @return the number (identifier) of this interface
*/ */
public byte getBInterfaceNumber() { public byte getBInterfaceNumber() {
return bInterfaceNumber; return bInterfaceNumber;
} }
/** /**
* Returns the protocol code (Assigned by <a * Returns the protocol code (Assigned by <a
* href="http://www.usb.org">www.usb.org</a>).<br> * href="http://www.usb.org">www.usb.org</a>).<br>
* *
* @return the protocol code * @return the protocol code
*/ */
public byte getBInterfaceProtocol() { public byte getBInterfaceProtocol() {
return bInterfaceProtocol; return bInterfaceProtocol;
} }
/** /**
* Returns the subclass code (Assigned by <a * Returns the subclass code (Assigned by <a
* href="http://www.usb.org">www.usb.org</a>).<br> * href="http://www.usb.org">www.usb.org</a>).<br>
* *
* @return the subclass code * @return the subclass code
*/ */
public byte getBInterfaceSubClass() { public byte getBInterfaceSubClass() {
return bInterfaceSubClass; return bInterfaceSubClass;
} }
/** /**
* Returns the number of endpoints used for this interface.<br> * Returns the number of endpoints used for this interface.<br>
* *
* @return the number of endpoints used for this interface * @return the number of endpoints used for this interface
*/ */
public byte getBNumEndpoints() { public byte getBNumEndpoints() {
return bNumEndpoints; return bNumEndpoints;
} }
/** /**
* Returns an array of endpoint descriptors.<br> * Returns an array of endpoint descriptors.<br>
* *
* @return an array of endpoint descriptors * @return an array of endpoint descriptors
*/ */
public Usb_Endpoint_Descriptor[] getEndpoint() { public Usb_Endpoint_Descriptor[] getEndpoint() {
return endpoint; return endpoint;
} }
/** /**
* Returns the data of extra descriptor(s) if available.<br> * Returns the data of extra descriptor(s) if available.<br>
* *
* @return null or a byte array with the extra descriptor data * @return null or a byte array with the extra descriptor data
*/ */
public byte[] getExtra() { public byte[] getExtra() {
return extra; return extra;
} }
/** /**
* Returns the number of bytes of the extra descriptor.<br> * Returns the number of bytes of the extra descriptor.<br>
* *
* @return the number of bytes of the extra descriptor * @return the number of bytes of the extra descriptor
*/ */
public int getExtralen() { public int getExtralen() {
return extralen; return extralen;
} }
/** /**
* Returns the index of the String descriptor describing this interface.<br> * Returns the index of the String descriptor describing this interface.<br>
* *
* @return the index of the String descriptor * @return the index of the String descriptor
*/ */
public byte getIInterface() { public byte getIInterface() {
return iInterface; return iInterface;
} }
} }

View File

@@ -1,60 +1,60 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava; package ch.ntb.inf.libusbJava;
import java.io.PrintStream; import java.io.PrintStream;
public class Utils { public class Utils {
public static void logBus(Usb_Bus bus) { public static void logBus(Usb_Bus bus) {
logBus(bus, System.out); logBus(bus, System.out);
} }
public static void logBus(Usb_Bus bus, PrintStream out) { public static void logBus(Usb_Bus bus, PrintStream out) {
Usb_Bus usb_Bus = bus; Usb_Bus usb_Bus = bus;
while (usb_Bus != null) { while (usb_Bus != null) {
out.println(usb_Bus.toString()); out.println(usb_Bus.toString());
Usb_Device dev = usb_Bus.getDevices(); Usb_Device dev = usb_Bus.getDevices();
while (dev != null) { while (dev != null) {
out.println("\t" + dev.toString()); out.println("\t" + dev.toString());
// Usb_Device_Descriptor // Usb_Device_Descriptor
Usb_Device_Descriptor defDesc = dev.getDescriptor(); Usb_Device_Descriptor defDesc = dev.getDescriptor();
out.println("\t\t" + defDesc.toString()); out.println("\t\t" + defDesc.toString());
// Usb_Config_Descriptor // Usb_Config_Descriptor
Usb_Config_Descriptor[] confDesc = dev.getConfig(); Usb_Config_Descriptor[] confDesc = dev.getConfig();
for (int i = 0; i < confDesc.length; i++) { for (int i = 0; i < confDesc.length; i++) {
out.println("\t\t" + confDesc[i].toString()); out.println("\t\t" + confDesc[i].toString());
Usb_Interface[] int_ = confDesc[i].getInterface(); Usb_Interface[] int_ = confDesc[i].getInterface();
if (int_ != null) { if (int_ != null) {
for (int j = 0; j < int_.length; j++) { for (int j = 0; j < int_.length; j++) {
out.println("\t\t\t" + int_[j].toString()); out.println("\t\t\t" + int_[j].toString());
Usb_Interface_Descriptor[] intDesc = int_[j] Usb_Interface_Descriptor[] intDesc = int_[j]
.getAltsetting(); .getAltsetting();
if (intDesc != null) { if (intDesc != null) {
for (int k = 0; k < intDesc.length; k++) { for (int k = 0; k < intDesc.length; k++) {
out.println("\t\t\t\t" out.println("\t\t\t\t"
+ intDesc[k].toString()); + intDesc[k].toString());
Usb_Endpoint_Descriptor[] epDesc = intDesc[k] Usb_Endpoint_Descriptor[] epDesc = intDesc[k]
.getEndpoint(); .getEndpoint();
if (epDesc != null) { if (epDesc != null) {
for (int e = 0; e < epDesc.length; e++) { for (int e = 0; e < epDesc.length; e++) {
out.println("\t\t\t\t\t" out.println("\t\t\t\t\t"
+ epDesc[e].toString()); + epDesc[e].toString());
} }
} }
} }
} }
} }
} }
} }
dev = dev.getNext(); dev = dev.getNext();
} }
usb_Bus = usb_Bus.getNext(); usb_Bus = usb_Bus.getNext();
} }
} }
} }

View File

@@ -1,42 +1,42 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.demo; package ch.ntb.inf.libusbJava.demo;
import ch.ntb.inf.libusbJava.LibusbJava; import ch.ntb.inf.libusbJava.LibusbJava;
import ch.ntb.inf.libusbJava.Usb_Bus; import ch.ntb.inf.libusbJava.Usb_Bus;
import ch.ntb.inf.libusbJava.Utils; import ch.ntb.inf.libusbJava.Utils;
/** /**
* Initalises Libusb and prints the bus(ses) with attached devices to the * Initalises Libusb and prints the bus(ses) with attached devices to the
* standard out.<br> * standard out.<br>
* *
* @deprecated This class will be removed with the legacy {@link LibusbJava} * @deprecated This class will be removed with the legacy {@link LibusbJava}
* class * class
*/ */
public class LogBus { public class LogBus {
private static void logBus() { private static void logBus() {
// if you don't use the ch.ntb.inf.libusbJava.Device class you must // if you don't use the ch.ntb.inf.libusbJava.Device class you must
// initialise // initialise
// Libusb before use // Libusb before use
LibusbJava.usb_init(); LibusbJava.usb_init();
LibusbJava.usb_find_busses(); LibusbJava.usb_find_busses();
LibusbJava.usb_find_devices(); LibusbJava.usb_find_devices();
// retrieve a object tree representing the bus with its devices and // retrieve a object tree representing the bus with its devices and
// descriptors // descriptors
Usb_Bus bus = LibusbJava.usb_get_busses(); Usb_Bus bus = LibusbJava.usb_get_busses();
// log the bus structure to standard out // log the bus structure to standard out
Utils.logBus(bus); Utils.logBus(bus);
} }
public static void main(String[] args) { public static void main(String[] args) {
logBus(); logBus();
} }
} }

View File

@@ -1,60 +1,60 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.demo; package ch.ntb.inf.libusbJava.demo;
import ch.ntb.inf.libusbJava.Device; import ch.ntb.inf.libusbJava.Device;
import ch.ntb.inf.libusbJava.USB; import ch.ntb.inf.libusbJava.USB;
import ch.ntb.inf.libusbJava.USBException; import ch.ntb.inf.libusbJava.USBException;
/** /**
* Demo class to demonstrate simple read and write operations to an USB device.<br> * Demo class to demonstrate simple read and write operations to an USB device.<br>
* *
*/ */
public class ReadWrite { public class ReadWrite {
private static void logData(byte[] data) { private static void logData(byte[] data) {
System.out.print("Data: "); System.out.print("Data: ");
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
System.out.print("0x" + Integer.toHexString(data[i] & 0xff) + " "); System.out.print("0x" + Integer.toHexString(data[i] & 0xff) + " ");
} }
System.out.println(); System.out.println();
} }
public static void main(String[] args) { public static void main(String[] args) {
// get a device instance with vendor id and product id // get a device instance with vendor id and product id
Device dev = USB.getDevice((short) 0x8235, (short) 0x0100); Device dev = USB.getDevice((short) 0x8235, (short) 0x0100);
try { try {
// data to write to the device // data to write to the device
byte[] data = new byte[] { 0, 1, 2, 3 }; byte[] data = new byte[] { 0, 1, 2, 3 };
// data read from the device // data read from the device
byte[] readData = new byte[data.length]; byte[] readData = new byte[data.length];
// open the device with configuration 1, interface 0 and without // open the device with configuration 1, interface 0 and without
// altinterface // altinterface
// this will initialise Libusb for you // this will initialise Libusb for you
dev.open(1, 0, -1); dev.open(1, 0, -1);
// write some data to the device // write some data to the device
// 0x03 is the endpoint address of the OUT endpoint 3 (from PC to // 0x03 is the endpoint address of the OUT endpoint 3 (from PC to
// device) // device)
dev.writeInterrupt(0x02, data, data.length, 2000, false); dev.writeInterrupt(0x02, data, data.length, 2000, false);
// read some data from the device // read some data from the device
// 0x84 is the endpoint address of the IN endpoint 4 (from PC to // 0x84 is the endpoint address of the IN endpoint 4 (from PC to
// device) // device)
// bit 7 (0x80) is set in case of an IN endpoint // bit 7 (0x80) is set in case of an IN endpoint
dev.readInterrupt(0x86, readData, readData.length, 2000, false); dev.readInterrupt(0x86, readData, readData.length, 2000, false);
// log the data from the device // log the data from the device
logData(readData); logData(readData);
// close the device // close the device
dev.close(); dev.close();
} catch (USBException e) { } catch (USBException e) {
// if an exception occures during connect or read/write an exception // if an exception occures during connect or read/write an exception
// is thrown // is thrown
e.printStackTrace(); e.printStackTrace();
} }
} }
} }

View File

@@ -1,150 +1,150 @@
package ch.ntb.inf.libusbJava.exceptions; package ch.ntb.inf.libusbJava.exceptions;
public class LibusbError extends Exception { public class LibusbError extends Exception {
private static final long serialVersionUID = 9096323614080207236L; private static final long serialVersionUID = 9096323614080207236L;
/** /**
* libusb error codes * libusb error codes
*/ */
public static final int ERROR_NONE = 0; public static final int ERROR_NONE = 0;
public static final int ERROR_IO = -1; public static final int ERROR_IO = -1;
public static final int ERROR_INVALID_PARAM = -2; public static final int ERROR_INVALID_PARAM = -2;
public static final int ERROR_ACCESS = -3; public static final int ERROR_ACCESS = -3;
public static final int ERROR_NO_DEVICE = -4; public static final int ERROR_NO_DEVICE = -4;
public static final int ERROR_NOT_FOUND = -5; public static final int ERROR_NOT_FOUND = -5;
public static final int ERROR_BUSY = -6; public static final int ERROR_BUSY = -6;
public static final int ERROR_TIMEOUT = -7; public static final int ERROR_TIMEOUT = -7;
public static final int ERROR_OVERFLOW = -8; public static final int ERROR_OVERFLOW = -8;
public static final int ERROR_PIPE = -9; public static final int ERROR_PIPE = -9;
public static final int ERROR_INTERRUPTED = -10; public static final int ERROR_INTERRUPTED = -10;
public static final int ERROR_NO_MEM = -11; public static final int ERROR_NO_MEM = -11;
public static final int ERROR_NOT_SUPPORTED = -12; public static final int ERROR_NOT_SUPPORTED = -12;
public static final int ERROR_OTHER = -99; public static final int ERROR_OTHER = -99;
public static final int ERROR_JAVA_REFERENCES_NOT_LOADED = -100; public static final int ERROR_JAVA_REFERENCES_NOT_LOADED = -100;
public static final int ERROR_JAVA_WRONG_ENVIRONMENT = -101; public static final int ERROR_JAVA_WRONG_ENVIRONMENT = -101;
public static final int ERROR_JAVA_ILEGAL_DEVICE_HANDLE = -102; public static final int ERROR_JAVA_ILEGAL_DEVICE_HANDLE = -102;
private int code = ERROR_NONE; private int code = ERROR_NONE;
public LibusbError(int code) public LibusbError(int code)
{ {
super("libusb result: " + getStringFromCode(code)); super("libusb result: " + getStringFromCode(code));
this.code = code; this.code = code;
} }
public int getErrorCode() public int getErrorCode()
{ {
return code; return code;
} }
public static String getStringFromCode(int code) public static String getStringFromCode(int code)
{ {
String result; String result;
switch (code) switch (code)
{ {
case ERROR_IO: case ERROR_IO:
{ {
result = "ERROR_IO"; result = "ERROR_IO";
break; break;
} }
case ERROR_INVALID_PARAM: case ERROR_INVALID_PARAM:
{ {
result = "ERROR_INVALID_PARAM"; result = "ERROR_INVALID_PARAM";
break; break;
} }
case ERROR_ACCESS: case ERROR_ACCESS:
{ {
result = "ERROR_ACCESS"; result = "ERROR_ACCESS";
break; break;
} }
case ERROR_NO_DEVICE: case ERROR_NO_DEVICE:
{ {
result = "ERROR_NO_DEVICE"; result = "ERROR_NO_DEVICE";
break; break;
} }
case ERROR_NOT_FOUND: case ERROR_NOT_FOUND:
{ {
result = "ERROR_NOT_FOUND"; result = "ERROR_NOT_FOUND";
break; break;
} }
case ERROR_BUSY: case ERROR_BUSY:
{ {
result = "ERROR_BUSY"; result = "ERROR_BUSY";
break; break;
} }
case ERROR_TIMEOUT: case ERROR_TIMEOUT:
{ {
result = "ERROR_TIMEOUT"; result = "ERROR_TIMEOUT";
break; break;
} }
case ERROR_OVERFLOW: case ERROR_OVERFLOW:
{ {
result = "ERROR_OVERFLOW"; result = "ERROR_OVERFLOW";
break; break;
} }
case ERROR_PIPE: case ERROR_PIPE:
{ {
result = "ERROR_PIPE"; result = "ERROR_PIPE";
break; break;
} }
case ERROR_INTERRUPTED: case ERROR_INTERRUPTED:
{ {
result = "ERROR_INTERRUPTED"; result = "ERROR_INTERRUPTED";
break; break;
} }
case ERROR_NO_MEM: case ERROR_NO_MEM:
{ {
result = "ERROR_NO_MEM"; result = "ERROR_NO_MEM";
break; break;
} }
case ERROR_NOT_SUPPORTED: case ERROR_NOT_SUPPORTED:
{ {
result = "ERROR_NOT_SUPPORTED"; result = "ERROR_NOT_SUPPORTED";
break; break;
} }
case ERROR_OTHER: case ERROR_OTHER:
{ {
result = "ERROR_OTHER"; result = "ERROR_OTHER";
break; break;
} }
case ERROR_JAVA_REFERENCES_NOT_LOADED: case ERROR_JAVA_REFERENCES_NOT_LOADED:
{ {
result = "ERROR_JAVA_REFERENCES_NOT_LOADED"; result = "ERROR_JAVA_REFERENCES_NOT_LOADED";
break; break;
} }
case ERROR_JAVA_WRONG_ENVIRONMENT: case ERROR_JAVA_WRONG_ENVIRONMENT:
{ {
result = "ERROR_JAVA_WRONG_ENVIRONMENT"; result = "ERROR_JAVA_WRONG_ENVIRONMENT";
break; break;
} }
case ERROR_JAVA_ILEGAL_DEVICE_HANDLE: case ERROR_JAVA_ILEGAL_DEVICE_HANDLE:
{ {
result = "ERROR_JAVA_ILEGAL_DEVICE_HANDLE"; result = "ERROR_JAVA_ILEGAL_DEVICE_HANDLE";
break; break;
} }
default: default:
{ {
result = "ERROR_UNKNWON (" + code + ")"; result = "ERROR_UNKNWON (" + code + ")";
break; break;
} }
} }
return result; return result;
} }
public String getErrorString() { public String getErrorString() {
return getStringFromCode(getErrorCode()); return getStringFromCode(getErrorCode());
} }
} }

View File

@@ -1,135 +1,135 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.logger; package ch.ntb.inf.libusbJava.logger;
import java.io.InputStream; import java.io.InputStream;
import java.util.Properties; import java.util.Properties;
import java.util.logging.ConsoleHandler; import java.util.logging.ConsoleHandler;
import java.util.logging.Handler; import java.util.logging.Handler;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.LogManager; import java.util.logging.LogManager;
import java.util.logging.Logger; import java.util.logging.Logger;
public class LogUtil { public class LogUtil {
// debug this class // debug this class
private static final boolean debugLogUtil = false; private static final boolean debugLogUtil = false;
private static final String PLUGIN_ID = "ch.ntb.inf.libusbJava"; private static final String PLUGIN_ID = "ch.ntb.inf.libusbJava";
private static final String PROPERTIES_FILE = ".configure"; private static final String PROPERTIES_FILE = ".configure";
private static final String LOGGER_WARNING = "Warning in class " private static final String LOGGER_WARNING = "Warning in class "
+ LogUtil.class.getName() + LogUtil.class.getName()
+ ": could not load the logger properties file " + PROPERTIES_FILE; + ": could not load the logger properties file " + PROPERTIES_FILE;
private static boolean debugEnabled; private static boolean debugEnabled;
static { static {
createLoggersFromProperties(); createLoggersFromProperties();
} }
private static void debugMsg(String method, String message) { private static void debugMsg(String method, String message) {
if (debugLogUtil) { if (debugLogUtil) {
System.out.println(method + ": " + message); System.out.println(method + ": " + message);
} }
} }
public static void setLevel(Logger logger, Level loglevel) { public static void setLevel(Logger logger, Level loglevel) {
Handler[] h = logger.getHandlers(); Handler[] h = logger.getHandlers();
for (int i = 0; i < h.length; i++) { for (int i = 0; i < h.length; i++) {
System.out.println("setLevel " + loglevel.toString()); System.out.println("setLevel " + loglevel.toString());
h[i].setLevel(loglevel); h[i].setLevel(loglevel);
} }
logger.setLevel(loglevel); logger.setLevel(loglevel);
} }
public static Logger getLogger(String name) { public static Logger getLogger(String name) {
debugMsg("getLogger", name); debugMsg("getLogger", name);
LogManager manager = LogManager.getLogManager(); LogManager manager = LogManager.getLogManager();
// check if logger is already registered // check if logger is already registered
Logger logger = manager.getLogger(name); Logger logger = manager.getLogger(name);
if (logger == null) { if (logger == null) {
logger = Logger.getLogger(name); logger = Logger.getLogger(name);
setLevel(logger, Level.OFF); setLevel(logger, Level.OFF);
manager.addLogger(logger); manager.addLogger(logger);
debugMsg("getLogger", "creating new logger"); debugMsg("getLogger", "creating new logger");
} }
if (logger.getLevel() == null) { if (logger.getLevel() == null) {
debugMsg("getLogger", "level == null -> setLevel to OFF "); debugMsg("getLogger", "level == null -> setLevel to OFF ");
setLevel(logger, Level.OFF); setLevel(logger, Level.OFF);
} }
debugMsg("getLogger", "logLevel " + logger.getLevel().getName()); debugMsg("getLogger", "logLevel " + logger.getLevel().getName());
return logger; return logger;
} }
private static void initLevel(Logger logger, Level loglevel) { private static void initLevel(Logger logger, Level loglevel) {
Handler[] h = logger.getHandlers(); Handler[] h = logger.getHandlers();
for (int i = 0; i < h.length; i++) { for (int i = 0; i < h.length; i++) {
logger.removeHandler(h[i]); logger.removeHandler(h[i]);
} }
Handler console = new ConsoleHandler(); Handler console = new ConsoleHandler();
console.setLevel(loglevel); console.setLevel(loglevel);
logger.addHandler(console); logger.addHandler(console);
logger.setLevel(loglevel); logger.setLevel(loglevel);
logger.setUseParentHandlers(false); logger.setUseParentHandlers(false);
} }
private static void createLoggersFromProperties() { private static void createLoggersFromProperties() {
try { try {
debugMsg(LogUtil.class.getName(), "createLoggersFromProperties"); debugMsg(LogUtil.class.getName(), "createLoggersFromProperties");
InputStream is = LogUtil.class.getClassLoader() InputStream is = LogUtil.class.getClassLoader()
.getResourceAsStream(PROPERTIES_FILE); .getResourceAsStream(PROPERTIES_FILE);
if (is == null) { if (is == null) {
System.err.println(LOGGER_WARNING); System.err.println(LOGGER_WARNING);
} else { } else {
Properties prop = new Properties(); Properties prop = new Properties();
prop.load(is); prop.load(is);
debugMsg("createLoggersFromProperties", debugMsg("createLoggersFromProperties",
"properties file loaded: " + PROPERTIES_FILE); "properties file loaded: " + PROPERTIES_FILE);
debugMsg("createLoggersFromProperties", "file content:\n" debugMsg("createLoggersFromProperties", "file content:\n"
+ prop.toString()); + prop.toString());
// get global debug enable flag // get global debug enable flag
debugEnabled = Boolean.parseBoolean(prop.getProperty(PLUGIN_ID debugEnabled = Boolean.parseBoolean(prop.getProperty(PLUGIN_ID
+ "/debug")); + "/debug"));
debugMsg("createLoggersFromProperties", "debuging enabled: " debugMsg("createLoggersFromProperties", "debuging enabled: "
+ debugEnabled); + debugEnabled);
// get and configure loggers // get and configure loggers
boolean moreLoggers = true; boolean moreLoggers = true;
int loggerCount = 0; int loggerCount = 0;
while (moreLoggers) { while (moreLoggers) {
String loggerProp = prop.getProperty(PLUGIN_ID String loggerProp = prop.getProperty(PLUGIN_ID
+ "/debug/logger" + loggerCount); + "/debug/logger" + loggerCount);
loggerCount++; loggerCount++;
if (loggerProp != null) { if (loggerProp != null) {
// parse string and get logger name and log level // parse string and get logger name and log level
int slashIndex = loggerProp.indexOf('/'); int slashIndex = loggerProp.indexOf('/');
String loggerName = loggerProp.substring(0, slashIndex) String loggerName = loggerProp.substring(0, slashIndex)
.trim(); .trim();
String logLevel = loggerProp.substring(slashIndex + 1, String logLevel = loggerProp.substring(slashIndex + 1,
loggerProp.length()); loggerProp.length());
// register logger // register logger
Level level; Level level;
if (debugEnabled) { if (debugEnabled) {
level = Level.parse(logLevel); level = Level.parse(logLevel);
} else { } else {
level = Level.OFF; level = Level.OFF;
} }
Logger logger = getLogger(loggerName); Logger logger = getLogger(loggerName);
initLevel(logger, level); initLevel(logger, level);
debugMsg("createLoggersFromProperties", debugMsg("createLoggersFromProperties",
"create logger " + loggerName + " with level " "create logger " + loggerName + " with level "
+ level.toString()); + level.toString());
} else { } else {
moreLoggers = false; moreLoggers = false;
} }
} }
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }

View File

@@ -1,16 +1,16 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html> <html>
<head></head> <head></head>
<body bgcolor="white"> <body bgcolor="white">
Logging related classes. Logging related classes.
<h2>Related Resources</h2> <h2>Related Resources</h2>
For more information about this project visit For more information about this project visit
<a <a
href="http://libusbjava.sourceforge.net">http://libusbjava.sourceforge.net</a> href="http://libusbjava.sourceforge.net">http://libusbjava.sourceforge.net</a>
. .
</body> </body>
</html> </html>

View File

@@ -1,26 +1,26 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html> <html>
<head></head> <head></head>
<body bgcolor="white"> <body bgcolor="white">
Includes the main classes for the Java libusb wrapper. Includes the main classes for the Java libusb wrapper.
<br> <br>
<i>LibusbJava.java</i> <i>LibusbJava.java</i>
is the JNI class to the is the JNI class to the
<i>LibusbJava.dll</i> <i>LibusbJava.dll</i>
. Every class starting with . Every class starting with
<i>Usb_</i> <i>Usb_</i>
represents a descriptor of the bus structure which is retrieved by represents a descriptor of the bus structure which is retrieved by
calling calling
<i>LibusbJava.usb_get_busses()</i> <i>LibusbJava.usb_get_busses()</i>
. .
<h2>Related Resources</h2> <h2>Related Resources</h2>
For more information about this project visit For more information about this project visit
<a <a
href="http://libusbjava.sourceforge.net">http://libusbjava.sourceforge.net</a> href="http://libusbjava.sourceforge.net">http://libusbjava.sourceforge.net</a>
. .
</body> </body>
</html> </html>

View File

@@ -1,211 +1,211 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.testApp; package ch.ntb.inf.libusbJava.testApp;
public abstract class AbstractDeviceInfo { public abstract class AbstractDeviceInfo {
private short idVendor; private short idVendor;
private short idProduct; private short idProduct;
private String filename = null; private String filename = null;
private String busName = null; private String busName = null;
private int timeout; private int timeout;
private int configuration; private int configuration;
private int interface_; private int interface_;
private int altinterface; private int altinterface;
private int outEPBulk = -1; private int outEPBulk = -1;
private int inEPBulk = -1; private int inEPBulk = -1;
private int outEPInt = -1; private int outEPInt = -1;
private int inEPInt = -1; private int inEPInt = -1;
private int sleepTimeout; private int sleepTimeout;
private int maxDataSize; private int maxDataSize;
private TransferMode mode; private TransferMode mode;
private boolean compareData = true; private boolean compareData = true;
private String manufacturer = null; private String manufacturer = null;
private String product = null; private String product = null;
private String serialVersion = null; private String serialVersion = null;
public static enum TransferMode { public static enum TransferMode {
Bulk, Interrupt Bulk, Interrupt
} }
public AbstractDeviceInfo() { public AbstractDeviceInfo() {
initValues(); initValues();
} }
abstract public void initValues(); abstract public void initValues();
public int getAltinterface() { public int getAltinterface() {
return altinterface; return altinterface;
} }
public int getConfiguration() { public int getConfiguration() {
return configuration; return configuration;
} }
public short getIdProduct() { public short getIdProduct() {
return idProduct; return idProduct;
} }
public short getIdVendor() { public short getIdVendor() {
return idVendor; return idVendor;
} }
public int getInEPBulk() { public int getInEPBulk() {
return inEPBulk; return inEPBulk;
} }
public int getInEPInt() { public int getInEPInt() {
return inEPInt; return inEPInt;
} }
public int getInterface() { public int getInterface() {
return interface_; return interface_;
} }
public int getMaxDataSize() { public int getMaxDataSize() {
return maxDataSize; return maxDataSize;
} }
public int getOutEPBulk() { public int getOutEPBulk() {
return outEPBulk; return outEPBulk;
} }
public int getOutEPInt() { public int getOutEPInt() {
return outEPInt; return outEPInt;
} }
public int getSleepTimeout() { public int getSleepTimeout() {
return sleepTimeout; return sleepTimeout;
} }
public int getTimeout() { public int getTimeout() {
return timeout; return timeout;
} }
public void setAltinterface(int altinterface) { public void setAltinterface(int altinterface) {
this.altinterface = altinterface; this.altinterface = altinterface;
} }
public void setConfiguration(int configuration) { public void setConfiguration(int configuration) {
this.configuration = configuration; this.configuration = configuration;
} }
public void setIdProduct(short idProduct) { public void setIdProduct(short idProduct) {
this.idProduct = idProduct; this.idProduct = idProduct;
} }
public void setIdVendor(short idVendor) { public void setIdVendor(short idVendor) {
this.idVendor = idVendor; this.idVendor = idVendor;
} }
public void setInEPBulk(int in_ep_bulk) { public void setInEPBulk(int in_ep_bulk) {
this.inEPBulk = in_ep_bulk; this.inEPBulk = in_ep_bulk;
} }
public void setInEPInt(int in_ep_int) { public void setInEPInt(int in_ep_int) {
this.inEPInt = in_ep_int; this.inEPInt = in_ep_int;
} }
public void setInterface(int interface_) { public void setInterface(int interface_) {
this.interface_ = interface_; this.interface_ = interface_;
} }
public void setMaxDataSize(int maxDataSize) { public void setMaxDataSize(int maxDataSize) {
this.maxDataSize = maxDataSize; this.maxDataSize = maxDataSize;
} }
public void setOutEPBulk(int out_ep_bulk) { public void setOutEPBulk(int out_ep_bulk) {
this.outEPBulk = out_ep_bulk; this.outEPBulk = out_ep_bulk;
} }
public void setOutEPInt(int out_ep_int) { public void setOutEPInt(int out_ep_int) {
this.outEPInt = out_ep_int; this.outEPInt = out_ep_int;
} }
public void setSleepTimeout(int sleepTimeout) { public void setSleepTimeout(int sleepTimeout) {
this.sleepTimeout = sleepTimeout; this.sleepTimeout = sleepTimeout;
} }
public void setTimeout(int timeout) { public void setTimeout(int timeout) {
this.timeout = timeout; this.timeout = timeout;
} }
public TransferMode getMode() { public TransferMode getMode() {
return mode; return mode;
} }
public void setMode(TransferMode mode) { public void setMode(TransferMode mode) {
this.mode = mode; this.mode = mode;
} }
public boolean doCompareData() { public boolean doCompareData() {
return compareData; return compareData;
} }
public void setDoCompareData(boolean compareData) { public void setDoCompareData(boolean compareData) {
this.compareData = compareData; this.compareData = compareData;
} }
public String getManufacturer() { public String getManufacturer() {
return manufacturer; return manufacturer;
} }
public void setManufacturer(String manufacturer) { public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer; this.manufacturer = manufacturer;
} }
public String getProduct() { public String getProduct() {
return product; return product;
} }
public void setProduct(String product) { public void setProduct(String product) {
this.product = product; this.product = product;
} }
public String getSerialVersion() { public String getSerialVersion() {
return serialVersion; return serialVersion;
} }
public void setSerialVersion(String serialVersion) { public void setSerialVersion(String serialVersion) {
this.serialVersion = serialVersion; this.serialVersion = serialVersion;
} }
public String getFilename() { public String getFilename() {
return filename; return filename;
} }
public void setFilename(String filename) { public void setFilename(String filename) {
this.filename = filename; this.filename = filename;
} }
public String getBusName() { public String getBusName() {
return busName; return busName;
} }
public void setBusName(String busName) { public void setBusName(String busName) {
this.busName = busName; this.busName = busName;
} }
} }

View File

@@ -1,191 +1,191 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.testApp; package ch.ntb.inf.libusbJava.testApp;
import java.util.Vector; import java.util.Vector;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import ch.ntb.inf.libusbJava.Device; import ch.ntb.inf.libusbJava.Device;
import ch.ntb.inf.libusbJava.USB; import ch.ntb.inf.libusbJava.USB;
import ch.ntb.inf.libusbJava.USBException; import ch.ntb.inf.libusbJava.USBException;
import ch.ntb.inf.libusbJava.logger.LogUtil; import ch.ntb.inf.libusbJava.logger.LogUtil;
public class TestDevice extends AbstractDeviceInfo { public class TestDevice extends AbstractDeviceInfo {
private static final Logger logger = LogUtil.getLogger("ch.ntb.inf.libusbJava.test"); private static final Logger logger = LogUtil.getLogger("ch.ntb.inf.libusbJava.test");
private String sendData = "0x5b 0x02 0x01 0x00 0x03 0x03 0xf0 0xf0 0x1f"; private String sendData = "0x5b 0x02 0x01 0x00 0x03 0x03 0xf0 0xf0 0x1f";
private Vector<String> transferTypes; private Vector<String> transferTypes;
private static Device dev = null; private static Device dev = null;
private TransferMode inMode; private TransferMode inMode;
private TransferMode outMode; private TransferMode outMode;
public TestDevice() { public TestDevice() {
logger.setLevel(Level.ALL); logger.setLevel(Level.ALL);
// create a vector for transfer types // create a vector for transfer types
transferTypes = new Vector<String>(); transferTypes = new Vector<String>();
transferTypes transferTypes
.add(TransferMode.Bulk.ordinal(), TransferMode.Bulk.name()); .add(TransferMode.Bulk.ordinal(), TransferMode.Bulk.name());
transferTypes.add(TransferMode.Interrupt.ordinal(), transferTypes.add(TransferMode.Interrupt.ordinal(),
TransferMode.Interrupt.name()); TransferMode.Interrupt.name());
inMode = TransferMode.Bulk; inMode = TransferMode.Bulk;
outMode = TransferMode.Bulk; outMode = TransferMode.Bulk;
} }
@Override @Override
public void initValues() { public void initValues() {
setIdVendor((short) 0x8235); setIdVendor((short) 0x8235);
setIdProduct((short) 0x0200); setIdProduct((short) 0x0200);
setTimeout(2000); setTimeout(2000);
setConfiguration(1); setConfiguration(1);
setInterface(0); setInterface(0);
setAltinterface(-1); setAltinterface(-1);
setOutEPBulk(0x01); setOutEPBulk(0x01);
setInEPBulk(0x82); setInEPBulk(0x82);
setOutEPInt(0x01); setOutEPInt(0x01);
setInEPInt(0x82); setInEPInt(0x82);
setSleepTimeout(2000); setSleepTimeout(2000);
setMaxDataSize(USB.FULLSPEED_MAX_BULK_PACKET_SIZE); setMaxDataSize(USB.FULLSPEED_MAX_BULK_PACKET_SIZE);
setMode(TransferMode.Bulk); setMode(TransferMode.Bulk);
} }
public void openUsbDevice() { public void openUsbDevice() {
dev = USB.getDevice(getIdVendor(), getIdProduct()); dev = USB.getDevice(getIdVendor(), getIdProduct());
try { try {
dev.open(getConfiguration(), getInterface(), getAltinterface()); dev.open(getConfiguration(), getInterface(), getAltinterface());
logger.info("device opened, interface claimed"); logger.info("device opened, interface claimed");
} catch (USBException e) { } catch (USBException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
public void closeUsbDevice() { public void closeUsbDevice() {
try { try {
if (dev != null) { if (dev != null) {
dev.close(); dev.close();
logger.info("device closed"); logger.info("device closed");
} else { } else {
logger.warning("no device to close -> open first"); logger.warning("no device to close -> open first");
} }
} catch (USBException e) { } catch (USBException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
public void resetUsbDevice() { public void resetUsbDevice() {
try { try {
if (dev != null) { if (dev != null) {
dev.reset(); dev.reset();
logger.info("device reset"); logger.info("device reset");
} else { } else {
logger.warning("no device to reset -> open first"); logger.warning("no device to reset -> open first");
} }
} catch (USBException e) { } catch (USBException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
public void write(byte[] data, int length) { public void write(byte[] data, int length) {
int lenWritten = 0; int lenWritten = 0;
try { try {
if (dev != null) { if (dev != null) {
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
switch (getOutMode()) { switch (getOutMode()) {
case Bulk: case Bulk:
lenWritten = dev.writeBulk(getOutEPBulk(), data, length, lenWritten = dev.writeBulk(getOutEPBulk(), data, length,
getTimeout(), false); getTimeout(), false);
sb.append("write_bulk, ep: 0x" sb.append("write_bulk, ep: 0x"
+ Integer.toHexString(getOutEPBulk()) + ", " + Integer.toHexString(getOutEPBulk()) + ", "
+ lenWritten + " Bytes sent: "); + lenWritten + " Bytes sent: ");
break; break;
case Interrupt: case Interrupt:
lenWritten = dev.writeInterrupt(getOutEPInt(), data, lenWritten = dev.writeInterrupt(getOutEPInt(), data,
length, getTimeout(), false); length, getTimeout(), false);
sb.append("write_interrupt, ep: 0x" sb.append("write_interrupt, ep: 0x"
+ Integer.toHexString(getOutEPInt()) + ", " + Integer.toHexString(getOutEPInt()) + ", "
+ lenWritten + " Bytes sent: "); + lenWritten + " Bytes sent: ");
break; break;
} }
for (int i = 0; i < lenWritten; i++) { for (int i = 0; i < lenWritten; i++) {
sb.append("0x" + String.format("%1$02X", data[i]) + " "); sb.append("0x" + String.format("%1$02X", data[i]) + " ");
} }
logger.info(sb.toString()); logger.info(sb.toString());
} else { } else {
logger.warning("no device opened"); logger.warning("no device opened");
} }
} catch (USBException e) { } catch (USBException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
public void read() { public void read() {
if (dev != null) { if (dev != null) {
byte[] data = new byte[dev.getMaxPacketSize()]; byte[] data = new byte[dev.getMaxPacketSize()];
int lenRead = 0; int lenRead = 0;
try { try {
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
switch (getInMode()) { switch (getInMode()) {
case Bulk: case Bulk:
lenRead = dev.readBulk(getInEPBulk(), data, dev lenRead = dev.readBulk(getInEPBulk(), data, dev
.getMaxPacketSize(), getTimeout(), false); .getMaxPacketSize(), getTimeout(), false);
sb.append("read_bulk, ep: 0x" sb.append("read_bulk, ep: 0x"
+ Integer.toHexString(getInEPBulk()) + ", " + Integer.toHexString(getInEPBulk()) + ", "
+ lenRead + " Bytes received: Data: "); + lenRead + " Bytes received: Data: ");
break; break;
case Interrupt: case Interrupt:
lenRead = dev.readInterrupt(getInEPInt(), data, dev lenRead = dev.readInterrupt(getInEPInt(), data, dev
.getMaxPacketSize(), getTimeout(), false); .getMaxPacketSize(), getTimeout(), false);
sb.append("read_interrupt, ep: 0x" sb.append("read_interrupt, ep: 0x"
+ Integer.toHexString(getInEPInt()) + ", " + Integer.toHexString(getInEPInt()) + ", "
+ lenRead + " Bytes received: Data: "); + lenRead + " Bytes received: Data: ");
break; break;
} }
for (int i = 0; i < lenRead; i++) { for (int i = 0; i < lenRead; i++) {
sb.append("0x" + String.format("%1$02X", data[i]) + " "); sb.append("0x" + String.format("%1$02X", data[i]) + " ");
} }
logger.info(sb.toString()); logger.info(sb.toString());
} catch (USBException e) { } catch (USBException e) {
e.printStackTrace(); e.printStackTrace();
} }
} else { } else {
logger.warning("no device opened"); logger.warning("no device opened");
} }
} }
public String getSendData() { public String getSendData() {
return sendData; return sendData;
} }
public void setSendData(String sendData) { public void setSendData(String sendData) {
this.sendData = sendData; this.sendData = sendData;
} }
public Vector<String> getTransferTypes() { public Vector<String> getTransferTypes() {
return transferTypes; return transferTypes;
} }
public TransferMode getOutMode() { public TransferMode getOutMode() {
return outMode; return outMode;
} }
public void setOutMode(TransferMode outMode) { public void setOutMode(TransferMode outMode) {
this.outMode = outMode; this.outMode = outMode;
} }
public TransferMode getInMode() { public TransferMode getInMode() {
return inMode; return inMode;
} }
public void setInMode(TransferMode inMode) { public void setInMode(TransferMode inMode) {
this.inMode = inMode; this.inMode = inMode;
} }
} }

View File

@@ -1,16 +1,16 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html> <html>
<head></head> <head></head>
<body bgcolor="white"> <body bgcolor="white">
A test application with a GUI to write to and read from a device (based on Swing). A test application with a GUI to write to and read from a device (based on Swing).
<h2>Related Resources</h2> <h2>Related Resources</h2>
For more information about this project visit For more information about this project visit
<a <a
href="http://libusbjava.sourceforge.net">http://libusbjava.sourceforge.net</a> href="http://libusbjava.sourceforge.net">http://libusbjava.sourceforge.net</a>
. .
</body> </body>
</html> </html>

View File

@@ -1,403 +1,403 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.usbView; package ch.ntb.inf.libusbJava.usbView;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Component; import java.awt.Component;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JMenu; import javax.swing.JMenu;
import javax.swing.JMenuBar; import javax.swing.JMenuBar;
import javax.swing.JMenuItem; import javax.swing.JMenuItem;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JPopupMenu; import javax.swing.JPopupMenu;
import javax.swing.JScrollPane; import javax.swing.JScrollPane;
import javax.swing.JSplitPane; import javax.swing.JSplitPane;
import javax.swing.JTextArea; import javax.swing.JTextArea;
import javax.swing.JTree; import javax.swing.JTree;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import javax.swing.tree.TreePath; import javax.swing.tree.TreePath;
import ch.ntb.inf.libusbJava.LibusbJava; import ch.ntb.inf.libusbJava.LibusbJava;
import ch.ntb.inf.libusbJava.Usb_Bus; import ch.ntb.inf.libusbJava.Usb_Bus;
import ch.ntb.inf.libusbJava.Usb_Config_Descriptor; import ch.ntb.inf.libusbJava.Usb_Config_Descriptor;
import ch.ntb.inf.libusbJava.Usb_Device; import ch.ntb.inf.libusbJava.Usb_Device;
import ch.ntb.inf.libusbJava.Usb_Device_Descriptor; import ch.ntb.inf.libusbJava.Usb_Device_Descriptor;
import ch.ntb.inf.libusbJava.Usb_Endpoint_Descriptor; import ch.ntb.inf.libusbJava.Usb_Endpoint_Descriptor;
import ch.ntb.inf.libusbJava.Usb_Interface_Descriptor; import ch.ntb.inf.libusbJava.Usb_Interface_Descriptor;
import ch.ntb.inf.libusbJava.testApp.TestApp; import ch.ntb.inf.libusbJava.testApp.TestApp;
import ch.ntb.inf.libusbJava.testApp.TestDevice; import ch.ntb.inf.libusbJava.testApp.TestDevice;
import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo.TransferMode; import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo.TransferMode;
public class UsbView extends JFrame { public class UsbView extends JFrame {
private static final long serialVersionUID = 4693554326612734263L; private static final long serialVersionUID = 4693554326612734263L;
private static final int APP_WIDTH = 600, APP_HIGHT = 800; private static final int APP_WIDTH = 600, APP_HIGHT = 800;
private JPanel jContentPane = null; private JPanel jContentPane = null;
private JMenuBar jJMenuBar = null; private JMenuBar jJMenuBar = null;
private JMenu commandsMenu = null; private JMenu commandsMenu = null;
private JMenuItem exitMenuItem = null; private JMenuItem exitMenuItem = null;
private JMenuItem updateMenuItem = null; private JMenuItem updateMenuItem = null;
JTree usbTree = null; JTree usbTree = null;
private JSplitPane jSplitPane = null; private JSplitPane jSplitPane = null;
private JTextArea jPropertiesArea = null; private JTextArea jPropertiesArea = null;
UsbTreeModel treeModel; UsbTreeModel treeModel;
JPopupMenu testAppPopup; JPopupMenu testAppPopup;
protected JPopupMenu endpointPopup; protected JPopupMenu endpointPopup;
/** /**
* This is the default constructor * This is the default constructor
*/ */
public UsbView() { public UsbView() {
super(); super();
initialize(); initialize();
} }
/** /**
* This method initializes this * This method initializes this
* *
* @return void * @return void
*/ */
private void initialize() { private void initialize() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setJMenuBar(getJJMenuBar()); this.setJMenuBar(getJJMenuBar());
this.setSize(APP_WIDTH, APP_HIGHT); this.setSize(APP_WIDTH, APP_HIGHT);
this.setContentPane(getJContentPane()); this.setContentPane(getJContentPane());
this.setTitle("USB View"); this.setTitle("USB View");
} }
/** /**
* This method initializes jContentPane * This method initializes jContentPane
* *
* @return javax.swing.JPanel * @return javax.swing.JPanel
*/ */
private JPanel getJContentPane() { private JPanel getJContentPane() {
if (jContentPane == null) { if (jContentPane == null) {
jContentPane = new JPanel(); jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout()); jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJSplitPane(), java.awt.BorderLayout.CENTER); jContentPane.add(getJSplitPane(), java.awt.BorderLayout.CENTER);
} }
return jContentPane; return jContentPane;
} }
/** /**
* This method initializes jJMenuBar * This method initializes jJMenuBar
* *
* @return javax.swing.JMenuBar * @return javax.swing.JMenuBar
*/ */
private JMenuBar getJJMenuBar() { private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) { if (jJMenuBar == null) {
jJMenuBar = new JMenuBar(); jJMenuBar = new JMenuBar();
jJMenuBar.add(getFileMenu()); jJMenuBar.add(getFileMenu());
} }
return jJMenuBar; return jJMenuBar;
} }
/** /**
* This method initializes jMenu * This method initializes jMenu
* *
* @return javax.swing.JMenu * @return javax.swing.JMenu
*/ */
private JMenu getFileMenu() { private JMenu getFileMenu() {
if (commandsMenu == null) { if (commandsMenu == null) {
commandsMenu = new JMenu(); commandsMenu = new JMenu();
commandsMenu.setText("Commands"); commandsMenu.setText("Commands");
commandsMenu.add(getUpdateMenuItem()); commandsMenu.add(getUpdateMenuItem());
commandsMenu.add(getExitMenuItem()); commandsMenu.add(getExitMenuItem());
} }
return commandsMenu; return commandsMenu;
} }
/** /**
* This method initializes jMenuItem * This method initializes jMenuItem
* *
* @return javax.swing.JMenuItem * @return javax.swing.JMenuItem
*/ */
private JMenuItem getExitMenuItem() { private JMenuItem getExitMenuItem() {
if (exitMenuItem == null) { if (exitMenuItem == null) {
exitMenuItem = new JMenuItem(); exitMenuItem = new JMenuItem();
exitMenuItem.setText("Exit"); exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new ActionListener() { exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
System.exit(0); System.exit(0);
} }
}); });
} }
return exitMenuItem; return exitMenuItem;
} }
/** /**
* This method initializes jMenuItem * This method initializes jMenuItem
* *
* @return javax.swing.JMenuItem * @return javax.swing.JMenuItem
*/ */
private JMenuItem getUpdateMenuItem() { private JMenuItem getUpdateMenuItem() {
if (updateMenuItem == null) { if (updateMenuItem == null) {
updateMenuItem = new JMenuItem(); updateMenuItem = new JMenuItem();
updateMenuItem.setText("Update"); updateMenuItem.setText("Update");
updateMenuItem.setAccelerator(KeyStroke.getKeyStroke( updateMenuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_F5, 0, true)); KeyEvent.VK_F5, 0, true));
updateMenuItem updateMenuItem
.addActionListener(new java.awt.event.ActionListener() { .addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) { public void actionPerformed(java.awt.event.ActionEvent e) {
// open bus // open bus
LibusbJava.usb_init(); LibusbJava.usb_init();
LibusbJava.usb_find_busses(); LibusbJava.usb_find_busses();
LibusbJava.usb_find_devices(); LibusbJava.usb_find_devices();
Usb_Bus bus = LibusbJava.usb_get_busses(); Usb_Bus bus = LibusbJava.usb_get_busses();
if (bus != null) { if (bus != null) {
treeModel.fireTreeStructureChanged(bus); treeModel.fireTreeStructureChanged(bus);
expandAll(usbTree); expandAll(usbTree);
} }
} }
}); });
} }
return updateMenuItem; return updateMenuItem;
} }
/** /**
* This method initializes usbTree * This method initializes usbTree
* *
* @return javax.swing.JTree * @return javax.swing.JTree
*/ */
private JTree getUsbTree() { private JTree getUsbTree() {
if (usbTree == null) { if (usbTree == null) {
// open bus // open bus
LibusbJava.usb_init(); LibusbJava.usb_init();
LibusbJava.usb_find_busses(); LibusbJava.usb_find_busses();
LibusbJava.usb_find_devices(); LibusbJava.usb_find_devices();
Usb_Bus bus = LibusbJava.usb_get_busses(); Usb_Bus bus = LibusbJava.usb_get_busses();
treeModel = new UsbTreeModel(bus, jPropertiesArea); treeModel = new UsbTreeModel(bus, jPropertiesArea);
usbTree = new JTree(treeModel); usbTree = new JTree(treeModel);
expandAll(usbTree); expandAll(usbTree);
usbTree.addTreeSelectionListener(treeModel); usbTree.addTreeSelectionListener(treeModel);
getJTestAppPopup(); getJTestAppPopup();
usbTree.addMouseListener(new MouseAdapter() { usbTree.addMouseListener(new MouseAdapter() {
@Override @Override
public void mousePressed(MouseEvent e) { public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger()) { if (e.isPopupTrigger()) {
Object source = e.getSource(); Object source = e.getSource();
if (source instanceof JTree) { if (source instanceof JTree) {
JTree tree = (JTree) source; JTree tree = (JTree) source;
TreePath path = tree.getPathForLocation(e.getX(), e TreePath path = tree.getPathForLocation(e.getX(), e
.getY()); .getY());
if (path != null if (path != null
&& (path.getLastPathComponent() instanceof Usb_Interface_Descriptor)) { && (path.getLastPathComponent() instanceof Usb_Interface_Descriptor)) {
usbTree.setSelectionPath(path); usbTree.setSelectionPath(path);
testAppPopup.show(tree, e.getX(), e.getY()); testAppPopup.show(tree, e.getX(), e.getY());
} }
} }
} }
} }
@Override @Override
public void mouseReleased(MouseEvent e) { public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) { if (e.isPopupTrigger()) {
if (e.isPopupTrigger()) { if (e.isPopupTrigger()) {
Object source = e.getSource(); Object source = e.getSource();
if (source instanceof JTree) { if (source instanceof JTree) {
JTree tree = (JTree) source; JTree tree = (JTree) source;
TreePath path = tree.getPathForLocation(e TreePath path = tree.getPathForLocation(e
.getX(), e.getY()); .getX(), e.getY());
if (path != null if (path != null
&& (path.getLastPathComponent() instanceof Usb_Interface_Descriptor)) { && (path.getLastPathComponent() instanceof Usb_Interface_Descriptor)) {
usbTree.setSelectionPath(path); usbTree.setSelectionPath(path);
testAppPopup.show(tree, e.getX(), e.getY()); testAppPopup.show(tree, e.getX(), e.getY());
} }
} }
} }
} }
} }
}); });
} }
return usbTree; return usbTree;
} }
private void getJTestAppPopup() { private void getJTestAppPopup() {
// Create the popup menu. // Create the popup menu.
testAppPopup = new JPopupMenu(); testAppPopup = new JPopupMenu();
endpointPopup = new JPopupMenu(); endpointPopup = new JPopupMenu();
JMenuItem menuItem = new JMenuItem( JMenuItem menuItem = new JMenuItem(
"Start a test application using this interface"); "Start a test application using this interface");
menuItem.addActionListener(new java.awt.event.ActionListener() { menuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) { public void actionPerformed(java.awt.event.ActionEvent e) {
initAndStartTestApp(); initAndStartTestApp();
} }
private void initAndStartTestApp() { private void initAndStartTestApp() {
JTree tree = (JTree) testAppPopup.getInvoker(); JTree tree = (JTree) testAppPopup.getInvoker();
TreePath path = tree.getSelectionPath(); TreePath path = tree.getSelectionPath();
TreePath parent = path; TreePath parent = path;
Usb_Endpoint_Descriptor[] endpoints = null; Usb_Endpoint_Descriptor[] endpoints = null;
int altinterface = -1; int altinterface = -1;
int interface_ = -1; int interface_ = -1;
int configuration = -1; int configuration = -1;
short vendorId = -1; short vendorId = -1;
short productId = -1; short productId = -1;
while (parent != null while (parent != null
&& !(parent.getLastPathComponent() instanceof Usb_Bus)) { && !(parent.getLastPathComponent() instanceof Usb_Bus)) {
Object usbObj = parent.getLastPathComponent(); Object usbObj = parent.getLastPathComponent();
if (usbObj instanceof Usb_Interface_Descriptor) { if (usbObj instanceof Usb_Interface_Descriptor) {
Usb_Interface_Descriptor usbIntDesc = (Usb_Interface_Descriptor) usbObj; Usb_Interface_Descriptor usbIntDesc = (Usb_Interface_Descriptor) usbObj;
endpoints = usbIntDesc.getEndpoint(); endpoints = usbIntDesc.getEndpoint();
interface_ = usbIntDesc.getBInterfaceNumber(); interface_ = usbIntDesc.getBInterfaceNumber();
altinterface = usbIntDesc.getBAlternateSetting(); altinterface = usbIntDesc.getBAlternateSetting();
} else if (usbObj instanceof Usb_Config_Descriptor) { } else if (usbObj instanceof Usb_Config_Descriptor) {
configuration = ((Usb_Config_Descriptor) usbObj) configuration = ((Usb_Config_Descriptor) usbObj)
.getBConfigurationValue(); .getBConfigurationValue();
} else if (usbObj instanceof Usb_Device) { } else if (usbObj instanceof Usb_Device) {
Usb_Device_Descriptor devDesc = ((Usb_Device) usbObj) Usb_Device_Descriptor devDesc = ((Usb_Device) usbObj)
.getDescriptor(); .getDescriptor();
productId = devDesc.getIdProduct(); productId = devDesc.getIdProduct();
vendorId = devDesc.getIdVendor(); vendorId = devDesc.getIdVendor();
} }
parent = parent.getParentPath(); parent = parent.getParentPath();
} }
if (parent != null) { if (parent != null) {
// present a dialog to select in/out endpoint // present a dialog to select in/out endpoint
// TODO: present dialog to select in/out endpoint // TODO: present dialog to select in/out endpoint
Usb_Endpoint_Descriptor[] outEPs = null; Usb_Endpoint_Descriptor[] outEPs = null;
int nofOutEPs = 0; int nofOutEPs = 0;
Usb_Endpoint_Descriptor[] inEPs = null; Usb_Endpoint_Descriptor[] inEPs = null;
int nofInEPs = 0; int nofInEPs = 0;
if (endpoints != null) { if (endpoints != null) {
outEPs = new Usb_Endpoint_Descriptor[endpoints.length]; outEPs = new Usb_Endpoint_Descriptor[endpoints.length];
inEPs = new Usb_Endpoint_Descriptor[endpoints.length]; inEPs = new Usb_Endpoint_Descriptor[endpoints.length];
for (int i = 0; i < endpoints.length; i++) { for (int i = 0; i < endpoints.length; i++) {
int epAddr = endpoints[i].getBEndpointAddress() & 0xFF; int epAddr = endpoints[i].getBEndpointAddress() & 0xFF;
if ((epAddr & 0x80) > 0) { if ((epAddr & 0x80) > 0) {
// is IN endpoint // is IN endpoint
inEPs[nofInEPs++] = endpoints[i]; inEPs[nofInEPs++] = endpoints[i];
} else { } else {
// is OUT endpoint // is OUT endpoint
outEPs[nofOutEPs++] = endpoints[i]; outEPs[nofOutEPs++] = endpoints[i];
} }
} }
} }
// create a new TestDevice // create a new TestDevice
TestDevice testDevice = new TestDevice(); TestDevice testDevice = new TestDevice();
testDevice.setIdProduct(productId); testDevice.setIdProduct(productId);
testDevice.setIdVendor(vendorId); testDevice.setIdVendor(vendorId);
testDevice.setAltinterface(altinterface); testDevice.setAltinterface(altinterface);
testDevice.setConfiguration(configuration); testDevice.setConfiguration(configuration);
testDevice.setInterface(interface_); testDevice.setInterface(interface_);
if (inEPs != null) { if (inEPs != null) {
for (int i = 0; i < nofInEPs; i++) { for (int i = 0; i < nofInEPs; i++) {
int type = inEPs[i].getBmAttributes() & 0x03; int type = inEPs[i].getBmAttributes() & 0x03;
switch (type) { switch (type) {
case Usb_Endpoint_Descriptor.USB_ENDPOINT_TRANSFER_TYPE_BULK: case Usb_Endpoint_Descriptor.USB_ENDPOINT_TRANSFER_TYPE_BULK:
testDevice.setInEPBulk(inEPs[i] testDevice.setInEPBulk(inEPs[i]
.getBEndpointAddress() & 0xff); .getBEndpointAddress() & 0xff);
testDevice.setInMode(TransferMode.Bulk); testDevice.setInMode(TransferMode.Bulk);
break; break;
case Usb_Endpoint_Descriptor.USB_ENDPOINT_TRANSFER_TYPE_INTERRUPT: case Usb_Endpoint_Descriptor.USB_ENDPOINT_TRANSFER_TYPE_INTERRUPT:
testDevice.setInEPInt(inEPs[i] testDevice.setInEPInt(inEPs[i]
.getBEndpointAddress() & 0xff); .getBEndpointAddress() & 0xff);
testDevice.setInMode(TransferMode.Interrupt); testDevice.setInMode(TransferMode.Interrupt);
break; break;
default: default:
break; break;
} }
} }
} }
if (outEPs != null) { if (outEPs != null) {
for (int i = 0; i < nofOutEPs; i++) { for (int i = 0; i < nofOutEPs; i++) {
int type = outEPs[i].getBmAttributes() & 0x03; int type = outEPs[i].getBmAttributes() & 0x03;
switch (type) { switch (type) {
case Usb_Endpoint_Descriptor.USB_ENDPOINT_TRANSFER_TYPE_BULK: case Usb_Endpoint_Descriptor.USB_ENDPOINT_TRANSFER_TYPE_BULK:
testDevice.setOutEPBulk(outEPs[i] testDevice.setOutEPBulk(outEPs[i]
.getBEndpointAddress() & 0xff); .getBEndpointAddress() & 0xff);
testDevice.setOutMode(TransferMode.Bulk); testDevice.setOutMode(TransferMode.Bulk);
break; break;
case Usb_Endpoint_Descriptor.USB_ENDPOINT_TRANSFER_TYPE_INTERRUPT: case Usb_Endpoint_Descriptor.USB_ENDPOINT_TRANSFER_TYPE_INTERRUPT:
testDevice.setOutEPInt(outEPs[i] testDevice.setOutEPInt(outEPs[i]
.getBEndpointAddress() & 0xff); .getBEndpointAddress() & 0xff);
testDevice.setOutMode(TransferMode.Interrupt); testDevice.setOutMode(TransferMode.Interrupt);
break; break;
default: default:
break; break;
} }
} }
} }
// open a new testApp // open a new testApp
TestApp app = new TestApp(testDevice); TestApp app = new TestApp(testDevice);
app.setVisible(true); app.setVisible(true);
} else { } else {
System.out.println("error, could not find device node"); System.out.println("error, could not find device node");
// TODO: handle error // TODO: handle error
} }
} }
}); });
testAppPopup.add(menuItem); testAppPopup.add(menuItem);
} }
/** /**
* This method initializes jSplitPane * This method initializes jSplitPane
* *
* @return javax.swing.JSplitPane * @return javax.swing.JSplitPane
*/ */
private JSplitPane getJSplitPane() { private JSplitPane getJSplitPane() {
if (jSplitPane == null) { if (jSplitPane == null) {
jSplitPane = new JSplitPane(); jSplitPane = new JSplitPane();
jSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); jSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jSplitPane.setContinuousLayout(true); jSplitPane.setContinuousLayout(true);
jSplitPane.setDividerLocation(APP_HIGHT / 2); jSplitPane.setDividerLocation(APP_HIGHT / 2);
jSplitPane jSplitPane
.setBottomComponent(createScrollPane(getJPropertiesArea())); .setBottomComponent(createScrollPane(getJPropertiesArea()));
jSplitPane.setTopComponent(createScrollPane(getUsbTree())); jSplitPane.setTopComponent(createScrollPane(getUsbTree()));
} }
return jSplitPane; return jSplitPane;
} }
/** /**
* This method initializes jPropertiesArea * This method initializes jPropertiesArea
* *
* @return javax.swing.JTextArea * @return javax.swing.JTextArea
*/ */
private JTextArea getJPropertiesArea() { private JTextArea getJPropertiesArea() {
if (jPropertiesArea == null) { if (jPropertiesArea == null) {
jPropertiesArea = new JTextArea(); jPropertiesArea = new JTextArea();
} }
return jPropertiesArea; return jPropertiesArea;
} }
private JScrollPane createScrollPane(Component view) { private JScrollPane createScrollPane(Component view) {
JScrollPane scrollPane = new JScrollPane(view); JScrollPane scrollPane = new JScrollPane(view);
return scrollPane; return scrollPane;
} }
/** /**
* Launches this application * Launches this application
*/ */
public static void main(String[] args) { public static void main(String[] args) {
UsbView application = new UsbView(); UsbView application = new UsbView();
application.setVisible(true); application.setVisible(true);
} }
void expandAll(JTree tree) { void expandAll(JTree tree) {
for (int row = 0; row < tree.getRowCount(); row++) { for (int row = 0; row < tree.getRowCount(); row++) {
tree.expandRow(row); tree.expandRow(row);
} }
} }
} }

View File

@@ -1,17 +1,17 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html> <html>
<head></head> <head></head>
<body bgcolor="white"> <body bgcolor="white">
Displays the bus and device information of the currently attached Displays the bus and device information of the currently attached
devices in a tree (based on Swing). devices in a tree (based on Swing).
<h2>Related Resources</h2> <h2>Related Resources</h2>
For more information about this project visit For more information about this project visit
<a <a
href="http://libusbjava.sourceforge.net">http://libusbjava.sourceforge.net</a> href="http://libusbjava.sourceforge.net">http://libusbjava.sourceforge.net</a>
. .
</body> </body>
</html> </html>

View File

@@ -1,334 +1,334 @@
package ch.ntb.inf.libusbJava.test; package ch.ntb.inf.libusbJava.test;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import org.junit.Test; import org.junit.Test;
import ch.ntb.inf.libusbJava.LibusbJava1; import ch.ntb.inf.libusbJava.LibusbJava1;
import ch.ntb.inf.libusbJava.Usb_Device; import ch.ntb.inf.libusbJava.Usb_Device;
import ch.ntb.inf.libusbJava.exceptions.LibusbError; import ch.ntb.inf.libusbJava.exceptions.LibusbError;
public class LibusbJava1Test { public class LibusbJava1Test {
/** /**
* This method does not need to be tested. This test only exists to document * This method does not need to be tested. This test only exists to document
* the fact that this function has not been forgotten. * the fact that this function has not been forgotten.
*/ */
@Test @Test
public void testLibusb_set_debug() { public void testLibusb_set_debug() {
} }
@Test @Test
public void testLibusb_init() { public void testLibusb_init() {
try { try {
long handle = LibusbJava1.libusb_init(); long handle = LibusbJava1.libusb_init();
LibusbJava1.libusb_exit(handle); LibusbJava1.libusb_exit(handle);
} catch (LibusbError e) { } catch (LibusbError e) {
fail("Initialization failed, Code: " + e.getErrorString()); fail("Initialization failed, Code: " + e.getErrorString());
} }
} }
/** /**
* This method can not be tested (yet). This test only exists to document * This method can not be tested (yet). This test only exists to document
* the fact that this function has not been forgotten. * the fact that this function has not been forgotten.
*/ */
@Test @Test
public void testLibusb_exit() { public void testLibusb_exit() {
} }
@Test @Test
public void testLibusb_get_device_list() throws LibusbError { public void testLibusb_get_device_list() throws LibusbError {
long handle = LibusbJava1.libusb_init(); long handle = LibusbJava1.libusb_init();
Usb_Device devices = LibusbJava1.libusb_get_device_list(handle); Usb_Device devices = LibusbJava1.libusb_get_device_list(handle);
assertNotNull("Got devices", devices); assertNotNull("Got devices", devices);
System.out.println(devices.toString()); System.out.println(devices.toString());
assertNull("Bus is null", devices.getBus()); assertNull("Bus is null", devices.getBus());
LibusbJava1.libusb_exit(handle); LibusbJava1.libusb_exit(handle);
} }
@Test @Test
public void testLibusb_get_bus_number() throws LibusbError { public void testLibusb_get_bus_number() throws LibusbError {
long handle = LibusbJava1.libusb_init(); long handle = LibusbJava1.libusb_init();
Usb_Device devices = LibusbJava1.libusb_get_device_list(handle); Usb_Device devices = LibusbJava1.libusb_get_device_list(handle);
assertNotNull("Got devices", devices); assertNotNull("Got devices", devices);
System.out.println(devices.getBus()); System.out.println(devices.getBus());
LibusbJava1.libusb_exit(handle); LibusbJava1.libusb_exit(handle);
} }
@Test @Test
public void testLibusb_get_max_iso_packet_size() { public void testLibusb_get_max_iso_packet_size() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_ref_device() { public void testLibusb_ref_device() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_unref_device() { public void testLibusb_unref_device() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_open() { public void testLibusb_open() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_open_device_with_vid_pid() { public void testLibusb_open_device_with_vid_pid() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_close() { public void testLibusb_close() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_get_device() { public void testLibusb_get_device() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_get_configuration() { public void testLibusb_get_configuration() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_set_configuration() { public void testLibusb_set_configuration() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_claim_interface() { public void testLibusb_claim_interface() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_release_interface() { public void testLibusb_release_interface() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_set_interface_alt_setting() { public void testLibusb_set_interface_alt_setting() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_clear_halt() { public void testLibusb_clear_halt() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_reset_device() { public void testLibusb_reset_device() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_kernel_driver_active() { public void testLibusb_kernel_driver_active() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_detach_kernel_driver() { public void testLibusb_detach_kernel_driver() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_attach_kernel_driver() { public void testLibusb_attach_kernel_driver() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_get_active_config_descriptor() { public void testLibusb_get_active_config_descriptor() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_get_string_descriptor_ascii() { public void testLibusb_get_string_descriptor_ascii() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_get_descriptor() { public void testLibusb_get_descriptor() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_get_string_descriptor() { public void testLibusb_get_string_descriptor() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_alloc_transfer() { public void testLibusb_alloc_transfer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_free_transfer() { public void testLibusb_free_transfer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_submit_transfer() { public void testLibusb_submit_transfer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_cancel_transfer() { public void testLibusb_cancel_transfer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_control_transfer_get_data() { public void testLibusb_control_transfer_get_data() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_control_transfer_get_setup() { public void testLibusb_control_transfer_get_setup() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_fill_control_setup() { public void testLibusb_fill_control_setup() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_fill_control_transfer() { public void testLibusb_fill_control_transfer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_fill_bulk_transfer() { public void testLibusb_fill_bulk_transfer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_fill_interrupt_transfer() { public void testLibusb_fill_interrupt_transfer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_fill_iso_transfer() { public void testLibusb_fill_iso_transfer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_set_iso_packet_lengths() { public void testLibusb_set_iso_packet_lengths() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_get_iso_packet_buffer() { public void testLibusb_get_iso_packet_buffer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_get_iso_packet_buffer_simple() { public void testLibusb_get_iso_packet_buffer_simple() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_try_lock_events() { public void testLibusb_try_lock_events() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_lock_events() { public void testLibusb_lock_events() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_unlock_events() { public void testLibusb_unlock_events() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_event_handling_ok() { public void testLibusb_event_handling_ok() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_event_handler_active() { public void testLibusb_event_handler_active() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_lock_event_waiters() { public void testLibusb_lock_event_waiters() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_unlock_event_waiters() { public void testLibusb_unlock_event_waiters() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_wait_for_event() { public void testLibusb_wait_for_event() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_handle_events_timeout() { public void testLibusb_handle_events_timeout() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_handle_events() { public void testLibusb_handle_events() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_handle_events_locked() { public void testLibusb_handle_events_locked() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_pollfds_handle_timeouts() { public void testLibusb_pollfds_handle_timeouts() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_get_next_timeout() { public void testLibusb_get_next_timeout() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_set_pollfd_notifiers() { public void testLibusb_set_pollfd_notifiers() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_get_pollfds() { public void testLibusb_get_pollfds() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_control_transfer() { public void testLibusb_control_transfer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_bulk_transfer() { public void testLibusb_bulk_transfer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_interrupt_transfer() { public void testLibusb_interrupt_transfer() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testLibusb_strerror() { public void testLibusb_strerror() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
@Test @Test
public void testIsHandleValid() { public void testIsHandleValid() {
fail("Not yet implemented"); fail("Not yet implemented");
} }
} }

View File

@@ -1,199 +1,199 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2008 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2008 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.test; package ch.ntb.inf.libusbJava.test;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.io.PrintStream; import java.io.PrintStream;
import java.util.Properties; import java.util.Properties;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.junit.AfterClass; import org.junit.AfterClass;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import ch.ntb.inf.libusbJava.Device; import ch.ntb.inf.libusbJava.Device;
import ch.ntb.inf.libusbJava.LibusbJava; import ch.ntb.inf.libusbJava.LibusbJava;
import ch.ntb.inf.libusbJava.USB; import ch.ntb.inf.libusbJava.USB;
import ch.ntb.inf.libusbJava.USBException; import ch.ntb.inf.libusbJava.USBException;
import ch.ntb.inf.libusbJava.Usb_Bus; import ch.ntb.inf.libusbJava.Usb_Bus;
import ch.ntb.inf.libusbJava.Utils; import ch.ntb.inf.libusbJava.Utils;
import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo; import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo;
import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo.TransferMode; import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo.TransferMode;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public class MemoryLeakTest { public class MemoryLeakTest {
private static final String testdevicePropertiesFile = "testdevice.properties"; private static final String testdevicePropertiesFile = "testdevice.properties";
private static final String deviceInfoKey = "testdeviceInfo"; private static final String deviceInfoKey = "testdeviceInfo";
private static AbstractDeviceInfo devinfo; private static AbstractDeviceInfo devinfo;
private static byte[] testData; private static byte[] testData;
private static byte[] readData; private static byte[] readData;
private static Device dev; private static Device dev;
private static Logger log = Logger private static Logger log = Logger
.getLogger(MemoryLeakTest.class.getName()); .getLogger(MemoryLeakTest.class.getName());
@BeforeClass @BeforeClass
public static void setUp() throws Exception { public static void setUp() throws Exception {
// load the device info class with the key // load the device info class with the key
// from 'testdevice.properties' // from 'testdevice.properties'
InputStream propInputStream = new FileInputStream( InputStream propInputStream = new FileInputStream(
testdevicePropertiesFile); testdevicePropertiesFile);
Properties devInfoProp = new Properties(); Properties devInfoProp = new Properties();
devInfoProp.load(propInputStream); devInfoProp.load(propInputStream);
String devInfoClazzName = devInfoProp.getProperty(deviceInfoKey); String devInfoClazzName = devInfoProp.getProperty(deviceInfoKey);
if (devInfoClazzName == null) { if (devInfoClazzName == null) {
throw new Exception("property " + deviceInfoKey throw new Exception("property " + deviceInfoKey
+ " not found in file " + testdevicePropertiesFile); + " not found in file " + testdevicePropertiesFile);
} }
Class<?> devInfoClazz = Class.forName(devInfoClazzName); Class<?> devInfoClazz = Class.forName(devInfoClazzName);
devinfo = (AbstractDeviceInfo) devInfoClazz.newInstance(); devinfo = (AbstractDeviceInfo) devInfoClazz.newInstance();
// setup test data // setup test data
testData = new byte[devinfo.getMaxDataSize()]; testData = new byte[devinfo.getMaxDataSize()];
readData = new byte[testData.length]; readData = new byte[testData.length];
// initialise the device // initialise the device
dev = USB.getDevice(devinfo.getIdVendor(), devinfo.getIdProduct()); dev = USB.getDevice(devinfo.getIdVendor(), devinfo.getIdProduct());
assertNotNull(dev); assertNotNull(dev);
// print the devices // print the devices
LibusbJava.usb_init(); LibusbJava.usb_init();
// LibusbJava.usb_find_busses(); // LibusbJava.usb_find_busses();
LibusbJava.usb_find_devices(); LibusbJava.usb_find_devices();
Usb_Bus bus = LibusbJava.usb_get_busses(); Usb_Bus bus = LibusbJava.usb_get_busses();
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos); PrintStream ps = new PrintStream(baos);
Utils.logBus(bus, ps); Utils.logBus(bus, ps);
log.info(baos.toString()); log.info(baos.toString());
} }
@Test @Test
public void initalReset() throws Exception { public void initalReset() throws Exception {
doOpen(); doOpen();
dev.reset(); dev.reset();
timeout(); timeout();
} }
@Test @Test
public void bulkWriteReadMultiple() throws Exception { public void bulkWriteReadMultiple() throws Exception {
final int NumberOfIterations = 3000; final int NumberOfIterations = 3000;
devinfo.setMode(TransferMode.Bulk); devinfo.setMode(TransferMode.Bulk);
doOpen(); doOpen();
for (int i = 0; i < NumberOfIterations; i++) { for (int i = 0; i < NumberOfIterations; i++) {
doWriteRead(); doWriteRead();
if (i % 1000 == 0) { if (i % 1000 == 0) {
System.out.print("."); System.out.print(".");
} }
} }
doClose(); doClose();
} }
@Test @Test
public void interruptWriteReadMultiple() throws Exception { public void interruptWriteReadMultiple() throws Exception {
final int NumberOfIterations = 3000; final int NumberOfIterations = 3000;
devinfo.setMode(TransferMode.Interrupt); devinfo.setMode(TransferMode.Interrupt);
doOpen(); doOpen();
for (int i = 0; i < NumberOfIterations; i++) { for (int i = 0; i < NumberOfIterations; i++) {
doWriteRead(); doWriteRead();
if (i % 1000 == 0) { if (i % 1000 == 0) {
System.out.print("."); System.out.print(".");
} }
} }
doClose(); doClose();
} }
private void closeOnException() { private void closeOnException() {
try { try {
dev.close(); dev.close();
} catch (USBException e1) { } catch (USBException e1) {
// ignore exceptions // ignore exceptions
} }
} }
@AfterClass @AfterClass
public static void tearDown() throws Exception { public static void tearDown() throws Exception {
if (dev != null && dev.isOpen()) { if (dev != null && dev.isOpen()) {
dev.close(); dev.close();
} }
} }
private void doOpen() throws USBException { private void doOpen() throws USBException {
dev.open(devinfo.getConfiguration(), devinfo.getInterface(), devinfo dev.open(devinfo.getConfiguration(), devinfo.getInterface(), devinfo
.getAltinterface()); .getAltinterface());
} }
private void doClose() throws USBException { private void doClose() throws USBException {
dev.close(); dev.close();
} }
private void doWriteRead() throws Exception { private void doWriteRead() throws Exception {
initTestData(); initTestData();
try { try {
if (devinfo.getMode().equals(TransferMode.Bulk)) { if (devinfo.getMode().equals(TransferMode.Bulk)) {
if (devinfo.getOutEPBulk() != -1) { if (devinfo.getOutEPBulk() != -1) {
dev.writeBulk(devinfo.getOutEPBulk(), testData, dev.writeBulk(devinfo.getOutEPBulk(), testData,
testData.length, devinfo.getTimeout(), false); testData.length, devinfo.getTimeout(), false);
} }
if (devinfo.getInEPBulk() != -1) { if (devinfo.getInEPBulk() != -1) {
dev.readBulk(devinfo.getInEPBulk(), readData, dev.readBulk(devinfo.getInEPBulk(), readData,
readData.length, devinfo.getTimeout(), false); readData.length, devinfo.getTimeout(), false);
} }
} else if (devinfo.getMode().equals(TransferMode.Interrupt)) { } else if (devinfo.getMode().equals(TransferMode.Interrupt)) {
if (devinfo.getOutEPInt() != -1) { if (devinfo.getOutEPInt() != -1) {
dev.writeInterrupt(devinfo.getOutEPInt(), testData, dev.writeInterrupt(devinfo.getOutEPInt(), testData,
testData.length, devinfo.getTimeout(), false); testData.length, devinfo.getTimeout(), false);
} }
if (devinfo.getInEPInt() != -1) { if (devinfo.getInEPInt() != -1) {
dev.readInterrupt(devinfo.getInEPInt(), readData, dev.readInterrupt(devinfo.getInEPInt(), readData,
readData.length, devinfo.getTimeout(), false); readData.length, devinfo.getTimeout(), false);
} }
} }
if (devinfo.doCompareData()) { if (devinfo.doCompareData()) {
compare(testData, readData); compare(testData, readData);
} }
} catch (AssertionError e) { } catch (AssertionError e) {
closeOnException(); closeOnException();
throw e; throw e;
} catch (Exception e) { } catch (Exception e) {
closeOnException(); closeOnException();
throw e; throw e;
} }
} }
private static void compare(byte[] d1, byte[] d2) { private static void compare(byte[] d1, byte[] d2) {
final int minLength = Math.min(d1.length, d2.length); final int minLength = Math.min(d1.length, d2.length);
for (int i = 0; i < minLength; i++) { for (int i = 0; i < minLength; i++) {
assertEquals(d1[i], d2[i]); assertEquals(d1[i], d2[i]);
} }
} }
private static void timeout() { private static void timeout() {
try { try {
Thread.sleep(devinfo.getSleepTimeout()); Thread.sleep(devinfo.getSleepTimeout());
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
private static void initTestData() { private static void initTestData() {
for (int i = 0; i < testData.length; i++) { for (int i = 0; i < testData.length; i++) {
testData[i] = (byte) (Math.random() * 0xff); testData[i] = (byte) (Math.random() * 0xff);
readData[i] = 0; readData[i] = 0;
} }
} }
} }

View File

@@ -1,239 +1,239 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2007 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2007 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.test; package ch.ntb.inf.libusbJava.test;
import ch.ntb.inf.libusbJava.LibusbJava; import ch.ntb.inf.libusbJava.LibusbJava;
import ch.ntb.inf.libusbJava.Usb_Bus; import ch.ntb.inf.libusbJava.Usb_Bus;
import ch.ntb.inf.libusbJava.Usb_Config_Descriptor; import ch.ntb.inf.libusbJava.Usb_Config_Descriptor;
import ch.ntb.inf.libusbJava.Usb_Device; import ch.ntb.inf.libusbJava.Usb_Device;
import ch.ntb.inf.libusbJava.Usb_Endpoint_Descriptor; import ch.ntb.inf.libusbJava.Usb_Endpoint_Descriptor;
import ch.ntb.inf.libusbJava.Usb_Interface; import ch.ntb.inf.libusbJava.Usb_Interface;
import ch.ntb.inf.libusbJava.Usb_Interface_Descriptor; import ch.ntb.inf.libusbJava.Usb_Interface_Descriptor;
/** /**
* This class replicates the code from testlibusb.c supplied in the * This class replicates the code from testlibusb.c supplied in the
* libusb-0.1.12 release. * libusb-0.1.12 release.
*/ */
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public class TestLibUsbJava { public class TestLibUsbJava {
static boolean verbose; static boolean verbose;
/** /**
* prints out endpoint info * prints out endpoint info
* *
* @param endpoint * @param endpoint
* The end point. * The end point.
*/ */
private static void printEndpoint(Usb_Endpoint_Descriptor endpoint) { private static void printEndpoint(Usb_Endpoint_Descriptor endpoint) {
System.out.print(String.format(" bEndpointAddress: %02xh\n", System.out.print(String.format(" bEndpointAddress: %02xh\n",
endpoint.getBEndpointAddress())); endpoint.getBEndpointAddress()));
System.out.print(String.format(" bmAttributes: %02xh\n", System.out.print(String.format(" bmAttributes: %02xh\n",
endpoint.getBmAttributes())); endpoint.getBmAttributes()));
System.out.print(String.format(" wMaxPacketSize: %d\n", endpoint System.out.print(String.format(" wMaxPacketSize: %d\n", endpoint
.getWMaxPacketSize())); .getWMaxPacketSize()));
System.out.print(String.format(" bInterval: %d\n", endpoint System.out.print(String.format(" bInterval: %d\n", endpoint
.getBInterval())); .getBInterval()));
System.out.print(String.format(" bRefresh: %d\n", endpoint System.out.print(String.format(" bRefresh: %d\n", endpoint
.getBRefresh())); .getBRefresh()));
System.out.print(String.format(" bSynchAddress: %d\n", endpoint System.out.print(String.format(" bSynchAddress: %d\n", endpoint
.getBSynchAddress())); .getBSynchAddress()));
} }
/** /**
* prints out the interface descriptor * prints out the interface descriptor
* *
* @param interfaceDescript * @param interfaceDescript
* The interface descriptor. * The interface descriptor.
*/ */
private static void printAltsetting( private static void printAltsetting(
Usb_Interface_Descriptor interfaceDescript) { Usb_Interface_Descriptor interfaceDescript) {
System.out.print(String.format(" bInterfaceNumber: %d\n", System.out.print(String.format(" bInterfaceNumber: %d\n",
interfaceDescript.getBInterfaceNumber())); interfaceDescript.getBInterfaceNumber()));
System.out.print(String.format(" bAlternateSetting: %d\n", System.out.print(String.format(" bAlternateSetting: %d\n",
interfaceDescript.getBAlternateSetting())); interfaceDescript.getBAlternateSetting()));
System.out.print(String.format(" bNumEndpoints: %d\n", System.out.print(String.format(" bNumEndpoints: %d\n",
interfaceDescript.getBNumEndpoints())); interfaceDescript.getBNumEndpoints()));
System.out.print(String.format(" bInterfaceClass: %d\n", System.out.print(String.format(" bInterfaceClass: %d\n",
interfaceDescript.getBInterfaceClass())); interfaceDescript.getBInterfaceClass()));
System.out.print(String.format(" bInterfaceSubClass: %d\n", System.out.print(String.format(" bInterfaceSubClass: %d\n",
interfaceDescript.getBInterfaceSubClass())); interfaceDescript.getBInterfaceSubClass()));
System.out.print(String.format(" bInterfaceProtocol: %d\n", System.out.print(String.format(" bInterfaceProtocol: %d\n",
interfaceDescript.getBInterfaceProtocol())); interfaceDescript.getBInterfaceProtocol()));
System.out.print(String.format(" iInterface: %d\n", System.out.print(String.format(" iInterface: %d\n",
interfaceDescript.getIInterface())); interfaceDescript.getIInterface()));
for (int i = 0; i < interfaceDescript.getBNumEndpoints(); i++) { for (int i = 0; i < interfaceDescript.getBNumEndpoints(); i++) {
printEndpoint(interfaceDescript.getEndpoint()[i]); printEndpoint(interfaceDescript.getEndpoint()[i]);
} }
} }
/** /**
* prints out interface * prints out interface
* *
* @param usbInterface * @param usbInterface
* The interface. * The interface.
*/ */
private static void printInterface(Usb_Interface usbInterface) { private static void printInterface(Usb_Interface usbInterface) {
for (int i = 0; i < usbInterface.getNumAltsetting(); i++) { for (int i = 0; i < usbInterface.getNumAltsetting(); i++) {
printAltsetting(usbInterface.getAltsetting()[i]); printAltsetting(usbInterface.getAltsetting()[i]);
} }
} }
/** /**
* prints out configuration * prints out configuration
* *
* @param config * @param config
* The configuration. * The configuration.
*/ */
private static void printConfiguration(Usb_Config_Descriptor config) { private static void printConfiguration(Usb_Config_Descriptor config) {
System.out.print(String.format(" wTotalLength: %d\n", config System.out.print(String.format(" wTotalLength: %d\n", config
.getWTotalLength())); .getWTotalLength()));
System.out.print(String.format(" bNumInterfaces: %d\n", config System.out.print(String.format(" bNumInterfaces: %d\n", config
.getBNumInterfaces())); .getBNumInterfaces()));
System.out.print(String.format(" bConfigurationValue: %d\n", config System.out.print(String.format(" bConfigurationValue: %d\n", config
.getBConfigurationValue())); .getBConfigurationValue()));
System.out.print(String.format(" iConfiguration: %d\n", config System.out.print(String.format(" iConfiguration: %d\n", config
.getIConfiguration())); .getIConfiguration()));
System.out.print(String.format(" bmAttributes: %02xh\n", System.out.print(String.format(" bmAttributes: %02xh\n",
config.getBmAttributes())); config.getBmAttributes()));
System.out.print(String.format(" MaxPower: %d\n", config System.out.print(String.format(" MaxPower: %d\n", config
.getMaxPower())); .getMaxPower()));
for (int i = 0; i < config.getBNumInterfaces(); i++) { for (int i = 0; i < config.getBNumInterfaces(); i++) {
printInterface(config.getInterface()[i]); printInterface(config.getInterface()[i]);
} }
} }
private static int printDevice(Usb_Device dev, int level) { private static int printDevice(Usb_Device dev, int level) {
long udev; long udev;
String mfr; String mfr;
String product; String product;
String sn; String sn;
String spaces; String spaces;
String descript; String descript;
spaces = " "; spaces = " ";
udev = LibusbJava.usb_open(dev); udev = LibusbJava.usb_open(dev);
if (udev != 0) { if (udev != 0) {
if (dev.getDescriptor().getIManufacturer() != 0) { if (dev.getDescriptor().getIManufacturer() != 0) {
mfr = LibusbJava.usb_get_string_simple(udev, dev mfr = LibusbJava.usb_get_string_simple(udev, dev
.getDescriptor().getIManufacturer()); .getDescriptor().getIManufacturer());
if (mfr != null) { if (mfr != null) {
descript = String.format("%s - ", mfr); descript = String.format("%s - ", mfr);
} else { } else {
descript = String.format("%04X - ", dev.getDescriptor() descript = String.format("%04X - ", dev.getDescriptor()
.getIdVendor()); .getIdVendor());
} }
} else { } else {
descript = String.format("%04X - ", dev.getDescriptor() descript = String.format("%04X - ", dev.getDescriptor()
.getIdVendor()); .getIdVendor());
} }
if (dev.getDescriptor().getIProduct() != 0) { if (dev.getDescriptor().getIProduct() != 0) {
product = LibusbJava.usb_get_string_simple(udev, dev product = LibusbJava.usb_get_string_simple(udev, dev
.getDescriptor().getIProduct()); .getDescriptor().getIProduct());
if (product != null) { if (product != null) {
descript = descript + String.format("%s", product); descript = descript + String.format("%s", product);
} else { } else {
descript = descript descript = descript
+ String.format("%04X", dev.getDescriptor() + String.format("%04X", dev.getDescriptor()
.getIdProduct()); .getIdProduct());
} }
} else { } else {
descript = descript descript = descript
+ String.format("%04X", dev.getDescriptor() + String.format("%04X", dev.getDescriptor()
.getIdProduct()); .getIdProduct());
} }
} else { } else {
descript = String.format("%04X - %04X", dev.getDescriptor() descript = String.format("%04X - %04X", dev.getDescriptor()
.getIdVendor(), dev.getDescriptor().getIdProduct()); .getIdVendor(), dev.getDescriptor().getIdProduct());
} }
System.out.print(String.format("%sDev #%d: %s\n", spaces.substring(0, System.out.print(String.format("%sDev #%d: %s\n", spaces.substring(0,
level * 2), dev.getDevnum(), descript)); level * 2), dev.getDevnum(), descript));
if ((udev != 0) && verbose) { if ((udev != 0) && verbose) {
if (dev.getDescriptor().getISerialNumber() != 0) { if (dev.getDescriptor().getISerialNumber() != 0) {
sn = LibusbJava.usb_get_string_simple(udev, dev.getDescriptor() sn = LibusbJava.usb_get_string_simple(udev, dev.getDescriptor()
.getISerialNumber()); .getISerialNumber());
if (sn != null) { if (sn != null) {
System.out.print(String.format("%s - Serial Number: %s\n", System.out.print(String.format("%s - Serial Number: %s\n",
spaces.substring(0, level * 2), sn)); spaces.substring(0, level * 2), sn));
} }
} }
} }
if (udev != 0) { if (udev != 0) {
LibusbJava.usb_close(udev); LibusbJava.usb_close(udev);
} }
if (verbose) { if (verbose) {
if (dev.getConfig().length == 0) { if (dev.getConfig().length == 0) {
System.out.print(" Couldn't retrieve descriptors\n"); System.out.print(" Couldn't retrieve descriptors\n");
return 0; return 0;
} }
for (int i = 0; i < dev.getDescriptor().getBNumConfigurations(); i++) { for (int i = 0; i < dev.getDescriptor().getBNumConfigurations(); i++) {
printConfiguration(dev.getConfig()[i]); printConfiguration(dev.getConfig()[i]);
} }
} else { } else {
Usb_Device childDev = null; Usb_Device childDev = null;
for (int i = 0; i < dev.getNumChildren(); i++) { for (int i = 0; i < dev.getNumChildren(); i++) {
if (i == 0) { if (i == 0) {
childDev = dev.getChildren(); childDev = dev.getChildren();
} else { } else {
childDev = childDev.getNext(); childDev = childDev.getNext();
} }
printDevice(childDev, level + 1); printDevice(childDev, level + 1);
} }
} }
return 0; return 0;
} // end of printDevice method } // end of printDevice method
/** /**
* The main method. * The main method.
* *
* @param args * @param args
* The command line arguments. * The command line arguments.
*/ */
public static void main(String args[]) throws Exception { public static void main(String args[]) throws Exception {
if ((args.length > 0) && (args[0].equals("-v"))) { if ((args.length > 0) && (args[0].equals("-v"))) {
verbose = true; verbose = true;
} else { } else {
verbose = false; verbose = false;
} }
// used for debugging. 0 = no debugging, 255 = with debugging // used for debugging. 0 = no debugging, 255 = with debugging
LibusbJava.usb_init(); LibusbJava.usb_init();
LibusbJava.usb_set_debug(255); LibusbJava.usb_set_debug(255);
LibusbJava.usb_find_busses(); LibusbJava.usb_find_busses();
LibusbJava.usb_find_devices(); LibusbJava.usb_find_devices();
for (Usb_Bus bus = LibusbJava.usb_get_busses(); bus != null; bus = bus for (Usb_Bus bus = LibusbJava.usb_get_busses(); bus != null; bus = bus
.getNext()) { .getNext()) {
if ((bus.getRootDev() != null) && !verbose) { if ((bus.getRootDev() != null) && !verbose) {
printDevice(bus.getRootDev(), 0); printDevice(bus.getRootDev(), 0);
} else { } else {
for (Usb_Device dev = bus.getDevices(); dev != null; dev = dev for (Usb_Device dev = bus.getDevices(); dev != null; dev = dev
.getNext()) { .getNext()) {
printDevice(dev, 0); printDevice(dev, 0);
} }
} }
} }
} // end main } // end main
} // end of TestLibUsbJava class } // end of TestLibUsbJava class

View File

@@ -1,34 +1,34 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.test.devices; package ch.ntb.inf.libusbJava.test.devices;
import ch.ntb.inf.libusbJava.USB; import ch.ntb.inf.libusbJava.USB;
import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo; import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo;
public class AT90USB1287 extends AbstractDeviceInfo { public class AT90USB1287 extends AbstractDeviceInfo {
@Override @Override
public void initValues() { public void initValues() {
setIdVendor((short) 0x8235); setIdVendor((short) 0x8235);
setIdProduct((short) 0x0200); setIdProduct((short) 0x0200);
setTimeout(2000); setTimeout(2000);
setConfiguration(1); setConfiguration(1);
setInterface(0); setInterface(0);
setAltinterface(-1); setAltinterface(-1);
setOutEPBulk(0x01); setOutEPBulk(0x01);
setInEPBulk(0x82); setInEPBulk(0x82);
setOutEPInt(0x01); setOutEPInt(0x01);
setInEPInt(0x82); setInEPInt(0x82);
setSleepTimeout(2000); setSleepTimeout(2000);
setMaxDataSize(USB.FULLSPEED_MAX_BULK_PACKET_SIZE); setMaxDataSize(USB.FULLSPEED_MAX_BULK_PACKET_SIZE);
setMode(TransferMode.Bulk); setMode(TransferMode.Bulk);
setManufacturer("inf.ntb.ch"); setManufacturer("inf.ntb.ch");
setProduct("JUnit Test Board"); setProduct("JUnit Test Board");
setSerialVersion("00.10.00"); setSerialVersion("00.10.00");
} }
} }

View File

@@ -1,31 +1,31 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.test.devices; package ch.ntb.inf.libusbJava.test.devices;
import ch.ntb.inf.libusbJava.USB; import ch.ntb.inf.libusbJava.USB;
import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo; import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo;
public class CY7C68013A extends AbstractDeviceInfo { public class CY7C68013A extends AbstractDeviceInfo {
@Override @Override
public void initValues() { public void initValues() {
setIdVendor((short) 0x8235); setIdVendor((short) 0x8235);
setIdProduct((short) 0x0222); setIdProduct((short) 0x0222);
setTimeout(2000); setTimeout(2000);
setConfiguration(1); setConfiguration(1);
setInterface(0); setInterface(0);
setAltinterface(-1); setAltinterface(-1);
setOutEPInt(0x02); setOutEPInt(0x02);
setInEPInt(0x86); setInEPInt(0x86);
setOutEPBulk(0x04); setOutEPBulk(0x04);
setInEPBulk(0x88); setInEPBulk(0x88);
setSleepTimeout(2000); setSleepTimeout(2000);
setMaxDataSize(USB.HIGHSPEED_MAX_BULK_PACKET_SIZE); setMaxDataSize(USB.HIGHSPEED_MAX_BULK_PACKET_SIZE);
setMode(TransferMode.Bulk); setMode(TransferMode.Bulk);
} }
} }

View File

@@ -1,32 +1,32 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.test.devices; package ch.ntb.inf.libusbJava.test.devices;
import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo; import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo;
public class MX500 extends AbstractDeviceInfo { public class MX500 extends AbstractDeviceInfo {
@Override @Override
public void initValues() { public void initValues() {
setIdVendor((short) 0x046d); setIdVendor((short) 0x046d);
setIdProduct((short) 0xc025); setIdProduct((short) 0xc025);
setTimeout(2000); setTimeout(2000);
setConfiguration(1); setConfiguration(1);
setInterface(0); setInterface(0);
setAltinterface(0); setAltinterface(0);
setOutEPInt(-1); setOutEPInt(-1);
setInEPInt(0x81); setInEPInt(0x81);
setOutEPBulk(-1); setOutEPBulk(-1);
setInEPBulk(-1); setInEPBulk(-1);
setSleepTimeout(5000); setSleepTimeout(5000);
setMaxDataSize(5); setMaxDataSize(5);
setMode(TransferMode.Interrupt); setMode(TransferMode.Interrupt);
// we only read data -> don't compare // we only read data -> don't compare
setDoCompareData(false); setDoCompareData(false);
} }
} }

View File

@@ -1,34 +1,34 @@
/* /*
* Java libusb wrapper * Java libusb wrapper
* Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net> * Copyright (c) 2005-2006 Andreas Schläpfer <spandi at users.sourceforge.net>
* *
* http://libusbjava.sourceforge.net * http://libusbjava.sourceforge.net
* This library is covered by the LGPL, read LGPL.txt for details. * This library is covered by the LGPL, read LGPL.txt for details.
*/ */
package ch.ntb.inf.libusbJava.test.devices; package ch.ntb.inf.libusbJava.test.devices;
import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo; import ch.ntb.inf.libusbJava.testApp.AbstractDeviceInfo;
public class MousePlus extends AbstractDeviceInfo { public class MousePlus extends AbstractDeviceInfo {
@Override @Override
public void initValues() { public void initValues() {
setIdVendor((short) 0x046d); setIdVendor((short) 0x046d);
setIdProduct((short) 0xc016); setIdProduct((short) 0xc016);
setBusName("bus-0"); setBusName("bus-0");
setFilename("\\\\.\\libusb0-0001--0x046d-0xc016"); setFilename("\\\\.\\libusb0-0001--0x046d-0xc016");
setTimeout(2000); setTimeout(2000);
setConfiguration(1); setConfiguration(1);
setInterface(0); setInterface(0);
setAltinterface(0); setAltinterface(0);
setOutEPInt(-1); setOutEPInt(-1);
setInEPInt(0x81); setInEPInt(0x81);
setOutEPBulk(-1); setOutEPBulk(-1);
setInEPBulk(-1); setInEPBulk(-1);
setSleepTimeout(5000); setSleepTimeout(5000);
setMaxDataSize(4); setMaxDataSize(4);
setMode(TransferMode.Interrupt); setMode(TransferMode.Interrupt);
// we only read data -> don't compare // we only read data -> don't compare
setDoCompareData(false); setDoCompareData(false);
} }
} }

View File

@@ -1,76 +1,76 @@
package ch.ntb.inf.libusbJava.test.exceptions; package ch.ntb.inf.libusbJava.test.exceptions;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.junit.runners.Parameterized; import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters; import org.junit.runners.Parameterized.Parameters;
import ch.ntb.inf.libusbJava.exceptions.LibusbError; import ch.ntb.inf.libusbJava.exceptions.LibusbError;
@RunWith(Parameterized.class) @RunWith(Parameterized.class)
public class LibusbErrorTest { public class LibusbErrorTest {
@Parameters @Parameters
public static Collection<Object[]> codesToTest() { public static Collection<Object[]> codesToTest() {
return Arrays.asList(new Object[][] { {"ERROR_UNKNWON (0)", 0 }, return Arrays.asList(new Object[][] { {"ERROR_UNKNWON (0)", 0 },
{"ERROR_IO", -1 }, {"ERROR_IO", -1 },
{"ERROR_INVALID_PARAM", -2}, {"ERROR_INVALID_PARAM", -2},
{"ERROR_ACCESS", -3}, {"ERROR_ACCESS", -3},
{"ERROR_NO_DEVICE", -4}, {"ERROR_NO_DEVICE", -4},
{"ERROR_NOT_FOUND", -5}, {"ERROR_NOT_FOUND", -5},
{"ERROR_BUSY", -6}, {"ERROR_BUSY", -6},
{"ERROR_TIMEOUT", -7}, {"ERROR_TIMEOUT", -7},
{"ERROR_OVERFLOW", -8}, {"ERROR_OVERFLOW", -8},
{"ERROR_PIPE", -9}, {"ERROR_PIPE", -9},
{"ERROR_INTERRUPTED", -10}, {"ERROR_INTERRUPTED", -10},
{"ERROR_NO_MEM", -11}, {"ERROR_NO_MEM", -11},
{"ERROR_NOT_SUPPORTED", -12}, {"ERROR_NOT_SUPPORTED", -12},
{"ERROR_UNKNWON (-13)", -13}, {"ERROR_UNKNWON (-13)", -13},
{"ERROR_UNKNWON (-98)", -98}, {"ERROR_UNKNWON (-98)", -98},
{"ERROR_JAVA_REFERENCES_NOT_LOADED", -100}, {"ERROR_JAVA_REFERENCES_NOT_LOADED", -100},
{"ERROR_JAVA_WRONG_ENVIRONMENT", -101}, {"ERROR_JAVA_WRONG_ENVIRONMENT", -101},
{"ERROR_JAVA_ILEGAL_DEVICE_HANDLE", -102}, {"ERROR_JAVA_ILEGAL_DEVICE_HANDLE", -102},
{"ERROR_UNKNWON (-103)", -103}, {"ERROR_UNKNWON (-103)", -103},
{"ERROR_OTHER", -99} }); {"ERROR_OTHER", -99} });
} }
private String exp_desc; private String exp_desc;
private int code; private int code;
private LibusbError e; private LibusbError e;
public LibusbErrorTest(String exp_desc, int code) { public LibusbErrorTest(String exp_desc, int code) {
this.exp_desc = exp_desc; this.exp_desc = exp_desc;
this.code = code; this.code = code;
try { try {
throw new LibusbError(code); throw new LibusbError(code);
} catch (LibusbError e) { } catch (LibusbError e) {
this.e = e; this.e = e;
} }
} }
@Test @Test
public void testGetErrorCode() { public void testGetErrorCode() {
assertEquals("Error code is correct", e.getErrorCode(), code); assertEquals("Error code is correct", e.getErrorCode(), code);
} }
@Test @Test
public void testGetStringFromCode() { public void testGetStringFromCode() {
String gen_desc = LibusbError.getStringFromCode(code); String gen_desc = LibusbError.getStringFromCode(code);
assertEquals("Correct error description for " + code, exp_desc, gen_desc); assertEquals("Correct error description for " + code, exp_desc, gen_desc);
} }
@Test @Test
public void testGetErrorString() { public void testGetErrorString() {
assertEquals("Correct error string for " + code, e.getErrorString(), exp_desc); assertEquals("Correct error string for " + code, e.getErrorString(), exp_desc);
} }
@Test @Test
public void testGetMessage() { public void testGetMessage() {
assertEquals("Correct error string for " + code, e.getMessage(), "libusb result: " + exp_desc); assertEquals("Correct error string for " + code, e.getMessage(), "libusb result: " + exp_desc);
} }
} }