rtsCts and dtrDsr flags put into some places where they are needed

pull/26/head
Felipe Herranz 2016-02-12 18:36:32 +01:00
rodzic b47e5311a6
commit bdf60c2bc5
2 zmienionych plików z 17 dodań i 3 usunięć

Wyświetl plik

@ -270,6 +270,8 @@ public class CP2102SerialDevice extends UsbSerialDevice
(byte) 0x00, (byte) 0x80, (byte) 0x00, (byte) 0x00,
(byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x00
};
rtsCtsEnabled = false;
dtrDsrEnabled = false;
setControlCommand(CP210x_SET_FLOW, 0, dataOff);
break;
case UsbSerialInterface.FLOW_CONTROL_RTS_CTS:
@ -280,6 +282,7 @@ public class CP2102SerialDevice extends UsbSerialDevice
(byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x00
};
rtsCtsEnabled = true;
dtrDsrEnabled = false;
setControlCommand(CP210x_SET_FLOW, 0, dataRTSCTS);
setControlCommand(CP210x_SET_MHS, CP210x_MHS_RTS_ON, null);
byte[] commStatusCTS = getCommStatus();
@ -294,6 +297,7 @@ public class CP2102SerialDevice extends UsbSerialDevice
(byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x00
};
dtrDsrEnabled = true;
rtsCtsEnabled = false;
setControlCommand(CP210x_SET_FLOW, 0, dataDSRDTR);
setControlCommand(CP210x_SET_MHS, CP210x_MHS_DTR_ON, null);
byte[] commStatusDSR = getCommStatus();

Wyświetl plik

@ -142,6 +142,10 @@ public class FTDISerialDevice extends UsbSerialDevice
if(setControlCommand(FTDI_SIO_SET_BAUD_RATE, FTDI_BAUDRATE_9600, 0, null) < 0)
return false;
// Flow control disabled by default
rtsCtsEnabled = false;
dtrDsrEnabled = false;
// Initialize UsbRequest
requestIN = new UsbRequest();
requestIN.initialize(connection, inEndpoint);
@ -332,14 +336,18 @@ public class FTDISerialDevice extends UsbSerialDevice
{
case UsbSerialInterface.FLOW_CONTROL_OFF:
setControlCommand(FTDI_SIO_SET_FLOW_CTRL, FTDI_SET_FLOW_CTRL_DEFAULT, 0, null);
rtsCtsEnabled = false;
dtrDsrEnabled = false;
break;
case UsbSerialInterface.FLOW_CONTROL_RTS_CTS:
rtsCtsEnabled = true;
dtrDsrEnabled = false;
int indexRTSCTS = 0x0001;
setControlCommand(FTDI_SIO_SET_FLOW_CTRL, FTDI_SET_FLOW_CTRL_DEFAULT, indexRTSCTS, null);
break;
case UsbSerialInterface.FLOW_CONTROL_DSR_DTR:
dtrDsrEnabled = true;
rtsCtsEnabled = false;
int indexDSRDTR = 0x0002;
setControlCommand(FTDI_SIO_SET_FLOW_CTRL, FTDI_SET_FLOW_CTRL_DEFAULT, indexDSRDTR , null);
break;
@ -460,15 +468,17 @@ public class FTDISerialDevice extends UsbSerialDevice
boolean cts = (data[0] & 0x10) == 0x10;
boolean dsr = (data[0] & 0x20) == 0x20;
if(cts != ctsState) //CTS
if(rtsCtsEnabled &&
cts != ctsState && ctsCallback != null) //CTS
{
ctsState = !ctsState;
ctsCallback.onCTSChanged(ctsState);
}
if(dsr != dsrState) //DSR
if(dtrDsrEnabled &&
dsr != dsrState && dsrCallback != null) //DSR
{
dsrState = ! dsrState;
dsrState = !dsrState;
dsrCallback.onDSRChanged(dsrState);
}
}