Roughly move files to fit gradle project
This commit is contained in:
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal 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
22
build.gradle
Normal 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'))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#Thu Oct 06 09:12:32 CEST 2005
|
|
||||||
eclipse.preferences.version=1
|
|
||||||
internal.default.compliance=default
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
@@ -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
@@ -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_ */
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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 endpoint’s synchronization
|
* This request is used to set and then report an endpoint’s 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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>
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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>
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -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");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
@@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user