add a setBreak interface to set the break feature, now tested on FTDI chip.

pull/240/head
xiongyi 2019-04-26 10:03:48 +08:00
rodzic b6aef50017
commit 33fed5e09c
9 zmienionych plików z 61 dodań i 0 usunięć

Wyświetl plik

@ -203,6 +203,12 @@ public class BLED112SerialDevice extends UsbSerialDevice
}
@Override
public void setBreak(boolean state)
{
//TODO
}
@Override
public void setRTS(boolean state)
{

Wyświetl plik

@ -245,6 +245,12 @@ public class CDCSerialDevice extends UsbSerialDevice
}
@Override
public void setBreak(boolean state)
{
//TODO
}
@Override
public void setRTS(boolean state)
{

Wyświetl plik

@ -267,6 +267,12 @@ public class CH34xSerialDevice extends UsbSerialDevice
}
@Override
public void setBreak(boolean state)
{
//TODO Auto-generated method stub
}
@Override
public void setParity(int parity)
{

Wyświetl plik

@ -326,6 +326,12 @@ public class CP2102SerialDevice extends UsbSerialDevice
}
}
@Override
public void setBreak(boolean state)
{
//TODO Auto-generated method stub
}
@Override
public void setRTS(boolean state)
{

Wyświetl plik

@ -36,6 +36,13 @@ public class FTDISerialDevice extends UsbSerialDevice
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));
/**
* BREAK on/off values obtained from linux driver
* https://github.com/torvalds/linux/blob/master/drivers/usb/serial/ftdi_sio.h
*/
private static final int FTDI_SIO_SET_BREAK_ON = (1<<14);
private static final int FTDI_SIO_SET_BREAK_OFF = (0<<14);
public static final int FTDI_BAUDRATE_300 = 0x2710;
public static final int FTDI_BAUDRATE_600 = 0x1388;
public static final int FTDI_BAUDRATE_1200 = 0x09c4;
@ -375,6 +382,21 @@ public class FTDISerialDevice extends UsbSerialDevice
}
}
/**
* BREAK on/off methods obtained from linux driver
* https://github.com/torvalds/linux/blob/master/drivers/usb/serial/ftdi_sio.c
*/
@Override
public void setBreak(boolean state)
{
if(state){
currentSioSetData |= FTDI_SIO_SET_BREAK_ON;
}else{
currentSioSetData &= ~(FTDI_SIO_SET_BREAK_ON);
}
setControlCommand(FTDI_SIO_SET_DATA, currentSioSetData, 0);
}
@Override
public void setRTS(boolean state)
{

Wyświetl plik

@ -264,6 +264,12 @@ public class PL2303SerialDevice extends UsbSerialDevice
}
@Override
public void setBreak(boolean state)
{
//TODO
}
@Override
public void setRTS(boolean state)
{

Wyświetl plik

@ -227,6 +227,8 @@ public abstract class UsbSerialDevice implements UsbSerialInterface
public abstract void setParity(int parity);
@Override
public abstract void setFlowControl(int flowControl);
@Override
public abstract void setBreak(boolean state);
public SerialInputStream getInputStream() {
if(asyncMode)

Wyświetl plik

@ -46,6 +46,7 @@ public interface UsbSerialInterface
void setStopBits(int stopBits);
void setParity(int parity);
void setFlowControl(int flowControl);
void setBreak(boolean state);
// Flow control commands and interface callback
void setRTS(boolean state);

Wyświetl plik

@ -297,6 +297,12 @@ public class XdcVcpSerialDevice extends UsbSerialDevice
}
}
@Override
public void setBreak(boolean state)
{
//TODO
}
@Override
public void setRTS(boolean state)
{