From 19beda957d9ce7d99881126a02a2bb95dac12b4d Mon Sep 17 00:00:00 2001 From: Felipe Herranz Date: Mon, 29 Oct 2018 00:01:44 +0100 Subject: [PATCH] allowing RTS and DTR turned on/off on CDC --- .../com/felhr/usbserial/CDCSerialDevice.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/usbserial/src/main/java/com/felhr/usbserial/CDCSerialDevice.java b/usbserial/src/main/java/com/felhr/usbserial/CDCSerialDevice.java index b3230e6..717fd8e 100644 --- a/usbserial/src/main/java/com/felhr/usbserial/CDCSerialDevice.java +++ b/usbserial/src/main/java/com/felhr/usbserial/CDCSerialDevice.java @@ -19,6 +19,10 @@ public class CDCSerialDevice extends UsbSerialDevice private static final int CDC_GET_LINE_CODING = 0x21; private static final int CDC_SET_CONTROL_LINE_STATE = 0x22; + private static final int CDC_SET_CONTROL_LINE_STATE_RTS = 0x2; + private static final int CDC_SET_CONTROL_LINE_STATE_DTR = 0x1; + + /*** * Default Serial Configuration * Baud rate: 115200 @@ -47,6 +51,8 @@ public class CDCSerialDevice extends UsbSerialDevice private int initialBaudRate = 0; + private int controlLineState = CDC_CONTROL_LINE_ON; + public CDCSerialDevice(UsbDevice device, UsbDeviceConnection connection) { this(device, connection, -1); @@ -235,13 +241,22 @@ public class CDCSerialDevice extends UsbSerialDevice @Override public void setRTS(boolean state) { - //TODO + if (state) + controlLineState |= CDC_SET_CONTROL_LINE_STATE_RTS; + else + controlLineState &= ~CDC_SET_CONTROL_LINE_STATE_RTS; + setControlCommand(CDC_SET_CONTROL_LINE_STATE, controlLineState, null); + } @Override public void setDTR(boolean state) { - //TODO + if (state) + controlLineState |= CDC_SET_CONTROL_LINE_STATE_DTR; + else + controlLineState &= ~CDC_SET_CONTROL_LINE_STATE_DTR; + setControlCommand(CDC_SET_CONTROL_LINE_STATE, controlLineState, null); } @Override