You should probably send (asyncSubmit or syncSubmit in another Thread) the in-direction IRP. Normally devices expect to be able to send back input data as soon as it's ready. If you don't submit an in-IRP, the device cannot send back input data until you give it a buffer (IRP).
The best thing to do is submit one (or better, multiple) IRPs on the in-pipe. Then you could use a listener on the in-pipe to resubmit a new IRP when one completes, and process the incoming IRP. After that is set up, send your output. On Sat, 6 Nov 2004, Navjot Singh wrote: >hi, > >I am just 1 week conversant with usb and dont know much details. I am >writing a program to communicate with GSM modem connected to PC with >USB cable. > >No matter which AT command i send to my gsm modem, it returns the same >2 byte response to me. Response is 1` (0x31 0x60). > >_SETUP_ >0. Intel x686 m/c. >1. Suse Linux 9.0. Kernel 2.4.16 >2. Falcom (Seimens MC35) GSM modem with usb cable. >3. UHCI controller. >4. /proc/bus/usb/devices shows my device with correct details. >5. I have been able to print my complete usb topology which shows that >i have IN and OUT endpoints with BULK type.[maxpktsize = 64] > >My Code to submit data and get response (exceptions and log stmts removed) > >public String submitData(byte[] reqData){ > UsbIrp irp = outPipe.createUsbIrp(); // outPipe means host to device > irp.setData(irp); > > outPipe.syncSubmit(irp); > if(1 > irp.getActualLength()) > throw new UsbCommException("packet sending failed"); > else > { > Thread.sleep(1000); > byte[] resData = new byte[540]; > UsbIrp inIrp = inPipe.createUsbIrp(); > inIrp.setData(resData); > int totalBytes = 0; > int bytesRead = 0; > do{ > inPipe.syncSubmit(inIrp); > bytesRead = inIrp.getActualLength(); > totalBytes += bytesRead; > } while(!inIrp.isComplete()) > } > return new String(resdata,0,totalBytes); >} > >Is this method correct to send and receive data from usb device? > >Now, if i send whatever reqData. (I tried sending ATZ, AT&F, AT, >AT+CPIN=?), this method always returns same 2 byte response i.e 0x31 >0x60. > >What's wrong here? Please help. Any comments will be helpful. > >regards >Navjot Singh > > >------------------------------------------------------- >This SF.Net email is sponsored by: >Sybase ASE Linux Express Edition - download now for FREE >LinuxWorld Reader's Choice Award Winner for best database on Linux. >http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click >_______________________________________________ >javax-usb-devel mailing list >[EMAIL PROTECTED] >https://lists.sourceforge.net/lists/listinfo/javax-usb-devel > -- Dan Streetman [EMAIL PROTECTED] --------------------- 186,272 miles per second: It isn't just a good idea, it's the law! ------------------------------------------------------- This SF.Net email is sponsored by: Sybase ASE Linux Express Edition - download now for FREE LinuxWorld Reader's Choice Award Winner for best database on Linux. http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click _______________________________________________ javax-usb-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/javax-usb-devel