CTS and DSR signals will be read the first time a modem info packet is received

pull/26/head
Felipe Herranz 2016-02-13 13:04:55 +01:00
rodzic c826e45bdf
commit 2c0ea553b1
2 zmienionych plików z 18 dodań i 5 usunięć

Wyświetl plik

@ -74,7 +74,8 @@ public class UsbService extends Service {
private UsbSerialInterface.UsbCTSCallback ctsCallback = new UsbSerialInterface.UsbCTSCallback() {
@Override
public void onCTSChanged(boolean state) {
mHandler.obtainMessage(CTS_CHANGE).sendToTarget();
if(mHandler != null)
mHandler.obtainMessage(CTS_CHANGE).sendToTarget();
}
};
@ -84,7 +85,8 @@ public class UsbService extends Service {
private UsbSerialInterface.UsbDSRCallback dsrCallback = new UsbSerialInterface.UsbDSRCallback() {
@Override
public void onDSRChanged(boolean state) {
mHandler.obtainMessage(DSR_CHANGE).sendToTarget();
if(mHandler != null)
mHandler.obtainMessage(DSR_CHANGE).sendToTarget();
}
};
/*
@ -238,10 +240,10 @@ public class UsbService extends Service {
serialPort.setStopBits(UsbSerialInterface.STOP_BITS_1);
serialPort.setParity(UsbSerialInterface.PARITY_NONE);
/**
* Flow control Options:
* Current flow control Options:
* UsbSerialInterface.FLOW_CONTROL_OFF
* UsbSerialInterface.FLOW_CONTROL_RTS_CTS for CP2102 and FT232
* UsbSerialInterface.FLOW_CONTROL_DSR_DTR for CP2102 and FT232
* UsbSerialInterface.FLOW_CONTROL_RTS_CTS only for CP2102 and FT232
* UsbSerialInterface.FLOW_CONTROL_DSR_DTR only for CP2102 and FT232
*/
serialPort.setFlowControl(UsbSerialInterface.FLOW_CONTROL_OFF);
serialPort.read(mCallback);

Wyświetl plik

@ -72,6 +72,7 @@ public class FTDISerialDevice extends UsbSerialDevice
private boolean ctsState;
private boolean dsrState;
private boolean firstTime; // with this flag we set the CTS and DSR state to the first value received from the FTDI device
private UsbCTSCallback ctsCallback;
private UsbDSRCallback dsrCallback;
@ -97,6 +98,7 @@ public class FTDISerialDevice extends UsbSerialDevice
dtrDsrEnabled = false;
ctsState = true;
dsrState = true;
firstTime = true;
mInterface = device.getInterface(iface >= 0 ? iface : 0);
}
@ -128,6 +130,7 @@ public class FTDISerialDevice extends UsbSerialDevice
}
// Default Setup
firstTime = true;
if(setControlCommand(FTDI_SIO_RESET, 0x00, 0, null) < 0)
return false;
if(setControlCommand(FTDI_SIO_SET_DATA, FTDI_SET_DATA_DEFAULT, 0, null) < 0)
@ -468,6 +471,14 @@ public class FTDISerialDevice extends UsbSerialDevice
boolean cts = (data[0] & 0x10) == 0x10;
boolean dsr = (data[0] & 0x20) == 0x20;
if(firstTime) // First modem status received, set the flags and exit
{
ctsState = cts;
dsrState = dsr;
firstTime = false;
return;
}
if(rtsCtsEnabled &&
cts != ctsState && ctsCallback != null) //CTS
{