1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
public void testCom(){
if (!this.pret) return;
ByteBuffer buffer = ByteBuffer.allocateDirect(18);
buffer.rewind();
// descriptor device
int transfered = LibUsb.controlTransfer(handle,
LibUsb.ENDPOINT_IN,LibUsb.REQUEST_GET_DESCRIPTOR,(short)0x0100,(short)0x0000,buffer,2000L);
if (transfered < 0) throw new LibUsbException("Control transfer failed", transfered);
System.out.println(transfered + " bytes sent");
System.out.println("--- DEVICE DESCRIPTOR ---");
System.out.println(byteBuffer2String(buffer));
System.out.println();
buffer = ByteBuffer.allocateDirect(9);
// descriptor configuration
transfered = LibUsb.controlTransfer(handle,
LibUsb.ENDPOINT_IN,LibUsb.REQUEST_GET_DESCRIPTOR,(short)0x0200,(short)0x0000,buffer,2000L);
if (transfered < 0) throw new LibUsbException("Control transfer failed", transfered);
System.out.println(transfered + " bytes sent");
System.out.println("--- CONFIGURATION DESCRIPTOR ---");
System.out.println(byteBuffer2String(buffer));
System.out.println();
buffer = ByteBuffer.allocateDirect(8);
// descriptor string
transfered = LibUsb.controlTransfer(handle,
LibUsb.ENDPOINT_IN,LibUsb.REQUEST_GET_DESCRIPTOR,(short)0x0300,(short)0x0409,buffer,2000L);
if (transfered < 0) throw new LibUsbException("Control transfer failed", transfered);
System.out.println(transfered + " bytes sent");
System.out.println("--- DESCRIPTOR STRING ---");
System.out.println(byteBuffer2String(buffer));
System.out.println();
System.out.println("TRYING TO GET DATA ...");
ByteBuffer bufferArgCmd = ByteBuffer.allocateDirect(16);
/*bufferArgCmd.put((byte)0x21);
bufferArgCmd.put((byte)0x09);
bufferArgCmd.put((byte)0x02);
bufferArgCmd.put((byte)0x00);
bufferArgCmd.put((byte)0x00);
bufferArgCmd.put((byte)0x00);
bufferArgCmd.put((byte)0x08);
bufferArgCmd.put((byte)0x00);*/
bufferArgCmd.put((byte)0xA1);
bufferArgCmd.put((byte)0x00);
bufferArgCmd.put((byte)0x00);
bufferArgCmd.put((byte)0x20);
bufferArgCmd.put((byte)0xA1);
bufferArgCmd.put((byte)0x00);
bufferArgCmd.put((byte)0x00);
bufferArgCmd.put((byte)0x20);
bufferArgCmd.rewind();
ByteBuffer bufferResCmd = ByteBuffer.allocateDirect(4);
bufferResCmd.get();
bufferResCmd.get();
ByteBuffer bufferData = ByteBuffer.allocateDirect(32);
ByteBuffer buffer81 = BufferUtils.allocateByteBuffer(32);
// buffer81.put(data);
Transfer transfer = LibUsb.allocTransfer(0);
LibUsb.fillInterruptTransfer(transfer, handle, ENDPOINT_ID, bufferData,
receiveData, null, 3000L);
LibUsb.fillControlSetup(bufferArgCmd,(byte)0x21,(byte)0x09,(short)0x0200,(short)0x0,(short)0x08);
// LibUsb.fillControlTransfer(transfer, handle, bufferArgCmd,
// sendData, null, 2000L);
System.out.println("doing interrupt transfer to device");
int result = LibUsb.submitTransfer(transfer);
if (result != LibUsb.SUCCESS)
{
throw new LibUsbException("Unable to submit transfer", result);
}
System.out.println("Resultat du transfert : ");
System.out.println(byteBuffer2String(bufferData));
}
// This callback is called after the ADB CONNECT message header is
// sent and sends the ADB CONNECT message body.
final TransferCallback receiveData = new TransferCallback()
{
@Override
public void processTransfer(Transfer transfer)
{
System.out.println(transfer.actualLength() + " bytes received !!!! ");
// write(handle, CONNECT_BODY, bodySent);
// LibUsb.freeTransfer(transfer);
}
};
// This callback is called after the ADB CONNECT message header is
// sent and sends the ADB CONNECT message body.
final TransferCallback sendData = new TransferCallback()
{
@Override
public void processTransfer(Transfer transfer)
{
System.out.println("send command to device");
// write(handle, CONNECT_BODY, bodySent);
// LibUsb.freeTransfer(transfer);
}
}; |
Partager