- blackbox interface
git-svn-id: https://svn.code.sf.net/p/libusbjava/code/trunk@72 94ad28fe-ef68-46b1-9651-e7ae4fcf1c4c
This commit is contained in:
74
mcdp/src/ch/ntb/mcdp/uart/blackbox/Uart0.java
Normal file
74
mcdp/src/ch/ntb/mcdp/uart/blackbox/Uart0.java
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
package ch.ntb.mcdp.uart.blackbox;
|
||||||
|
|
||||||
|
import ch.ntb.mcdp.uart.UartDispatch;
|
||||||
|
import ch.ntb.mcdp.usb.DataPacket;
|
||||||
|
import ch.ntb.mcdp.usb.Dispatch;
|
||||||
|
import ch.ntb.mcdp.usb.USBDevice;
|
||||||
|
import ch.ntb.usb.USBException;
|
||||||
|
|
||||||
|
public class Uart0 {
|
||||||
|
|
||||||
|
// UART 0 Subtypes
|
||||||
|
/**
|
||||||
|
* Data to UART 0
|
||||||
|
*/
|
||||||
|
private static final byte STYPE_UART_0_IN = 0x11;
|
||||||
|
|
||||||
|
public static final int MAX_UART_PAYLOAD = UartDispatch.MAX_UART_PAYLOAD;
|
||||||
|
|
||||||
|
private static void write(byte packetSubType, byte[] data, int len)
|
||||||
|
throws USBException {
|
||||||
|
byte[] usbData = new byte[len + DataPacket.PACKET_MIN_LENGTH];
|
||||||
|
usbData[0] = DataPacket.PACKET_HEADER;
|
||||||
|
usbData[1] = Dispatch.MTYPE_UART;
|
||||||
|
usbData[2] = packetSubType;
|
||||||
|
usbData[3] = (byte) (len / 0x100);
|
||||||
|
usbData[4] = (byte) (len & 0xFF);
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
|
usbData[DataPacket.PACKET_DATA_OFFSET + i] = data[i];
|
||||||
|
}
|
||||||
|
usbData[DataPacket.PACKET_DATA_OFFSET + len] = DataPacket.PACKET_END;
|
||||||
|
USBDevice.write_BDI(usbData, usbData.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write a Uart data-packet to the target. The maximal number of bytes is
|
||||||
|
* specified by <code>MAX_UART_PAYLOAD</code>. If more data is sent in
|
||||||
|
* one packet, only <code>MAX_UART_PAYLOAD</code> bytes are forwarded to
|
||||||
|
* the uart.
|
||||||
|
*
|
||||||
|
* @param data
|
||||||
|
* The data to be sent.
|
||||||
|
* @param len
|
||||||
|
* Length of the data to be sent.
|
||||||
|
* @return true if the data has been sent successfully
|
||||||
|
*/
|
||||||
|
public static boolean write(byte[] data, int len) {
|
||||||
|
try {
|
||||||
|
write(STYPE_UART_0_IN, data, len);
|
||||||
|
} catch (USBException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Try to read uart data from the device.
|
||||||
|
*
|
||||||
|
* @return uart data or null if no data is available or an exception occured
|
||||||
|
*/
|
||||||
|
public static byte[] read() {
|
||||||
|
DataPacket packet;
|
||||||
|
try {
|
||||||
|
System.out.print("Data: ");
|
||||||
|
packet = Dispatch.readUART();
|
||||||
|
for (int i = 0; i < packet.data.length; i++) {
|
||||||
|
System.out.print((char) packet.data[i] + ", ");
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
return packet.data;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user