MCPcopy Create free account
hub / github.com/XCSoar/XCSoar / UsbSerialPort

Class UsbSerialPort

android/src/UsbSerialPort.java:37–199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35
36
37@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
38public final class UsbSerialPort
39 implements AndroidPort, UsbSerialInterface.UsbReadCallback
40{
41 private final UsbSerialHelper.UsbDeviceInterface parent;
42 private UsbDeviceConnection connection;
43 private UsbSerialDevice serialDevice;
44 private PortListener portListener;
45 private InputListener inputListener;
46 private int baudRate;
47 private int state = STATE_LIMBO;
48 private final SafeDestruct safeDestruct = new SafeDestruct();
49
50 public UsbSerialPort(UsbSerialHelper.UsbDeviceInterface parent, int baud) {
51 this.parent = parent;
52 this.baudRate = baud;
53 }
54
55 public synchronized boolean isOpen() {
56 return serialDevice != null;
57 }
58
59 public synchronized void open(UsbManager manager, UsbDevice device, int iface) {
60 connection = manager.openDevice(device);
61 if (connection == null) {
62 setState(STATE_FAILED);
63 return;
64 }
65
66 serialDevice = UsbSerialDevice.createUsbSerialDevice(device, connection, iface);
67 if (serialDevice == null) {
68 setState(STATE_FAILED);
69 return;
70 }
71
72 if (!serialDevice.open()) {
73 serialDevice = null;
74 setState(STATE_FAILED);
75 return;
76 }
77
78 serialDevice.setBaudRate(getBaudRate());
79 serialDevice.setDataBits(UsbSerialInterface.DATA_BITS_8);
80 serialDevice.setStopBits(UsbSerialInterface.STOP_BITS_1);
81 serialDevice.setParity(UsbSerialInterface.PARITY_NONE);
82 serialDevice.setFlowControl(UsbSerialInterface.FLOW_CONTROL_OFF);
83 serialDevice.read(this);
84
85 setState(STATE_READY);
86 }
87
88 public synchronized void close() {
89 parent.portClosed(this);
90
91 safeDestruct.beginShutdown();
92
93 if( serialDevice != null) {
94 serialDevice.close();

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected