RTS and DTR signals can be raised in the FTDI device now

pull/26/head
Felipe Herranz 2016-01-31 22:02:10 +01:00
rodzic adfcea8bbb
commit b47e5311a6
1 zmienionych plików z 25 dodań i 2 usunięć

Wyświetl plik

@ -22,6 +22,17 @@ public class FTDISerialDevice extends UsbSerialDevice
private static final int FTDI_REQTYPE_HOST2DEVICE = 0x40;
/**
* RTS and DTR values obtained from FreeBSD FTDI driver
* https://github.com/freebsd/freebsd/blob/70b396ca9c54a94c3fad73c3ceb0a76dffbde635/sys/dev/usb/serial/uftdi_reg.h
*/
private static final int FTDI_SIO_SET_DTR_MASK = 0x1;
private static final int FTDI_SIO_SET_DTR_HIGH = (1 | (FTDI_SIO_SET_DTR_MASK << 8));
private static final int FTDI_SIO_SET_DTR_LOW = (0 | (FTDI_SIO_SET_DTR_MASK << 8));
private static final int FTDI_SIO_SET_RTS_MASK = 0x2;
private static final int FTDI_SIO_SET_RTS_HIGH = (2 | (FTDI_SIO_SET_RTS_MASK << 8));
private static final int FTDI_SIO_SET_RTS_LOW = (0 | (FTDI_SIO_SET_RTS_MASK << 8));
public static final int FTDI_BAUDRATE_300 = 0x2710;
public static final int FTDI_BAUDRATE_600 = 0x1388;
public static final int FTDI_BAUDRATE_1200 = 0x09c4;
@ -346,13 +357,25 @@ public class FTDISerialDevice extends UsbSerialDevice
@Override
public void setRTS(boolean state)
{
//TODO
if(state)
{
setControlCommand(FTDI_SIO_MODEM_CTRL, FTDI_SIO_SET_RTS_HIGH, 0, null);
}else
{
setControlCommand(FTDI_SIO_MODEM_CTRL, FTDI_SIO_SET_RTS_LOW, 0, null);
}
}
@Override
public void setDTR(boolean state)
{
//TODO
if(state)
{
setControlCommand(FTDI_SIO_MODEM_CTRL, FTDI_SIO_SET_DTR_HIGH, 0, null);
}else
{
setControlCommand(FTDI_SIO_MODEM_CTRL, FTDI_SIO_SET_DTR_LOW, 0, null);
}
}
@Override