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) 0x80, (byte) 0x00, (byte) 0x00,
(byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x00 (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x00
}; };
rtsCtsEnabled = false;
dtrDsrEnabled = false;
setControlCommand(CP210x_SET_FLOW, 0, dataOff); setControlCommand(CP210x_SET_FLOW, 0, dataOff);
break; break;
case UsbSerialInterface.FLOW_CONTROL_RTS_CTS: case UsbSerialInterface.FLOW_CONTROL_RTS_CTS:
@ -280,6 +282,7 @@ public class CP2102SerialDevice extends UsbSerialDevice
(byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x00 (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x00
}; };
rtsCtsEnabled = true; rtsCtsEnabled = true;
dtrDsrEnabled = false;
setControlCommand(CP210x_SET_FLOW, 0, dataRTSCTS); setControlCommand(CP210x_SET_FLOW, 0, dataRTSCTS);
setControlCommand(CP210x_SET_MHS, CP210x_MHS_RTS_ON, null); setControlCommand(CP210x_SET_MHS, CP210x_MHS_RTS_ON, null);
byte[] commStatusCTS = getCommStatus(); byte[] commStatusCTS = getCommStatus();
@ -294,6 +297,7 @@ public class CP2102SerialDevice extends UsbSerialDevice
(byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x00 (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x00
}; };
dtrDsrEnabled = true; dtrDsrEnabled = true;
rtsCtsEnabled = false;
setControlCommand(CP210x_SET_FLOW, 0, dataDSRDTR); setControlCommand(CP210x_SET_FLOW, 0, dataDSRDTR);
setControlCommand(CP210x_SET_MHS, CP210x_MHS_DTR_ON, null); setControlCommand(CP210x_SET_MHS, CP210x_MHS_DTR_ON, null);
byte[] commStatusDSR = getCommStatus(); 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) if(setControlCommand(FTDI_SIO_SET_BAUD_RATE, FTDI_BAUDRATE_9600, 0, null) < 0)
return false; return false;
// Flow control disabled by default
rtsCtsEnabled = false;
dtrDsrEnabled = false;
// Initialize UsbRequest // Initialize UsbRequest
requestIN = new UsbRequest(); requestIN = new UsbRequest();
requestIN.initialize(connection, inEndpoint); requestIN.initialize(connection, inEndpoint);
@ -332,14 +336,18 @@ public class FTDISerialDevice extends UsbSerialDevice
{ {
case UsbSerialInterface.FLOW_CONTROL_OFF: case UsbSerialInterface.FLOW_CONTROL_OFF:
setControlCommand(FTDI_SIO_SET_FLOW_CTRL, FTDI_SET_FLOW_CTRL_DEFAULT, 0, null); setControlCommand(FTDI_SIO_SET_FLOW_CTRL, FTDI_SET_FLOW_CTRL_DEFAULT, 0, null);
rtsCtsEnabled = false;
dtrDsrEnabled = false;
break; break;
case UsbSerialInterface.FLOW_CONTROL_RTS_CTS: case UsbSerialInterface.FLOW_CONTROL_RTS_CTS:
rtsCtsEnabled = true; rtsCtsEnabled = true;
dtrDsrEnabled = false;
int indexRTSCTS = 0x0001; int indexRTSCTS = 0x0001;
setControlCommand(FTDI_SIO_SET_FLOW_CTRL, FTDI_SET_FLOW_CTRL_DEFAULT, indexRTSCTS, null); setControlCommand(FTDI_SIO_SET_FLOW_CTRL, FTDI_SET_FLOW_CTRL_DEFAULT, indexRTSCTS, null);
break; break;
case UsbSerialInterface.FLOW_CONTROL_DSR_DTR: case UsbSerialInterface.FLOW_CONTROL_DSR_DTR:
dtrDsrEnabled = true; dtrDsrEnabled = true;
rtsCtsEnabled = false;
int indexDSRDTR = 0x0002; int indexDSRDTR = 0x0002;
setControlCommand(FTDI_SIO_SET_FLOW_CTRL, FTDI_SET_FLOW_CTRL_DEFAULT, indexDSRDTR , null); setControlCommand(FTDI_SIO_SET_FLOW_CTRL, FTDI_SET_FLOW_CTRL_DEFAULT, indexDSRDTR , null);
break; break;
@ -460,15 +468,17 @@ public class FTDISerialDevice extends UsbSerialDevice
boolean cts = (data[0] & 0x10) == 0x10; boolean cts = (data[0] & 0x10) == 0x10;
boolean dsr = (data[0] & 0x20) == 0x20; boolean dsr = (data[0] & 0x20) == 0x20;
if(cts != ctsState) //CTS if(rtsCtsEnabled &&
cts != ctsState && ctsCallback != null) //CTS
{ {
ctsState = !ctsState; ctsState = !ctsState;
ctsCallback.onCTSChanged(ctsState); ctsCallback.onCTSChanged(ctsState);
} }
if(dsr != dsrState) //DSR if(dtrDsrEnabled &&
dsr != dsrState && dsrCallback != null) //DSR
{ {
dsrState = ! dsrState; dsrState = !dsrState;
dsrCallback.onDSRChanged(dsrState); dsrCallback.onDSRChanged(dsrState);
} }
} }