diff --git a/mcdp/src/ch/ntb/mcdp/uart/UartDispatch.java b/mcdp/src/ch/ntb/mcdp/uart/UartDispatch.java
index 791765c..24d8b96 100644
--- a/mcdp/src/ch/ntb/mcdp/uart/UartDispatch.java
+++ b/mcdp/src/ch/ntb/mcdp/uart/UartDispatch.java
@@ -13,16 +13,17 @@ import ch.ntb.usb.USBTimeoutException;
public class UartDispatch {
/**
- * Maximal number of bytes allowed as UART payload. This value is specified
- * in UART_INBUF_LEN in the file uart.h.
+ * Size of the UART buffer on the USB controller.
+ * This value is specified in UART_BUF_LEN in the file
+ * uart.h.
*/
- public static final int MAX_UART_PAYLOAD = 128;
+ public static final int UART_BUF_LEN = 256;
private static boolean running = false;
- static Thread dispatchThread;
+ private static Thread dispatchThread;
- static LinkedList uarts = new LinkedList();
+ private static LinkedList uarts = new LinkedList();
/**
* Starts the read thread for all Uarts. If the thread is already running,
diff --git a/mcdp/src/ch/ntb/mcdp/uart/UartOutputStream.java b/mcdp/src/ch/ntb/mcdp/uart/UartOutputStream.java
index a83667b..a88fdba 100644
--- a/mcdp/src/ch/ntb/mcdp/uart/UartOutputStream.java
+++ b/mcdp/src/ch/ntb/mcdp/uart/UartOutputStream.java
@@ -36,7 +36,7 @@ public class UartOutputStream extends OutputStream {
}
int newLen = 0;
do {
- newLen = Math.min(len, UartDispatch.MAX_UART_PAYLOAD);
+ newLen = Math.min(len, UartDispatch.UART_BUF_LEN);
byte[] data = new byte[newLen];
for (int i = 0; i < newLen; i++) {
data[i] = b[off + i];
@@ -47,6 +47,6 @@ public class UartOutputStream extends OutputStream {
throw new IOException(e.getMessage());
}
len -= newLen;
- } while (len > UartDispatch.MAX_UART_PAYLOAD);
+ } while (len > UartDispatch.UART_BUF_LEN);
}
}
diff --git a/mcdp/src/ch/ntb/mcdp/uart/blackbox/Uart0.java b/mcdp/src/ch/ntb/mcdp/uart/blackbox/Uart0.java
index 718d176..5ebb1ac 100644
--- a/mcdp/src/ch/ntb/mcdp/uart/blackbox/Uart0.java
+++ b/mcdp/src/ch/ntb/mcdp/uart/blackbox/Uart0.java
@@ -14,7 +14,7 @@ public class Uart0 {
*/
private static final byte STYPE_UART_0_IN = 0x11;
- public static final int MAX_UART_PAYLOAD = UartDispatch.MAX_UART_PAYLOAD;
+ public static final int MAX_UART_PAYLOAD = UartDispatch.UART_BUF_LEN;
private static void write(byte packetSubType, byte[] data, int len)
throws USBException {
diff --git a/mcdp/src/ch/ntb/mcdp/uart/blackbox/test/UartTest.java b/mcdp/src/ch/ntb/mcdp/uart/blackbox/test/UartTest.java
index 0ecf2b2..d248bc8 100644
--- a/mcdp/src/ch/ntb/mcdp/uart/blackbox/test/UartTest.java
+++ b/mcdp/src/ch/ntb/mcdp/uart/blackbox/test/UartTest.java
@@ -30,7 +30,7 @@ public class UartTest {
}
static public void button1() {
- byte[] buffer = new byte[UartDispatch.MAX_UART_PAYLOAD];
+ byte[] buffer = new byte[UartDispatch.UART_BUF_LEN];
for (int i = 0; i < buffer.length; i++) {
buffer[i] = (byte) ('0' + (i % ('z' - '0')));
}
diff --git a/mcdp/src/ch/ntb/mcdp/uart/test/UartTest.java b/mcdp/src/ch/ntb/mcdp/uart/test/UartTest.java
index b6c4e1b..14b64c8 100644
--- a/mcdp/src/ch/ntb/mcdp/uart/test/UartTest.java
+++ b/mcdp/src/ch/ntb/mcdp/uart/test/UartTest.java
@@ -15,7 +15,7 @@ public class UartTest {
static InputStream in;
- static byte[] buffer = new byte[UartDispatch.MAX_UART_PAYLOAD];
+ static byte[] buffer = new byte[UartDispatch.UART_BUF_LEN];
public static void init() {
@@ -49,7 +49,7 @@ public class UartTest {
}
static public void button1() {
- byte[] buffer = new byte[UartDispatch.MAX_UART_PAYLOAD];
+ byte[] buffer = new byte[UartDispatch.UART_BUF_LEN];
for (int i = 0; i < buffer.length; i++) {
buffer[i] = (byte) ('0' + (i % ('z' - '0')));
}
diff --git a/mcdp/src/ch/ntb/mcdp/usb/Dispatch.java b/mcdp/src/ch/ntb/mcdp/usb/Dispatch.java
index 5c6b016..63b7c56 100644
--- a/mcdp/src/ch/ntb/mcdp/usb/Dispatch.java
+++ b/mcdp/src/ch/ntb/mcdp/usb/Dispatch.java
@@ -8,7 +8,7 @@ import ch.ntb.usb.USB;
import ch.ntb.usb.USBException;
public class Dispatch {
-
+
private static Logger logger = LogUtil.ch_ntb_mcdp_usb;
// Main Types
@@ -44,7 +44,7 @@ public class Dispatch {
*/
public static final byte STYPE_ERROR_PACKET_END = 0x72;
- private static byte[] usbData = new byte[USB.MAX_DATA_SIZE];
+ private static byte[] usbData = new byte[USB.HIGHSPEED_MAX_BULK_PACKET_SIZE];
private static LinkedList bdiData, uartData;
@@ -69,7 +69,8 @@ public class Dispatch {
}
mainType = data[index++];
subtype = data[index++];
- int dataLen = (data[index++] & 0xFF) * 0x100 + (data[index++] & 0xFF);
+ int dataLen = (data[index++] & 0xFF) * 0x100
+ + (data[index++] & 0xFF);
if (data[index + dataLen] != DataPacket.PACKET_END) {
throw new DispatchException("PACKET_END or packetLen ("
+ dataLen + " bytes) wrong");
@@ -118,7 +119,8 @@ public class Dispatch {
if (!bdiData.isEmpty()) {
return bdiData.poll();
}
- int dataLength = USBDevice.read_BDI(usbData, USB.MAX_DATA_SIZE);
+ int dataLength = USBDevice.read_BDI(usbData, USBDevice
+ .getMaxPacketSize());
dispatch(usbData, dataLength);
return bdiData.poll();
}
@@ -128,7 +130,8 @@ public class Dispatch {
logger.info("buffer not empty");
return uartData.poll();
}
- int dataLength = USBDevice.read_UART(usbData, USB.MAX_DATA_SIZE);
+ int dataLength = USBDevice.read_UART(usbData, USBDevice
+ .getMaxPacketSize());
dispatch(usbData, dataLength);
return uartData.poll();
}
diff --git a/mcdp/src/ch/ntb/mcdp/usb/USBDevice.java b/mcdp/src/ch/ntb/mcdp/usb/USBDevice.java
index d6368bd..843fe0f 100644
--- a/mcdp/src/ch/ntb/mcdp/usb/USBDevice.java
+++ b/mcdp/src/ch/ntb/mcdp/usb/USBDevice.java
@@ -27,11 +27,10 @@ public class USBDevice {
private static final int BDI_Timeout = 1000;
private static final int UART_Timeout = 50;
-
+
private static Device dev;
static {
- // set data for our device
dev = USB.getDevice(IdVendor, IdProduct);
}
@@ -51,8 +50,7 @@ public class USBDevice {
dev.bulkwrite(OUT_Endpoint_BDI, data, length, BDI_Timeout);
}
- public static synchronized int read_BDI(byte[] data, int size)
- throws USBException {
+ public static int read_BDI(byte[] data, int size) throws USBException {
return dev.bulkread(IN_Endpoint_BDI, data, size, BDI_Timeout);
}
@@ -60,8 +58,15 @@ public class USBDevice {
dev.bulkwrite(OUT_Endpoint_UART, data, length, UART_Timeout);
}
- public static synchronized int read_UART(byte[] data, int size)
- throws USBException {
+ public static int read_UART(byte[] data, int size) throws USBException {
return dev.bulkread(IN_Endpoint_UART, data, size, UART_Timeout);
}
+
+ public static int getMaxPacketSize() {
+ return dev.getMaxPacketSize();
+ }
+
+ public static Device getDevice() {
+ return dev;
+ }
}