Not clear what you are doing, but perhaps you are needing to get/set report to a feature (wValue = 0x0301) insteadt of IN and OUT?
On Mon, 2008-08-11 at 10:49 -0400, Bourothu Rahul wrote: > Hello, > > Following is a part of my code for sending SET_ and GET_REPORT's to > the USB Device. When I try to send the GET_REPORT request after having > sent the SET_REPORT to the DCP, i get a DCP Submission failed error. > Could anyone tell me where the problem is? > > UsbConfiguration config = usbDevice.getActiveUsbConfiguration(); > List interfaces = new ArrayList(); > interfaces = config.getUsbInterfaces(); > UsbInterface interface0 = (UsbInterface)interfaces.get(0); // my > device has only one interface, i.e, 0 > try{ > interface.claim(new UsbInterfacePolicy() { > public boolean > forceClaim(UsbInterface usbInterface){ > return true; > } > }); > UsbInterfaceDescriptor interfaceDescriptor = > interface0.getUsbInterfaceDescriptor(); > Byte iClass = new Byte(interfaceDescriptor.bInterfaceClass()); > System.out.println("Interface Class is: " + > iClass.toString()); // It gives me 3, meaning a HID class device > }catch(Exception e){ > System.out.println("Interface not claimed! Exception! " + > e.getMessage()); > } > > //SET_REPORT > byte bmRequestType = 0x21; <request type for SET_REPORT> > byte bRequest = 0x09; <SET_REPORT: 0x09> > short wValue = 0x0201; <i/o type: OUT, 02><report number:01> > short wIndex = 0; <Interface number :0> > byte[] sendBuffer = {0x01,0x00,0x06,0x22,(byte)0xA0,(byte)0x85,0x00}; > <ByteStream command to be sent to the device> > UsbControlIrp controlIrp1 = > usbDevice.createUsbControlIrp(bmRequestType, > bRequest,wValue,wValue,wIndex); > controlIrp1.setData(sendBuffer); > > if(!sendUsbControlIrp(usbDevice, controlIrp1)){ > System.out.println("SET_REPORT Not sent successfully"); > } > System.out.println("Bytes sent to the device for SET_REPORT: " + > controlIrp1.getActualLength()); > > //GET_REPORT > byte bmRequestType = 0xA1; <request type for GET_REPORT> > byte bRequest = 0x01; <GET_REPORT: 0x01> > short wValue = 0x0101; <i/o type: IN, 01><report number:01> > short wIndex = 0; <Interface number :0> > byte[] recieveBuffer = new byte[22]; <I Assume this is the buffer > where our requested data would come into, it is of 22 bytes> > UsbControlIrp controlIrp2 = > usbDevice.createUsbControlIrp(bmRequestType, > bRequest,wValue,wValue,wIndex); > controlIrp2.setData(sendBuffer); > > if(!sendUsbControlIrp(usbDevice, controlIrp2)){ > System.out.println("SET_REPORT Not sent successfully"); > } > System.out.println("Bytes sent to the device for GET_REPORT: " + > controlIrp2.getActualLength()); > > > I am not able to find out why i am not able to make the GET_REPORT > request to the device after having sent the SET_REPORT request. Could > anyone help me on this please! > > Also, my USB RFID Reader has just 1 IN_Interrupt pipe from where the > data originates. When i issue the GET_REPORT to the DCP, do I get the > report via the DCP or do I have to use the UsbPipe of the In_Interrupt > pipe to read the tag information? > Please help needed! I am stuck! > > Regards and thanks in advance! > > Rahul Bourothu > > > > On 8/7/08, Bourothu Rahul <[EMAIL PROTECTED]> wrote: > Hi, > > I am using a USB RFID Reader to read the EPC code associated > with a RFID tag on a Linux platform(using JSR80). The device > uses ByteStream Protocol to communicate with the host. This > protocol requires use of HID Report number 1. > The read tag command as provided in the device specification > is : <01><00><06><22><A0><85><00> > > I believe I have to use SET_REPORT(to send control) and > GET_REPORT(to recieve data) to enable communication. > > In order to issue the read tag command, i am using the > following header values(from the usb 1.1 HID specification): > > bmRequestType: 0x21 > bRequest: 0x09 (SET_REPORT, to the device) > wValue: 0x0201 (<I/O Type><Report Number>) > wIndex: 0x0000 (Interface number) > wLength: 0x07 (Number of Bytes to send to the > device) > Data: <01><00><06><22><A0><85><00> > > I wrap this data in a UsbControlIrp, and send it to the device > using syncSubmit method. > > Later i have to read the report from the device using > GET_REPORT. For this I would use the headers as follows: > (The INPUT Report from the device would be of size 22 bytes) > bmRequestType: 0xA1 > bRequest: 0x01 (GET_REPORT, from the device) > wValue: 0x0101 (<I/O Type><Report Number>) > wIndex: 0x0000 (Interface number) > wLength: 0x16 (Number of Bytes to be recieved > from the device, 22 in HEX) > Data: <empty> < I assume the data read from > the device will be stored here> > > I again wrap this data in a UsbControlIrp and send it to > the device using syncSubmit method. > Is my approach correct or am I going wrong somewhere? > > Please let me know! > > Thank You > Regards > Rahul Bourothu > > > > -- > Rahul Bourothu > School of Engineering and Applied Science, > University of Pennsylvania, > Philadelphia, PA - 19104 > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ javax-usb-devel mailing list > javax-usb-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/javax-usb-devel ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ javax-usb-devel mailing list javax-usb-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/javax-usb-devel