first version with custom baudrates

pull/243/head
Felipe Herranz 2019-03-31 22:10:21 +02:00
rodzic ac88abca1a
commit 4108a6905e
1 zmienionych plików z 43 dodań i 35 usunięć

Wyświetl plik

@ -187,6 +187,12 @@ public class FTDISerialDevice extends UsbSerialDevice
@Override
public void setBaudRate(int baudRate)
{
short[] encodedBaudRate = encodedBaudRate(baudRate);
if(encodedBaudRate != null) {
connection.controlTransfer(FTDI_REQTYPE_HOST2DEVICE, FTDI_SIO_SET_BAUD_RATE
, encodedBaudRate[0], encodedBaudRate[1], null, 0, USB_TIMEOUT);
}else{
int value = 0;
if(baudRate >= 0 && baudRate <= 300 )
value = FTDI_BAUDRATE_300;
@ -218,8 +224,10 @@ public class FTDISerialDevice extends UsbSerialDevice
value = FTDI_BAUDRATE_921600;
else
value = FTDI_BAUDRATE_9600;
setControlCommand(FTDI_SIO_SET_BAUD_RATE, value, 0);
}
}
@Override
public void setDataBits(int dataBits)
@ -734,7 +742,7 @@ public class FTDISerialDevice extends UsbSerialDevice
// Encoding baudrate as freebsd driver:
// https://github.com/freebsd/freebsd/blob/1d6e4247415d264485ee94b59fdbc12e0c566fd0/sys/dev/usb/serial/uftdi.c
private short[] encodeBaudRate(int baudRate){
private short[] encodedBaudRate(int baudRate){
boolean isFT232A = false;
boolean clk12MHz = false;
boolean hIndex = false;
@ -808,8 +816,8 @@ public class FTDISerialDevice extends UsbSerialDevice
}
divisor |= (encodedFraction[frac] << 14) | fastClk;
ret[0] = (short) divisor;
ret[1] = (short) (divisor >> 16);
ret[0] = (short) divisor; //loBits
ret[1] = (short) (divisor >> 16); //hiBits
if(hIndex) {