im running the code below, what happen is that out packet seems to work( it returns from wp.asyncSubmit(wrp); wrp.waitUntilComplete(); // i've tried wp.asyncSubmit(wrp) before) but unless wp.abortAllSubmissions(); i got exception trying wp.close();). The real problem is that i cannot recive data from the IN endpoint and rrp.waitUntilComplete(); waits forever.
I've tested the USB protocol and the data sent in ep1 (OUT) are correct, in anycase i'll get a answer for errors. Thanks in advice, import java.util.Hashtable; import java.util.Iterator; import java.util.List; import javax.usb.UsbDevice; import javax.usb.UsbEndpoint; import javax.usb.UsbHub; import javax.usb.UsbInterface; import javax.usb.UsbIrp; import javax.usb.UsbPipe; import javax.usb.util.UsbUtil; /** * * @author root */ public class DevScan extends javax.swing.JInternalFrame implements FmkChild { static final int cmdEPw=0x01; static final int cmdEPr=0x81; FmkFather Father; /** Creates new form DevScan */ public DevScan() { initComponents(); } public static String getID(UsbDevice d) throws Exception { String SID=null; UsbEndpoint wep=null; UsbEndpoint rep=null; List intf=d.getActiveUsbConfiguration().getUsbInterfaces(); for (int i=0;i<intf.size();i++) { UsbInterface interf=(UsbInterface) intf.get(i); List eps=interf.getUsbEndpoints(); for (int j=0;j<eps.size();j++) { UsbEndpoint ep = (UsbEndpoint) eps.get(j); int epid=((int)(ep.getUsbEndpointDescriptor().bEndpointAddress() & 0xFF)); if (epid == DevScan.cmdEPw) { wep=ep; } if (epid == DevScan.cmdEPr) { rep=ep; } } } if ((wep!=null) && (rep!=null)) { int outmaxPs = wep.getUsbEndpointDescriptor().wMaxPacketSize(); int inmaxPs= rep.getUsbEndpointDescriptor().wMaxPacketSize(); wep.getUsbInterface().claim(); //rep.getUsbInterface().claim(); System.out.println(wep.getUsbEndpointDescriptor().bEndpointAddress()); System.out.println(rep.getUsbEndpointDescriptor().bEndpointAddress()); UsbPipe wp=wep.getUsbPipe(); UsbIrp wrp=wp.createUsbIrp(); UsbPipe rp=rep.getUsbPipe(); byte indata[]=new byte[inmaxPs]; rp.open(); UsbIrp rrp=rp.createUsbIrp(); rrp.setData(indata); rrp.setUsbException(null); rp.asyncSubmit(rrp); wp.open(); byte outdata[]=new byte[outmaxPs]; outdata[0]=2; outdata[1]='S'; outdata[2]='N'; outdata[3]=3; wrp.setLength(4); wrp.setData(outdata); wrp.setUsbException(null); wp.asyncSubmit(wrp); wrp.waitUntilComplete(); wrp.setComplete(false); wp.abortAllSubmissions(); wp.close(); System.out.println("invio"); rrp.waitUntilComplete(); rp.abortAllSubmissions(); rp.close(); wep.getUsbInterface().release(); rep.getUsbInterface().release(); char[] ss=new char[rrp.getLength()]; for (int i=0;i<ss.length;i++) { System.out.println(UsbUtil.toHexString(indata[i])); } } return SID; } public static void FillUsbTable(Hashtable t,UsbHub hub) throws Exception { List usbdevs=hub.getAttachedUsbDevices(); Iterator it=usbdevs.iterator(); t.clear(); while (it.hasNext()) { UsbDevice d=(UsbDevice) it.next(); if (d.isUsbHub()) { DevScan.FillUsbTable(t,(UsbHub)d); } else { if(d.getProductString().equals("MY-USB")) { DevScan.getID(d); } } } } -- Emanuele Maiarelli ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ javax-usb-devel mailing list javax-usb-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/javax-usb-devel