From 438202bfef83bd0eac69c8a859a63af81ac2a5c3 Mon Sep 17 00:00:00 2001 From: schlaepfer Date: Fri, 17 Feb 2006 17:04:25 +0000 Subject: [PATCH] - structural changes (Device as instance) git-svn-id: https://svn.code.sf.net/p/libusbjava/code/trunk@101 94ad28fe-ef68-46b1-9651-e7ae4fcf1c4c --- mcdp/src/ch/ntb/mcdp/uart/UartDispatch.java | 11 ++++++----- mcdp/src/ch/ntb/mcdp/uart/UartOutputStream.java | 4 ++-- mcdp/src/ch/ntb/mcdp/uart/blackbox/Uart0.java | 2 +- .../ntb/mcdp/uart/blackbox/test/UartTest.java | 2 +- mcdp/src/ch/ntb/mcdp/uart/test/UartTest.java | 4 ++-- mcdp/src/ch/ntb/mcdp/usb/Dispatch.java | 13 ++++++++----- mcdp/src/ch/ntb/mcdp/usb/USBDevice.java | 17 +++++++++++------ 7 files changed, 31 insertions(+), 22 deletions(-) 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; + } }