kopia lustrzana https://github.com/felHR85/UsbSerial
Working on read and write functions
rodzic
680caef8ef
commit
8c53a8dfe6
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
|
@ -5,6 +5,7 @@ import android.hardware.usb.UsbDevice;
|
|||
import android.hardware.usb.UsbDeviceConnection;
|
||||
import android.hardware.usb.UsbEndpoint;
|
||||
import android.hardware.usb.UsbInterface;
|
||||
import android.hardware.usb.UsbRequest;
|
||||
import android.util.Log;
|
||||
|
||||
public class CP2102SerialDevice extends UsbSerialDevice
|
||||
|
@ -45,6 +46,8 @@ public class CP2102SerialDevice extends UsbSerialDevice
|
|||
private UsbInterface mInterface;
|
||||
private UsbEndpoint inEndpoint;
|
||||
private UsbEndpoint outEndpoint;
|
||||
private UsbRequest requestIN;
|
||||
private UsbRequest requestOUT;
|
||||
|
||||
public CP2102SerialDevice(UsbDevice device, UsbDeviceConnection connection)
|
||||
{
|
||||
|
@ -54,6 +57,7 @@ public class CP2102SerialDevice extends UsbSerialDevice
|
|||
@Override
|
||||
public void open()
|
||||
{
|
||||
// Get and claim interface
|
||||
mInterface = device.getInterface(0); // CP2102 has only one interface
|
||||
|
||||
if(connection.claimInterface(mInterface, true))
|
||||
|
@ -64,6 +68,7 @@ public class CP2102SerialDevice extends UsbSerialDevice
|
|||
Log.i(CLASS_ID, "Interface could not be claimed");
|
||||
}
|
||||
|
||||
// Assign endpoints
|
||||
int numberEndpoints = mInterface.getEndpointCount();
|
||||
for(int i=0;i<=numberEndpoints-1;i++)
|
||||
{
|
||||
|
@ -84,12 +89,19 @@ public class CP2102SerialDevice extends UsbSerialDevice
|
|||
setControlCommand(CP210x_SET_LINE_CTL, CP210x_LINE_CTL_DEFAULT,null);
|
||||
setFlowControl(UsbSerialInterface.FLOW_CONTROL_OFF);
|
||||
setControlCommand(CP210x_SET_MHS, CP210x_MHS_DEFAULT, null);
|
||||
|
||||
// Initialize UsbRequest
|
||||
requestIN = new UsbRequest();
|
||||
requestOUT = new UsbRequest();
|
||||
requestIN.initialize(connection, inEndpoint);
|
||||
requestOUT.initialize(connection, outEndpoint);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(byte[] buffer)
|
||||
{
|
||||
// TODO
|
||||
serialBuffer.putWriteBuffer(buffer);
|
||||
requestOUT.queue(serialBuffer.getWriteBuffer(), buffer.length);
|
||||
}
|
||||
|
||||
// This methods is going to need callback
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package com.felhr.usbserial;
|
||||
|
||||
import android.hardware.usb.UsbConstants;
|
||||
import android.hardware.usb.UsbDevice;
|
||||
import android.hardware.usb.UsbDeviceConnection;
|
||||
import android.hardware.usb.UsbRequest;
|
||||
|
||||
public abstract class UsbSerialDevice implements UsbSerialInterface
|
||||
{
|
||||
|
@ -43,4 +45,38 @@ public abstract class UsbSerialDevice implements UsbSerialInterface
|
|||
@Override
|
||||
public abstract void setFlowControl(int flowControl);
|
||||
|
||||
|
||||
protected class WorkerThread extends Thread
|
||||
{
|
||||
private UsbReadCallback callback;
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
UsbRequest request = connection.requestWait();
|
||||
if(request.getEndpoint().getDirection() == UsbConstants.USB_DIR_IN) // Read
|
||||
{
|
||||
|
||||
}else // Write
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void setCallback(UsbReadCallback callback)
|
||||
{
|
||||
this.callback = callback;
|
||||
}
|
||||
|
||||
private void onReceivedData(byte[] data)
|
||||
{
|
||||
callback.onReceivedData(data);
|
||||
}
|
||||
}
|
||||
|
||||
public interface UsbReadCallback
|
||||
{
|
||||
public void onReceivedData(byte[] data);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue