- TestApp ported from SWT to Swing
- Start TestApp from UsbView with selected interface - some refactoring git-svn-id: https://svn.code.sf.net/p/libusbjava/code/trunk@225 94ad28fe-ef68-46b1-9651-e7ae4fcf1c4c
This commit is contained in:
@@ -2,10 +2,9 @@ Manifest-Version: 1.0
|
|||||||
Bundle-ManifestVersion: 2
|
Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: Inf USB Library
|
Bundle-Name: Inf USB Library
|
||||||
Bundle-SymbolicName: ch.ntb.usb
|
Bundle-SymbolicName: ch.ntb.usb
|
||||||
Bundle-Version: 1.0.0
|
Bundle-Version: 1.0.2
|
||||||
Bundle-Localization: plugin
|
Bundle-Localization: plugin
|
||||||
Bundle-Vendor: inf.ntb.ch
|
Bundle-Vendor: inf.ntb.ch
|
||||||
Eclipse-LazyStart: false
|
Eclipse-LazyStart: false
|
||||||
Require-Bundle: org.junit4,
|
Require-Bundle: org.junit4
|
||||||
org.eclipse.swt
|
|
||||||
Export-Package: ch.ntb.usb
|
Export-Package: ch.ntb.usb
|
||||||
|
|||||||
702
java/src/ch/ntb/usb/testApp/TestApp.java
Normal file
702
java/src/ch/ntb/usb/testApp/TestApp.java
Normal file
@@ -0,0 +1,702 @@
|
|||||||
|
package ch.ntb.usb.testApp;
|
||||||
|
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.FlowLayout;
|
||||||
|
import java.awt.Font;
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.event.ItemEvent;
|
||||||
|
|
||||||
|
import javax.swing.BorderFactory;
|
||||||
|
import javax.swing.BoxLayout;
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JComboBox;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
import javax.swing.UIManager;
|
||||||
|
import javax.swing.border.TitledBorder;
|
||||||
|
|
||||||
|
public class TestApp extends JFrame {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 994508729204158681L;
|
||||||
|
TestDevice dev;
|
||||||
|
private JPanel rootPanel = null;
|
||||||
|
private JPanel sendReceivePanel = null;
|
||||||
|
private JPanel settingsPanel = null;
|
||||||
|
private JButton openDeviceButton = null;
|
||||||
|
private JButton closeDevice = null;
|
||||||
|
private JButton resetButton = null;
|
||||||
|
private JPanel settingsPanelTop = null;
|
||||||
|
private JPanel settingsPanelBottom = null;
|
||||||
|
JTextField vendorIDText = null;
|
||||||
|
JTextField productIDText = null;
|
||||||
|
private JPanel vendorIDPanel = null;
|
||||||
|
private JPanel productIDPanel = null;
|
||||||
|
private JPanel configurationPanel = null;
|
||||||
|
JTextField configurationText = null;
|
||||||
|
private JPanel interfacePanel = null;
|
||||||
|
JTextField interfaceText = null;
|
||||||
|
private JPanel altInterfacePanel = null;
|
||||||
|
JTextField altInterfaceText = null;
|
||||||
|
private JPanel settingsPanelTop2Left = null;
|
||||||
|
private JPanel settingsPanelTop2Right = null;
|
||||||
|
private JPanel outEpPanel = null;
|
||||||
|
JTextField outEpText = null;
|
||||||
|
private JPanel inEpPanel = null;
|
||||||
|
JTextField inEpText = null;
|
||||||
|
private JPanel timeoutPanel = null;
|
||||||
|
private JTextField timeoutText = null;
|
||||||
|
private JPanel sendDataPanel = null;
|
||||||
|
private JPanel sendRecButtonsPanel = null;
|
||||||
|
private JButton sendButton = null;
|
||||||
|
private JButton recButton = null;
|
||||||
|
JTextField sendDataText = null;
|
||||||
|
JComboBox sendTypeComboBox = null;
|
||||||
|
private JComboBox recTypeComboBox = null;
|
||||||
|
private JPanel sendRecButtonsPanelTop = null;
|
||||||
|
private JPanel sendRecButtonsPanelBottom = null;
|
||||||
|
|
||||||
|
public TestApp(TestDevice devInfo) {
|
||||||
|
super();
|
||||||
|
this.dev = devInfo;
|
||||||
|
initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initialize() {
|
||||||
|
|
||||||
|
this.setTitle("USB Test Application");
|
||||||
|
|
||||||
|
this.setContentPane(getRootPanel());
|
||||||
|
|
||||||
|
// read default values
|
||||||
|
this.vendorIDText.setText(toHexString(dev.getIdVendor() & 0xffff));
|
||||||
|
this.productIDText.setText(toHexString(dev.getIdProduct() & 0xffff));
|
||||||
|
this.configurationText.setText(new Integer(dev.getConfiguration())
|
||||||
|
.toString());
|
||||||
|
this.interfaceText.setText(new Integer(dev.getInterface()).toString());
|
||||||
|
this.altInterfaceText.setText(new Integer(dev.getAltinterface())
|
||||||
|
.toString());
|
||||||
|
this.timeoutText.setText(new Integer(dev.getTimeout()).toString());
|
||||||
|
this.sendDataText.setText(dev.getSendData());
|
||||||
|
setOutEpAddr();
|
||||||
|
setInEpAddr();
|
||||||
|
|
||||||
|
this.setSize(750, 300);
|
||||||
|
this.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setOutEpAddr() {
|
||||||
|
switch (dev.getOutMode()) {
|
||||||
|
case Bulk:
|
||||||
|
this.outEpText.setText(toHexString(dev.getOutEPBulk()));
|
||||||
|
break;
|
||||||
|
case Interrupt:
|
||||||
|
this.outEpText.setText(toHexString(dev.getOutEPInt()));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setInEpAddr() {
|
||||||
|
switch (dev.getInMode()) {
|
||||||
|
case Bulk:
|
||||||
|
this.inEpText.setText(toHexString(dev.getInEPBulk()));
|
||||||
|
break;
|
||||||
|
case Interrupt:
|
||||||
|
this.inEpText.setText(toHexString(dev.getInEPInt()));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getRootPanel() {
|
||||||
|
if (rootPanel == null) {
|
||||||
|
rootPanel = new JPanel();
|
||||||
|
rootPanel
|
||||||
|
.setLayout(new BoxLayout(getRootPanel(), BoxLayout.Y_AXIS));
|
||||||
|
rootPanel.add(getSettingsPanel(), null);
|
||||||
|
rootPanel.add(getSendReceivePanel(), null);
|
||||||
|
}
|
||||||
|
return rootPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getSendReceivePanel() {
|
||||||
|
if (sendReceivePanel == null) {
|
||||||
|
BorderLayout borderLayout2 = new BorderLayout();
|
||||||
|
borderLayout2.setHgap(5);
|
||||||
|
sendReceivePanel = new JPanel();
|
||||||
|
sendReceivePanel.setLayout(borderLayout2);
|
||||||
|
sendReceivePanel.setBorder(BorderFactory.createTitledBorder(null,
|
||||||
|
"Send and Receive Data",
|
||||||
|
TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
sendReceivePanel.add(getSendRecButtonsPanel(), BorderLayout.NORTH);
|
||||||
|
sendReceivePanel.add(getSendDataPanel(), BorderLayout.SOUTH);
|
||||||
|
}
|
||||||
|
return sendReceivePanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getSettingsPanel() {
|
||||||
|
if (settingsPanel == null) {
|
||||||
|
settingsPanel = new JPanel();
|
||||||
|
settingsPanel.setLayout(new BoxLayout(getSettingsPanel(),
|
||||||
|
BoxLayout.Y_AXIS));
|
||||||
|
settingsPanel.setBorder(BorderFactory.createTitledBorder(null,
|
||||||
|
"Device Settings", TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
settingsPanel.add(getSettingsPanelTop(), null);
|
||||||
|
settingsPanel.add(getSettingsPanelBottom(), null);
|
||||||
|
}
|
||||||
|
return settingsPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JButton getOpenDeviceButton() {
|
||||||
|
if (openDeviceButton == null) {
|
||||||
|
openDeviceButton = new JButton();
|
||||||
|
openDeviceButton.setText("Open Device");
|
||||||
|
openDeviceButton
|
||||||
|
.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||||
|
// update values for the device
|
||||||
|
dev.setIdVendor((short) parseInt(vendorIDText
|
||||||
|
.getText().trim()));
|
||||||
|
dev.setIdProduct((short) parseInt(productIDText
|
||||||
|
.getText().trim()));
|
||||||
|
dev.setConfiguration(parseInt(configurationText
|
||||||
|
.getText().trim()));
|
||||||
|
dev.setInterface(parseInt(interfaceText.getText()
|
||||||
|
.trim()));
|
||||||
|
dev.setAltinterface(parseInt(altInterfaceText
|
||||||
|
.getText().trim()));
|
||||||
|
// opent the device
|
||||||
|
dev.openUsbDevice();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return openDeviceButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JButton getCloseDevice() {
|
||||||
|
if (closeDevice == null) {
|
||||||
|
closeDevice = new JButton();
|
||||||
|
closeDevice.setText("Close Device");
|
||||||
|
closeDevice.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||||
|
dev.closeUsbDevice();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return closeDevice;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JButton getResetButton() {
|
||||||
|
if (resetButton == null) {
|
||||||
|
resetButton = new JButton();
|
||||||
|
resetButton.setText("Reset Device");
|
||||||
|
resetButton.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||||
|
dev.resetUsbDevice();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return resetButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getSettingsPanelTop() {
|
||||||
|
if (settingsPanelTop == null) {
|
||||||
|
FlowLayout flowLayout = new FlowLayout();
|
||||||
|
flowLayout.setVgap(1);
|
||||||
|
flowLayout.setAlignment(FlowLayout.LEFT);
|
||||||
|
settingsPanelTop = new JPanel();
|
||||||
|
settingsPanelTop.setLayout(flowLayout);
|
||||||
|
settingsPanelTop.add(getVendorIDPanel(), null);
|
||||||
|
settingsPanelTop.add(getProductIDPanel(), null);
|
||||||
|
settingsPanelTop.add(getConfigurationPanel(), null);
|
||||||
|
settingsPanelTop.add(getInterfacePanel(), null);
|
||||||
|
settingsPanelTop.add(getAltInterfacePanel(), null);
|
||||||
|
}
|
||||||
|
return settingsPanelTop;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getSettingsPanelBottom() {
|
||||||
|
if (settingsPanelBottom == null) {
|
||||||
|
FlowLayout flowLayout1 = new FlowLayout();
|
||||||
|
flowLayout1.setVgap(1);
|
||||||
|
flowLayout1.setHgap(0);
|
||||||
|
flowLayout1.setAlignment(FlowLayout.LEFT);
|
||||||
|
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
|
||||||
|
gridBagConstraints1.gridx = -1;
|
||||||
|
gridBagConstraints1.gridy = -1;
|
||||||
|
settingsPanelBottom = new JPanel();
|
||||||
|
settingsPanelBottom.setLayout(flowLayout1);
|
||||||
|
settingsPanelBottom.add(getSettingsPanelTop2Left(), null);
|
||||||
|
settingsPanelBottom.add(getSettingsPanelTop2Right(), null);
|
||||||
|
}
|
||||||
|
return settingsPanelBottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JTextField getVendorIDText() {
|
||||||
|
if (vendorIDText == null) {
|
||||||
|
vendorIDText = new JTextField();
|
||||||
|
vendorIDText.setPreferredSize(new Dimension(100, 20));
|
||||||
|
}
|
||||||
|
return vendorIDText;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JTextField getProductIDText() {
|
||||||
|
if (productIDText == null) {
|
||||||
|
productIDText = new JTextField();
|
||||||
|
productIDText.setPreferredSize(new Dimension(100, 20));
|
||||||
|
}
|
||||||
|
return productIDText;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getVendorIDPanel() {
|
||||||
|
if (vendorIDPanel == null) {
|
||||||
|
GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
|
||||||
|
gridBagConstraints3.fill = GridBagConstraints.VERTICAL;
|
||||||
|
gridBagConstraints3.gridy = -1;
|
||||||
|
gridBagConstraints3.weightx = 1.0;
|
||||||
|
gridBagConstraints3.gridx = -1;
|
||||||
|
GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
|
||||||
|
gridBagConstraints5.gridx = -1;
|
||||||
|
gridBagConstraints5.gridy = -1;
|
||||||
|
vendorIDPanel = new JPanel();
|
||||||
|
vendorIDPanel.setBorder(BorderFactory.createTitledBorder(null,
|
||||||
|
"VendorID", TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
vendorIDPanel.setLayout(new BoxLayout(getVendorIDPanel(),
|
||||||
|
BoxLayout.X_AXIS));
|
||||||
|
vendorIDPanel.add(getVendorIDText(), null);
|
||||||
|
}
|
||||||
|
return vendorIDPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getProductIDPanel() {
|
||||||
|
if (productIDPanel == null) {
|
||||||
|
GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
|
||||||
|
gridBagConstraints4.fill = GridBagConstraints.VERTICAL;
|
||||||
|
gridBagConstraints4.gridy = -1;
|
||||||
|
gridBagConstraints4.weightx = 1.0;
|
||||||
|
gridBagConstraints4.gridx = -1;
|
||||||
|
productIDPanel = new JPanel();
|
||||||
|
productIDPanel.setBorder(BorderFactory.createTitledBorder(null,
|
||||||
|
"ProductID", TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
productIDPanel.setLayout(new BoxLayout(getProductIDPanel(),
|
||||||
|
BoxLayout.X_AXIS));
|
||||||
|
productIDPanel.add(getProductIDText(), null);
|
||||||
|
}
|
||||||
|
return productIDPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getConfigurationPanel() {
|
||||||
|
if (configurationPanel == null) {
|
||||||
|
configurationPanel = new JPanel();
|
||||||
|
configurationPanel.setLayout(new BoxLayout(getConfigurationPanel(),
|
||||||
|
BoxLayout.X_AXIS));
|
||||||
|
configurationPanel.setBorder(BorderFactory.createTitledBorder(null,
|
||||||
|
"Configuration", TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
configurationPanel.add(getConfigurationText(), null);
|
||||||
|
}
|
||||||
|
return configurationPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JTextField getConfigurationText() {
|
||||||
|
if (configurationText == null) {
|
||||||
|
configurationText = new JTextField();
|
||||||
|
configurationText.setPreferredSize(new Dimension(100, 20));
|
||||||
|
}
|
||||||
|
return configurationText;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getInterfacePanel() {
|
||||||
|
if (interfacePanel == null) {
|
||||||
|
interfacePanel = new JPanel();
|
||||||
|
interfacePanel.setLayout(new BoxLayout(getInterfacePanel(),
|
||||||
|
BoxLayout.X_AXIS));
|
||||||
|
interfacePanel.setBorder(BorderFactory.createTitledBorder(null,
|
||||||
|
"Interface", TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
interfacePanel.add(getInterfaceText(), null);
|
||||||
|
}
|
||||||
|
return interfacePanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JTextField getInterfaceText() {
|
||||||
|
if (interfaceText == null) {
|
||||||
|
interfaceText = new JTextField();
|
||||||
|
interfaceText.setPreferredSize(new Dimension(100, 20));
|
||||||
|
}
|
||||||
|
return interfaceText;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getAltInterfacePanel() {
|
||||||
|
if (altInterfacePanel == null) {
|
||||||
|
altInterfacePanel = new JPanel();
|
||||||
|
altInterfacePanel.setLayout(new BoxLayout(getAltInterfacePanel(),
|
||||||
|
BoxLayout.X_AXIS));
|
||||||
|
altInterfacePanel.setBorder(BorderFactory.createTitledBorder(null,
|
||||||
|
"Alternate Int", TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
altInterfacePanel.add(getAltInterfaceText(), null);
|
||||||
|
}
|
||||||
|
return altInterfacePanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JTextField getAltInterfaceText() {
|
||||||
|
if (altInterfaceText == null) {
|
||||||
|
altInterfaceText = new JTextField();
|
||||||
|
altInterfaceText.setPreferredSize(new Dimension(100, 20));
|
||||||
|
}
|
||||||
|
return altInterfaceText;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getSettingsPanelTop2Left() {
|
||||||
|
if (settingsPanelTop2Left == null) {
|
||||||
|
FlowLayout flowLayout2 = new FlowLayout();
|
||||||
|
flowLayout2.setVgap(2);
|
||||||
|
flowLayout2.setAlignment(FlowLayout.LEFT);
|
||||||
|
flowLayout2.setHgap(5);
|
||||||
|
settingsPanelTop2Left = new JPanel();
|
||||||
|
settingsPanelTop2Left.setLayout(flowLayout2);
|
||||||
|
settingsPanelTop2Left.add(getOutEpPanel(), null);
|
||||||
|
settingsPanelTop2Left.add(getInEpPanel(), null);
|
||||||
|
settingsPanelTop2Left.add(getTimeoutPanel(), null);
|
||||||
|
}
|
||||||
|
return settingsPanelTop2Left;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getSettingsPanelTop2Right() {
|
||||||
|
if (settingsPanelTop2Right == null) {
|
||||||
|
FlowLayout flowLayout3 = new FlowLayout();
|
||||||
|
flowLayout3.setVgap(2);
|
||||||
|
settingsPanelTop2Right = new JPanel();
|
||||||
|
settingsPanelTop2Right.setLayout(flowLayout3);
|
||||||
|
settingsPanelTop2Right.add(getOpenDeviceButton(), null);
|
||||||
|
settingsPanelTop2Right.add(getCloseDevice(), null);
|
||||||
|
settingsPanelTop2Right.add(getResetButton(), null);
|
||||||
|
}
|
||||||
|
return settingsPanelTop2Right;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getOutEpPanel() {
|
||||||
|
if (outEpPanel == null) {
|
||||||
|
outEpPanel = new JPanel();
|
||||||
|
outEpPanel.setLayout(new BoxLayout(getOutEpPanel(),
|
||||||
|
BoxLayout.X_AXIS));
|
||||||
|
outEpPanel.setBorder(BorderFactory.createTitledBorder(null,
|
||||||
|
"OUT EP", TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
outEpPanel.add(getOutEpText(), null);
|
||||||
|
}
|
||||||
|
return outEpPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JTextField getOutEpText() {
|
||||||
|
if (outEpText == null) {
|
||||||
|
outEpText = new JTextField();
|
||||||
|
outEpText.setPreferredSize(new Dimension(100, 20));
|
||||||
|
}
|
||||||
|
return outEpText;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getInEpPanel() {
|
||||||
|
if (inEpPanel == null) {
|
||||||
|
inEpPanel = new JPanel();
|
||||||
|
inEpPanel
|
||||||
|
.setLayout(new BoxLayout(getInEpPanel(), BoxLayout.X_AXIS));
|
||||||
|
inEpPanel.setBorder(BorderFactory.createTitledBorder(null, "IN EP",
|
||||||
|
TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
inEpPanel.add(getInEpText(), null);
|
||||||
|
}
|
||||||
|
return inEpPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JTextField getInEpText() {
|
||||||
|
if (inEpText == null) {
|
||||||
|
inEpText = new JTextField();
|
||||||
|
inEpText.setPreferredSize(new Dimension(100, 20));
|
||||||
|
}
|
||||||
|
return inEpText;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getTimeoutPanel() {
|
||||||
|
if (timeoutPanel == null) {
|
||||||
|
timeoutPanel = new JPanel();
|
||||||
|
timeoutPanel.setLayout(new BoxLayout(getTimeoutPanel(),
|
||||||
|
BoxLayout.X_AXIS));
|
||||||
|
timeoutPanel.setBorder(BorderFactory.createTitledBorder(null,
|
||||||
|
"Timeout", TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
timeoutPanel.add(getTimeoutText(), null);
|
||||||
|
}
|
||||||
|
return timeoutPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JTextField getTimeoutText() {
|
||||||
|
if (timeoutText == null) {
|
||||||
|
timeoutText = new JTextField();
|
||||||
|
timeoutText.setPreferredSize(new Dimension(100, 20));
|
||||||
|
}
|
||||||
|
return timeoutText;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getSendDataPanel() {
|
||||||
|
if (sendDataPanel == null) {
|
||||||
|
FlowLayout flowLayout4 = new FlowLayout();
|
||||||
|
flowLayout4.setAlignment(FlowLayout.LEFT);
|
||||||
|
sendDataPanel = new JPanel();
|
||||||
|
sendDataPanel.setLayout(flowLayout4);
|
||||||
|
sendDataPanel.setBorder(BorderFactory.createTitledBorder(null,
|
||||||
|
"Data to send [hex]", TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
sendDataPanel.add(getSendRecDataText(), null);
|
||||||
|
}
|
||||||
|
return sendDataPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getSendRecButtonsPanel() {
|
||||||
|
if (sendRecButtonsPanel == null) {
|
||||||
|
FlowLayout flowLayout5 = new FlowLayout();
|
||||||
|
flowLayout5.setAlignment(FlowLayout.LEFT);
|
||||||
|
flowLayout5.setVgap(0);
|
||||||
|
sendRecButtonsPanel = new JPanel();
|
||||||
|
sendRecButtonsPanel.setLayout(flowLayout5);
|
||||||
|
sendRecButtonsPanel.add(getSendRecButtonsPanelTop(), null);
|
||||||
|
sendRecButtonsPanel.add(getSendRecButtonsPanelBottom(), null);
|
||||||
|
}
|
||||||
|
return sendRecButtonsPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JButton getSendButton() {
|
||||||
|
if (sendButton == null) {
|
||||||
|
sendButton = new JButton();
|
||||||
|
sendButton.setText("Send");
|
||||||
|
sendButton.setName("sendButton");
|
||||||
|
sendButton.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||||
|
int index = sendTypeComboBox.getSelectedIndex();
|
||||||
|
if (index == TestDevice.TransferMode.Bulk.ordinal()) {
|
||||||
|
dev.setOutEPBulk(parseInt(outEpText.getText().trim()));
|
||||||
|
dev.setMode(TestDevice.TransferMode.Bulk);
|
||||||
|
} else if (index == TestDevice.TransferMode.Interrupt
|
||||||
|
.ordinal()) {
|
||||||
|
dev.setOutEPInt(parseInt(outEpText.getText().trim()));
|
||||||
|
dev.setMode(TestDevice.TransferMode.Interrupt);
|
||||||
|
}
|
||||||
|
byte[] data = parseByteArray(sendDataText.getText().trim());
|
||||||
|
dev.write(data, data.length);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return sendButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JButton getRecButton() {
|
||||||
|
if (recButton == null) {
|
||||||
|
recButton = new JButton();
|
||||||
|
recButton.setText("Receive");
|
||||||
|
recButton.setName("recButton");
|
||||||
|
recButton.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||||
|
int index = sendTypeComboBox.getSelectedIndex();
|
||||||
|
if (index == TestDevice.TransferMode.Bulk.ordinal()) {
|
||||||
|
dev.setInEPBulk(parseInt(inEpText.getText().trim()));
|
||||||
|
dev.setMode(TestDevice.TransferMode.Bulk);
|
||||||
|
} else if (index == TestDevice.TransferMode.Interrupt
|
||||||
|
.ordinal()) {
|
||||||
|
dev.setInEPInt(parseInt(inEpText.getText().trim()));
|
||||||
|
dev.setMode(TestDevice.TransferMode.Interrupt);
|
||||||
|
}
|
||||||
|
dev.read();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return recButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JTextField getSendRecDataText() {
|
||||||
|
if (sendDataText == null) {
|
||||||
|
sendDataText = new JTextField();
|
||||||
|
sendDataText.setPreferredSize(new Dimension(650, 20));
|
||||||
|
}
|
||||||
|
return sendDataText;
|
||||||
|
}
|
||||||
|
|
||||||
|
int parseInt(String s) {
|
||||||
|
if (s == "")
|
||||||
|
return 0;
|
||||||
|
if (s.indexOf('x') > 0) {
|
||||||
|
// is hex number
|
||||||
|
if (s.length() <= 2) { // exception for "0x"
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return Integer.parseInt(
|
||||||
|
s.substring(s.indexOf('x') + 1, s.length()), 16);
|
||||||
|
}
|
||||||
|
// is decimal number
|
||||||
|
return Integer.parseInt(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] parseByteArray(String s) {
|
||||||
|
final int HEX_WIDTH = 5;
|
||||||
|
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
int stringIndex = 0, spaceIndex = 0;
|
||||||
|
String ss;
|
||||||
|
while (stringIndex + 3 < s.length()) {
|
||||||
|
ss = s.substring(spaceIndex, spaceIndex + 4);
|
||||||
|
spaceIndex = s.indexOf(' ', stringIndex) + 1;
|
||||||
|
sb.append((char) parseInt(ss));
|
||||||
|
stringIndex += HEX_WIDTH;
|
||||||
|
}
|
||||||
|
return sb.toString().getBytes();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String toHexString(int value) {
|
||||||
|
return "0x" + Integer.toHexString(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method initializes sendTypeComboBox
|
||||||
|
*
|
||||||
|
* @return javax.swing.JComboBox
|
||||||
|
*/
|
||||||
|
private JComboBox getSendTypeComboBox() {
|
||||||
|
if (sendTypeComboBox == null) {
|
||||||
|
sendTypeComboBox = new JComboBox(dev.getTransferTypes());
|
||||||
|
sendTypeComboBox.setSelectedIndex(dev.getOutMode().ordinal());
|
||||||
|
sendTypeComboBox.addItemListener(new java.awt.event.ItemListener() {
|
||||||
|
public void itemStateChanged(java.awt.event.ItemEvent e) {
|
||||||
|
if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||||
|
String mode = (String) e.getItem();
|
||||||
|
if (mode.equalsIgnoreCase("Bulk")) {
|
||||||
|
dev.setOutMode(TestDevice.TransferMode.Bulk);
|
||||||
|
setOutEpAddr();
|
||||||
|
} else if (mode.equalsIgnoreCase("Interrupt")) {
|
||||||
|
dev.setOutMode(TestDevice.TransferMode.Interrupt);
|
||||||
|
setOutEpAddr();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return sendTypeComboBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method initializes recTypeComboBox
|
||||||
|
*
|
||||||
|
* @return javax.swing.JComboBox
|
||||||
|
*/
|
||||||
|
private JComboBox getRecTypeComboBox() {
|
||||||
|
if (recTypeComboBox == null) {
|
||||||
|
recTypeComboBox = new JComboBox(dev.getTransferTypes());
|
||||||
|
recTypeComboBox.setSelectedIndex(dev.getInMode().ordinal());
|
||||||
|
recTypeComboBox.addItemListener(new java.awt.event.ItemListener() {
|
||||||
|
public void itemStateChanged(java.awt.event.ItemEvent e) {
|
||||||
|
if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||||
|
String mode = (String) e.getItem();
|
||||||
|
if (mode.equalsIgnoreCase("Bulk")) {
|
||||||
|
dev.setInMode(TestDevice.TransferMode.Bulk);
|
||||||
|
setInEpAddr();
|
||||||
|
} else if (mode.equalsIgnoreCase("Interrupt")) {
|
||||||
|
dev.setInMode(TestDevice.TransferMode.Interrupt);
|
||||||
|
setInEpAddr();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// recTypeComboBox.addActionListener(new
|
||||||
|
// java.awt.event.ActionListener() {
|
||||||
|
// public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||||
|
// JComboBox source = (JComboBox) e.getSource();
|
||||||
|
// String mode = "";
|
||||||
|
// } if (mode.equalsIgnoreCase("Bulk")) {
|
||||||
|
// dev.setInMode(TestDevice.TransferMode.Bulk);
|
||||||
|
// setInEpAddr();
|
||||||
|
// } else if (mode.equalsIgnoreCase("Interrupt")) {
|
||||||
|
// dev.setInMode(TestDevice.TransferMode.Interrupt);
|
||||||
|
// setInEpAddr();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
return recTypeComboBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method initializes sendRecButtonsPanelTop
|
||||||
|
*
|
||||||
|
* @return javax.swing.JPanel
|
||||||
|
*/
|
||||||
|
private JPanel getSendRecButtonsPanelTop() {
|
||||||
|
if (sendRecButtonsPanelTop == null) {
|
||||||
|
BorderLayout borderLayout1 = new BorderLayout();
|
||||||
|
borderLayout1.setHgap(5);
|
||||||
|
sendRecButtonsPanelTop = new JPanel();
|
||||||
|
sendRecButtonsPanelTop.setBorder(BorderFactory.createTitledBorder(
|
||||||
|
null, "OUT", TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
sendRecButtonsPanelTop.setLayout(borderLayout1);
|
||||||
|
sendRecButtonsPanelTop.add(getSendButton(), BorderLayout.EAST);
|
||||||
|
sendRecButtonsPanelTop
|
||||||
|
.add(getSendTypeComboBox(), BorderLayout.WEST);
|
||||||
|
}
|
||||||
|
return sendRecButtonsPanelTop;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method initializes sendRecButtonsPanelBottom
|
||||||
|
*
|
||||||
|
* @return javax.swing.JPanel
|
||||||
|
*/
|
||||||
|
private JPanel getSendRecButtonsPanelBottom() {
|
||||||
|
if (sendRecButtonsPanelBottom == null) {
|
||||||
|
BorderLayout borderLayout = new BorderLayout();
|
||||||
|
borderLayout.setHgap(5);
|
||||||
|
sendRecButtonsPanelBottom = new JPanel();
|
||||||
|
sendRecButtonsPanelBottom.setBorder(BorderFactory
|
||||||
|
.createTitledBorder(null, "IN",
|
||||||
|
TitledBorder.DEFAULT_JUSTIFICATION,
|
||||||
|
TitledBorder.DEFAULT_POSITION, new Font("Dialog",
|
||||||
|
Font.BOLD, 12), new Color(51, 51, 51)));
|
||||||
|
sendRecButtonsPanelBottom.setLayout(borderLayout);
|
||||||
|
sendRecButtonsPanelBottom.add(getRecButton(), BorderLayout.EAST);
|
||||||
|
sendRecButtonsPanelBottom.add(getRecTypeComboBox(),
|
||||||
|
BorderLayout.WEST);
|
||||||
|
}
|
||||||
|
return sendRecButtonsPanelBottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// set LookAndFeel
|
||||||
|
try {
|
||||||
|
UIManager
|
||||||
|
.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
TestApp app = new TestApp(new TestDevice());
|
||||||
|
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
174
java/src/ch/ntb/usb/testApp/TestDevice.java
Normal file
174
java/src/ch/ntb/usb/testApp/TestDevice.java
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
/*
|
||||||
|
* Java libusb wrapper
|
||||||
|
* Copyright (c) 2005-2006 Andreas Schl<68>pfer <libusb@drip.ch>
|
||||||
|
*
|
||||||
|
* This library is covered by the LGPL, read LGPL.txt for details.
|
||||||
|
*/
|
||||||
|
package ch.ntb.usb.testApp;
|
||||||
|
|
||||||
|
import java.util.Vector;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import ch.ntb.usb.Device;
|
||||||
|
import ch.ntb.usb.USB;
|
||||||
|
import ch.ntb.usb.USBException;
|
||||||
|
import ch.ntb.usb.logger.LogUtil;
|
||||||
|
import ch.ntb.usb.test.AT90USB1287;
|
||||||
|
|
||||||
|
public class TestDevice extends AT90USB1287 {
|
||||||
|
|
||||||
|
private static final Logger logger = LogUtil.getLogger("ch.ntb.usb.test");
|
||||||
|
|
||||||
|
private String sendData = "0x5b 0x02 0x01 0x00 0x03 0x03 0xf0 0xf0 0x1f";
|
||||||
|
|
||||||
|
private Vector<String> transferTypes;
|
||||||
|
|
||||||
|
private static Device dev = null;
|
||||||
|
|
||||||
|
private TransferMode inMode;
|
||||||
|
private TransferMode outMode;
|
||||||
|
|
||||||
|
public TestDevice() {
|
||||||
|
logger.setLevel(Level.ALL);
|
||||||
|
// create a vector for transfer types
|
||||||
|
transferTypes = new Vector<String>();
|
||||||
|
transferTypes
|
||||||
|
.add(TransferMode.Bulk.ordinal(), TransferMode.Bulk.name());
|
||||||
|
transferTypes.add(TransferMode.Interrupt.ordinal(),
|
||||||
|
TransferMode.Interrupt.name());
|
||||||
|
inMode = TransferMode.Bulk;
|
||||||
|
outMode = TransferMode.Bulk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openUsbDevice() {
|
||||||
|
dev = USB.getDevice(getIdVendor(), getIdProduct());
|
||||||
|
try {
|
||||||
|
dev.open(getConfiguration(), getInterface(), getAltinterface());
|
||||||
|
logger.info("device opened, interface claimed");
|
||||||
|
} catch (USBException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void closeUsbDevice() {
|
||||||
|
try {
|
||||||
|
if (dev != null) {
|
||||||
|
dev.close();
|
||||||
|
logger.info("device closed");
|
||||||
|
} else {
|
||||||
|
logger.warning("no device to close -> open first");
|
||||||
|
}
|
||||||
|
} catch (USBException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetUsbDevice() {
|
||||||
|
try {
|
||||||
|
if (dev != null) {
|
||||||
|
dev.reset();
|
||||||
|
logger.info("device reset");
|
||||||
|
} else {
|
||||||
|
logger.warning("no device to reset -> open first");
|
||||||
|
}
|
||||||
|
} catch (USBException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void write(byte[] data, int length) {
|
||||||
|
int lenWritten = 0;
|
||||||
|
try {
|
||||||
|
if (dev != null) {
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
switch (getOutMode()) {
|
||||||
|
case Bulk:
|
||||||
|
lenWritten = dev.writeBulk(getOutEPBulk(), data, length,
|
||||||
|
getTimeout(), false);
|
||||||
|
sb.append("write_bulk, ep: 0x"
|
||||||
|
+ Integer.toHexString(getOutEPBulk()) + ", "
|
||||||
|
+ lenWritten + " Bytes sent: ");
|
||||||
|
break;
|
||||||
|
case Interrupt:
|
||||||
|
lenWritten = dev.writeInterrupt(getOutEPInt(), data,
|
||||||
|
length, getTimeout(), false);
|
||||||
|
sb.append("write_interrupt, ep: 0x"
|
||||||
|
+ Integer.toHexString(getOutEPInt()) + ", "
|
||||||
|
+ lenWritten + " Bytes sent: ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < lenWritten; i++) {
|
||||||
|
sb.append("0x" + String.format("%1$02X", data[i]) + " ");
|
||||||
|
}
|
||||||
|
logger.info(sb.toString());
|
||||||
|
} else {
|
||||||
|
logger.warning("no device opened");
|
||||||
|
}
|
||||||
|
} catch (USBException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void read() {
|
||||||
|
if (dev != null) {
|
||||||
|
byte[] data = new byte[dev.getMaxPacketSize()];
|
||||||
|
int lenRead = 0;
|
||||||
|
try {
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
switch (getInMode()) {
|
||||||
|
case Bulk:
|
||||||
|
lenRead = dev.readBulk(getInEPBulk(), data, dev
|
||||||
|
.getMaxPacketSize(), getTimeout(), false);
|
||||||
|
sb.append("read_bulk, ep: 0x"
|
||||||
|
+ Integer.toHexString(getInEPBulk()) + ", "
|
||||||
|
+ lenRead + " Bytes received: Data: ");
|
||||||
|
break;
|
||||||
|
case Interrupt:
|
||||||
|
lenRead = dev.readInterrupt(getInEPInt(), data, dev
|
||||||
|
.getMaxPacketSize(), getTimeout(), false);
|
||||||
|
sb.append("read_interrupt, ep: 0x"
|
||||||
|
+ Integer.toHexString(getInEPInt()) + ", "
|
||||||
|
+ lenRead + " Bytes received: Data: ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < lenRead; i++) {
|
||||||
|
sb.append("0x" + String.format("%1$02X", data[i]) + " ");
|
||||||
|
}
|
||||||
|
logger.info(sb.toString());
|
||||||
|
} catch (USBException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.warning("no device opened");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSendData() {
|
||||||
|
return sendData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSendData(String sendData) {
|
||||||
|
this.sendData = sendData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector<String> getTransferTypes() {
|
||||||
|
return transferTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TransferMode getOutMode() {
|
||||||
|
return outMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOutMode(TransferMode outMode) {
|
||||||
|
this.outMode = outMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TransferMode getInMode() {
|
||||||
|
return inMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInMode(TransferMode inMode) {
|
||||||
|
this.inMode = inMode;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,429 +0,0 @@
|
|||||||
/*
|
|
||||||
* Java libusb wrapper
|
|
||||||
* Copyright (c) 2005-2006 Andreas Schl<68>pfer <libusb@drip.ch>
|
|
||||||
*
|
|
||||||
* This library is covered by the LGPL, read LGPL.txt for details.
|
|
||||||
*/
|
|
||||||
package ch.ntb.usb.testApp;
|
|
||||||
|
|
||||||
import org.eclipse.swt.SWT;
|
|
||||||
import org.eclipse.swt.graphics.Rectangle;
|
|
||||||
import org.eclipse.swt.layout.RowData;
|
|
||||||
import org.eclipse.swt.layout.RowLayout;
|
|
||||||
import org.eclipse.swt.widgets.Button;
|
|
||||||
import org.eclipse.swt.widgets.Composite;
|
|
||||||
import org.eclipse.swt.widgets.Display;
|
|
||||||
import org.eclipse.swt.widgets.Group;
|
|
||||||
import org.eclipse.swt.widgets.Shell;
|
|
||||||
import org.eclipse.swt.widgets.Text;
|
|
||||||
|
|
||||||
public class TestGUI {
|
|
||||||
|
|
||||||
private static final int HEX_WIDTH = 5;
|
|
||||||
private Shell rootShell = null; // @jve:decl-index=0:visual-constraint="10,10"
|
|
||||||
private Group vendorIDGroup = null;
|
|
||||||
Text vendorID = null;
|
|
||||||
private Group productIDGroup = null;
|
|
||||||
Text productID = null;
|
|
||||||
private Group configGroup = null;
|
|
||||||
Text configuration = null;
|
|
||||||
private Group interfaceGroup = null;
|
|
||||||
Text interface_ = null;
|
|
||||||
private Group altIntGroup = null;
|
|
||||||
Text altInt = null;
|
|
||||||
private Group deviceGroup = null;
|
|
||||||
private Group endpointGroup = null;
|
|
||||||
private Group deviceGroup2 = null;
|
|
||||||
private Group outEPGroup = null;
|
|
||||||
Text outEP = null;
|
|
||||||
private Group inEPGroup = null;
|
|
||||||
Text inEP = null;
|
|
||||||
private Group timeoutGroup = null;
|
|
||||||
Text timeout = null;
|
|
||||||
private Group dataGroup = null;
|
|
||||||
private Composite dataButtonComp = null;
|
|
||||||
private Button sendButton = null;
|
|
||||||
private Button recButton = null;
|
|
||||||
private Composite devComp = null;
|
|
||||||
private Composite devButtonComp = null;
|
|
||||||
private Button devOpenButton = null;
|
|
||||||
private Button devCloseButton = null;
|
|
||||||
private Group dataFieldGoup = null;
|
|
||||||
Text dataField = null;
|
|
||||||
private Button resetButton = null;
|
|
||||||
|
|
||||||
int parseInt(String s) {
|
|
||||||
if (s == "")
|
|
||||||
return 0;
|
|
||||||
if (s.indexOf('x') > 0) {
|
|
||||||
// is hex number
|
|
||||||
if (s.length() <= 2) { // exception for "0x"
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return Integer.parseInt(
|
|
||||||
s.substring(s.indexOf('x') + 1, s.length()), 16);
|
|
||||||
}
|
|
||||||
// is decimal number
|
|
||||||
return Integer.parseInt(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
byte[] parseByteArray(String s) {
|
|
||||||
StringBuffer sb = new StringBuffer();
|
|
||||||
int stringIndex = 0, spaceIndex = 0;
|
|
||||||
String ss;
|
|
||||||
while (stringIndex + 3 < s.length()) {
|
|
||||||
ss = s.substring(spaceIndex, spaceIndex + 4);
|
|
||||||
spaceIndex = s.indexOf(' ', stringIndex) + 1;
|
|
||||||
sb.append((char) parseInt(ss));
|
|
||||||
stringIndex += HEX_WIDTH;
|
|
||||||
}
|
|
||||||
return sb.toString().getBytes();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createSShell() {
|
|
||||||
RowLayout rowLayout = new RowLayout();
|
|
||||||
rowLayout.type = org.eclipse.swt.SWT.VERTICAL;
|
|
||||||
rowLayout.justify = true;
|
|
||||||
rowLayout.fill = true;
|
|
||||||
rootShell = new Shell();
|
|
||||||
rootShell.setText("Usb TestApplication");
|
|
||||||
rootShell.setLayout(rowLayout);
|
|
||||||
createDeviceGroup();
|
|
||||||
createDataGroup();
|
|
||||||
rootShell.setSize(new org.eclipse.swt.graphics.Point(466, 315));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes vendorIDGroup
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createVendorIDGroup() {
|
|
||||||
vendorIDGroup = new Group(deviceGroup2, SWT.NONE);
|
|
||||||
vendorIDGroup.setText("VendorID");
|
|
||||||
vendorID = new Text(vendorIDGroup, SWT.BORDER | SWT.RIGHT);
|
|
||||||
vendorID
|
|
||||||
.setBounds(new org.eclipse.swt.graphics.Rectangle(7, 23, 76, 19));
|
|
||||||
vendorID.setText("0x"
|
|
||||||
+ Integer.toHexString(TestImplementation.IdVendor & 0xffff));
|
|
||||||
TestImplementation.IdVendor = (short) parseInt(vendorID.getText());
|
|
||||||
vendorID.addModifyListener(new org.eclipse.swt.events.ModifyListener() {
|
|
||||||
public void modifyText(org.eclipse.swt.events.ModifyEvent e) {
|
|
||||||
TestImplementation.IdVendor = (short) parseInt(vendorID
|
|
||||||
.getText());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes productIDGroup
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createProductIDGroup() {
|
|
||||||
productIDGroup = new Group(deviceGroup2, SWT.NONE);
|
|
||||||
productIDGroup.setText("ProductID");
|
|
||||||
productID = new Text(productIDGroup, SWT.BORDER | SWT.RIGHT);
|
|
||||||
productID.setBounds(new org.eclipse.swt.graphics.Rectangle(4, 24, 76,
|
|
||||||
19));
|
|
||||||
productID.setText("0x"
|
|
||||||
+ Integer.toHexString(TestImplementation.IdProduct & 0xffff));
|
|
||||||
TestImplementation.IdProduct = (short) parseInt(productID.getText());
|
|
||||||
productID
|
|
||||||
.addModifyListener(new org.eclipse.swt.events.ModifyListener() {
|
|
||||||
public void modifyText(org.eclipse.swt.events.ModifyEvent e) {
|
|
||||||
TestImplementation.IdProduct = (short) parseInt(productID
|
|
||||||
.getText());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes group
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createGroup() {
|
|
||||||
configGroup = new Group(deviceGroup2, SWT.NONE);
|
|
||||||
configGroup.setText("Configuration");
|
|
||||||
configuration = new Text(configGroup, SWT.BORDER | SWT.RIGHT);
|
|
||||||
configuration.setBounds(new org.eclipse.swt.graphics.Rectangle(4, 24,
|
|
||||||
75, 19));
|
|
||||||
configuration.setText(Integer
|
|
||||||
.toString(TestImplementation.CONFIGURATION));
|
|
||||||
configuration
|
|
||||||
.addModifyListener(new org.eclipse.swt.events.ModifyListener() {
|
|
||||||
public void modifyText(org.eclipse.swt.events.ModifyEvent e) {
|
|
||||||
TestImplementation.CONFIGURATION = parseInt(configuration
|
|
||||||
.getText());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes group
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createGroup2() {
|
|
||||||
interfaceGroup = new Group(deviceGroup2, SWT.NONE);
|
|
||||||
interfaceGroup.setText("Interface");
|
|
||||||
interface_ = new Text(interfaceGroup, SWT.BORDER | SWT.RIGHT);
|
|
||||||
interface_.setBounds(new org.eclipse.swt.graphics.Rectangle(4, 24, 57,
|
|
||||||
19));
|
|
||||||
interface_.setText(Integer.toString(TestImplementation.INTERFACE));
|
|
||||||
interface_
|
|
||||||
.addModifyListener(new org.eclipse.swt.events.ModifyListener() {
|
|
||||||
public void modifyText(org.eclipse.swt.events.ModifyEvent e) {
|
|
||||||
TestImplementation.INTERFACE = parseInt(interface_
|
|
||||||
.getText());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes group
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createGroup3() {
|
|
||||||
altIntGroup = new Group(deviceGroup2, SWT.NONE);
|
|
||||||
altIntGroup.setText("Alternative Int");
|
|
||||||
altInt = new Text(altIntGroup, SWT.BORDER | SWT.RIGHT);
|
|
||||||
altInt.setBounds(new Rectangle(4, 24, 76, 19));
|
|
||||||
altInt.setText(Integer.toString(TestImplementation.ALTINTERFACE));
|
|
||||||
altInt.addModifyListener(new org.eclipse.swt.events.ModifyListener() {
|
|
||||||
public void modifyText(org.eclipse.swt.events.ModifyEvent e) {
|
|
||||||
TestImplementation.ALTINTERFACE = parseInt(altInt.getText());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes deviceGroup
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createDeviceGroup() {
|
|
||||||
RowLayout rowLayout1 = new RowLayout();
|
|
||||||
rowLayout1.type = org.eclipse.swt.SWT.VERTICAL;
|
|
||||||
rowLayout1.fill = true;
|
|
||||||
deviceGroup = new Group(rootShell, SWT.NONE);
|
|
||||||
deviceGroup.setText("Device Settings");
|
|
||||||
createDeviceGroup2();
|
|
||||||
deviceGroup.setLayout(rowLayout1);
|
|
||||||
createDevComp();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes endpointGroup
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createEndpointGroup() {
|
|
||||||
endpointGroup = new Group(devComp, SWT.NONE);
|
|
||||||
endpointGroup.setLayout(new RowLayout());
|
|
||||||
createGroup4();
|
|
||||||
createGroup5();
|
|
||||||
createGroup6();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes deviceGroup2
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createDeviceGroup2() {
|
|
||||||
deviceGroup2 = new Group(deviceGroup, SWT.NONE);
|
|
||||||
deviceGroup2.setLayout(new RowLayout());
|
|
||||||
createVendorIDGroup();
|
|
||||||
createProductIDGroup();
|
|
||||||
createGroup();
|
|
||||||
createGroup2();
|
|
||||||
createGroup3();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes group
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createGroup4() {
|
|
||||||
outEPGroup = new Group(endpointGroup, SWT.NONE);
|
|
||||||
outEPGroup.setText("OUT EP");
|
|
||||||
outEP = new Text(outEPGroup, SWT.BORDER | SWT.RIGHT);
|
|
||||||
outEP.setBounds(new org.eclipse.swt.graphics.Rectangle(4, 24, 46, 19));
|
|
||||||
outEP.setText("0x"
|
|
||||||
+ Integer.toHexString(TestImplementation.OUT_ENDPOINT));
|
|
||||||
outEP.addModifyListener(new org.eclipse.swt.events.ModifyListener() {
|
|
||||||
public void modifyText(org.eclipse.swt.events.ModifyEvent e) {
|
|
||||||
TestImplementation.OUT_ENDPOINT = parseInt(outEP.getText());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes group
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createGroup5() {
|
|
||||||
inEPGroup = new Group(endpointGroup, SWT.NONE);
|
|
||||||
inEPGroup.setText("IN EP");
|
|
||||||
inEP = new Text(inEPGroup, SWT.BORDER | SWT.RIGHT);
|
|
||||||
inEP.setBounds(new org.eclipse.swt.graphics.Rectangle(4, 24, 46, 19));
|
|
||||||
inEP
|
|
||||||
.setText("0x"
|
|
||||||
+ Integer.toHexString(TestImplementation.IN_ENDPOINT));
|
|
||||||
inEP.addModifyListener(new org.eclipse.swt.events.ModifyListener() {
|
|
||||||
public void modifyText(org.eclipse.swt.events.ModifyEvent e) {
|
|
||||||
TestImplementation.IN_ENDPOINT = parseInt(inEP.getText());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes group
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createGroup6() {
|
|
||||||
timeoutGroup = new Group(endpointGroup, SWT.NONE);
|
|
||||||
timeoutGroup.setText("Timeout");
|
|
||||||
timeout = new Text(timeoutGroup, SWT.BORDER | SWT.RIGHT);
|
|
||||||
timeout.setBounds(new Rectangle(4, 24, 46, 19));
|
|
||||||
timeout.setText(Integer.toString(TestImplementation.TIMEOUT));
|
|
||||||
timeout.addModifyListener(new org.eclipse.swt.events.ModifyListener() {
|
|
||||||
public void modifyText(org.eclipse.swt.events.ModifyEvent e) {
|
|
||||||
TestImplementation.TIMEOUT = parseInt(timeout.getText());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes dataGroup
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createDataGroup() {
|
|
||||||
RowLayout rowLayout5 = new RowLayout();
|
|
||||||
rowLayout5.type = org.eclipse.swt.SWT.HORIZONTAL;
|
|
||||||
rowLayout5.spacing = 10;
|
|
||||||
dataGroup = new Group(rootShell, SWT.NONE);
|
|
||||||
dataGroup.setText("Send and Receive Data");
|
|
||||||
dataGroup.setLayout(rowLayout5);
|
|
||||||
createDataFieldGoup();
|
|
||||||
createButtonComp();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes buttonComp
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createButtonComp() {
|
|
||||||
RowLayout rowLayout3 = new RowLayout();
|
|
||||||
rowLayout3.type = org.eclipse.swt.SWT.VERTICAL;
|
|
||||||
rowLayout3.justify = true;
|
|
||||||
rowLayout3.fill = true;
|
|
||||||
dataButtonComp = new Composite(dataGroup, SWT.NONE);
|
|
||||||
sendButton = new Button(dataButtonComp, SWT.NONE);
|
|
||||||
sendButton.setText("Send");
|
|
||||||
sendButton
|
|
||||||
.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
|
|
||||||
@Override
|
|
||||||
public void widgetSelected(
|
|
||||||
org.eclipse.swt.events.SelectionEvent e) {
|
|
||||||
byte[] b = parseByteArray(dataField.getText());
|
|
||||||
TestImplementation.write(b, b.length);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
recButton = new Button(dataButtonComp, SWT.NONE);
|
|
||||||
dataButtonComp.setLayout(rowLayout3);
|
|
||||||
recButton.setText("Receive");
|
|
||||||
recButton
|
|
||||||
.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
|
|
||||||
@Override
|
|
||||||
public void widgetSelected(
|
|
||||||
org.eclipse.swt.events.SelectionEvent e) {
|
|
||||||
TestImplementation.read();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes devComp
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createDevComp() {
|
|
||||||
RowLayout rowLayout4 = new RowLayout();
|
|
||||||
rowLayout4.fill = true;
|
|
||||||
rowLayout4.spacing = 50;
|
|
||||||
devComp = new Composite(deviceGroup, SWT.NONE);
|
|
||||||
createEndpointGroup();
|
|
||||||
devComp.setLayout(rowLayout4);
|
|
||||||
createDevButtonComp();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes devButtonComp
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createDevButtonComp() {
|
|
||||||
RowLayout rowLayout2 = new RowLayout();
|
|
||||||
rowLayout2.marginHeight = 25;
|
|
||||||
rowLayout2.spacing = 5;
|
|
||||||
devButtonComp = new Composite(devComp, SWT.NONE);
|
|
||||||
devButtonComp.setLayout(rowLayout2);
|
|
||||||
devOpenButton = new Button(devButtonComp, SWT.NONE);
|
|
||||||
devOpenButton.setText("Open Device");
|
|
||||||
devOpenButton
|
|
||||||
.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
|
|
||||||
@Override
|
|
||||||
public void widgetSelected(
|
|
||||||
org.eclipse.swt.events.SelectionEvent e) {
|
|
||||||
TestImplementation.openUsbDevice();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
devCloseButton = new Button(devButtonComp, SWT.NONE);
|
|
||||||
devCloseButton.setText("Close Device");
|
|
||||||
resetButton = new Button(devButtonComp, SWT.NONE);
|
|
||||||
resetButton.setText("Reset");
|
|
||||||
resetButton
|
|
||||||
.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
|
|
||||||
@Override
|
|
||||||
public void widgetSelected(
|
|
||||||
org.eclipse.swt.events.SelectionEvent e) {
|
|
||||||
TestImplementation.resetUsbDevice();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
devCloseButton
|
|
||||||
.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
|
|
||||||
@Override
|
|
||||||
public void widgetSelected(
|
|
||||||
org.eclipse.swt.events.SelectionEvent e) {
|
|
||||||
TestImplementation.closeUsbDevice();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method initializes dataFieldGoup
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void createDataFieldGoup() {
|
|
||||||
RowData rowData = new org.eclipse.swt.layout.RowData();
|
|
||||||
rowData.width = 340;
|
|
||||||
RowLayout rowLayout6 = new RowLayout();
|
|
||||||
rowLayout6.fill = true;
|
|
||||||
rowLayout6.marginHeight = 5;
|
|
||||||
rowLayout6.justify = true;
|
|
||||||
dataFieldGoup = new Group(dataGroup, SWT.NONE);
|
|
||||||
dataFieldGoup.setText("Data to send [hex]");
|
|
||||||
dataFieldGoup.setLayout(rowLayout6);
|
|
||||||
dataField = new Text(dataFieldGoup, SWT.BORDER);
|
|
||||||
dataField.setText(TestImplementation.sendData);
|
|
||||||
dataField.setLayoutData(rowData);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
TestGUI app = new TestGUI();
|
|
||||||
app.createSShell();
|
|
||||||
app.rootShell.open();
|
|
||||||
|
|
||||||
Display display = app.rootShell.getDisplay();
|
|
||||||
|
|
||||||
while (!app.rootShell.isDisposed()) {
|
|
||||||
if (!display.readAndDispatch()) {
|
|
||||||
display.sleep();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
/*
|
|
||||||
* Java libusb wrapper
|
|
||||||
* Copyright (c) 2005-2006 Andreas Schl<68>pfer <libusb@drip.ch>
|
|
||||||
*
|
|
||||||
* This library is covered by the LGPL, read LGPL.txt for details.
|
|
||||||
*/
|
|
||||||
package ch.ntb.usb.testApp;
|
|
||||||
|
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
import ch.ntb.usb.Device;
|
|
||||||
import ch.ntb.usb.USB;
|
|
||||||
import ch.ntb.usb.USBException;
|
|
||||||
import ch.ntb.usb.logger.LogUtil;
|
|
||||||
|
|
||||||
public class TestImplementation {
|
|
||||||
|
|
||||||
private static final Logger logger = LogUtil.getLogger("ch.ntb.usb.test");
|
|
||||||
|
|
||||||
public static String sendData = "0x5b 0x02 0x01 0x00 0x03 0x03 0xf0 0xf0 0x1f";
|
|
||||||
|
|
||||||
public static short IdVendor = (short) 0x8235;
|
|
||||||
|
|
||||||
public static short IdProduct = 0x0200;
|
|
||||||
|
|
||||||
public static int TIMEOUT = 2000;
|
|
||||||
|
|
||||||
public static int CONFIGURATION = 1;
|
|
||||||
|
|
||||||
public static int INTERFACE = 0;
|
|
||||||
|
|
||||||
public static int ALTINTERFACE = 0;
|
|
||||||
|
|
||||||
public static int OUT_ENDPOINT = 0x01;
|
|
||||||
|
|
||||||
public static int IN_ENDPOINT = 0x82;
|
|
||||||
|
|
||||||
private static Device dev = null;
|
|
||||||
|
|
||||||
static {
|
|
||||||
logger.setLevel(Level.ALL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void openUsbDevice() {
|
|
||||||
dev = USB.getDevice(IdVendor, IdProduct);
|
|
||||||
try {
|
|
||||||
dev.open(CONFIGURATION, INTERFACE, ALTINTERFACE);
|
|
||||||
logger.info("device opened, interface claimed");
|
|
||||||
} catch (USBException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void closeUsbDevice() {
|
|
||||||
try {
|
|
||||||
dev.close();
|
|
||||||
logger.info("device closed");
|
|
||||||
} catch (USBException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void resetUsbDevice() {
|
|
||||||
try {
|
|
||||||
dev.reset();
|
|
||||||
logger.info("device reset");
|
|
||||||
} catch (USBException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void write(byte[] data, int length) {
|
|
||||||
int lenWritten = 0;
|
|
||||||
try {
|
|
||||||
lenWritten = dev.writeBulk(OUT_ENDPOINT, data, length, TIMEOUT,
|
|
||||||
false);
|
|
||||||
StringBuffer sb = new StringBuffer("write_bulkdata: " + lenWritten
|
|
||||||
+ " Bytes sent: ");
|
|
||||||
for (int i = 0; i < lenWritten; i++) {
|
|
||||||
sb.append("0x" + String.format("%1$02X", data[i]) + " ");
|
|
||||||
}
|
|
||||||
logger.info(sb.toString());
|
|
||||||
} catch (USBException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void read() {
|
|
||||||
byte[] data = new byte[dev.getMaxPacketSize()];
|
|
||||||
int lenRead = 0;
|
|
||||||
try {
|
|
||||||
lenRead = dev.readBulk(IN_ENDPOINT, data, dev.getMaxPacketSize(),
|
|
||||||
TIMEOUT, false);
|
|
||||||
StringBuffer sb = new StringBuffer("read_bulkdata: " + lenRead
|
|
||||||
+ " Bytes received: Data: ");
|
|
||||||
for (int i = 0; i < lenRead; i++) {
|
|
||||||
sb.append("0x" + String.format("%1$02X", data[i]) + " ");
|
|
||||||
}
|
|
||||||
logger.info(sb.toString());
|
|
||||||
} catch (USBException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -79,17 +79,20 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
return null;
|
return null;
|
||||||
return confDescs[index - 1];
|
return confDescs[index - 1];
|
||||||
} else if (parent instanceof Usb_Config_Descriptor) {
|
} else if (parent instanceof Usb_Config_Descriptor) {
|
||||||
Usb_Interface[] intDescs = ((Usb_Config_Descriptor) parent).getInterface();
|
Usb_Interface[] intDescs = ((Usb_Config_Descriptor) parent)
|
||||||
|
.getInterface();
|
||||||
if (index >= intDescs.length)
|
if (index >= intDescs.length)
|
||||||
return null;
|
return null;
|
||||||
return intDescs[index];
|
return intDescs[index];
|
||||||
} else if (parent instanceof Usb_Interface) {
|
} else if (parent instanceof Usb_Interface) {
|
||||||
Usb_Interface_Descriptor[] altSettings = ((Usb_Interface) parent).getAltsetting();
|
Usb_Interface_Descriptor[] altSettings = ((Usb_Interface) parent)
|
||||||
|
.getAltsetting();
|
||||||
if (index >= altSettings.length)
|
if (index >= altSettings.length)
|
||||||
return null;
|
return null;
|
||||||
return altSettings[index];
|
return altSettings[index];
|
||||||
} else if (parent instanceof Usb_Interface_Descriptor) {
|
} else if (parent instanceof Usb_Interface_Descriptor) {
|
||||||
Usb_Endpoint_Descriptor[] endpoints = ((Usb_Interface_Descriptor) parent).getEndpoint();
|
Usb_Endpoint_Descriptor[] endpoints = ((Usb_Interface_Descriptor) parent)
|
||||||
|
.getEndpoint();
|
||||||
if (index >= endpoints.length)
|
if (index >= endpoints.length)
|
||||||
return null;
|
return null;
|
||||||
return endpoints[index];
|
return endpoints[index];
|
||||||
@@ -173,7 +176,8 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
Usb_Bus bus = (Usb_Bus) component;
|
Usb_Bus bus = (Usb_Bus) component;
|
||||||
StringBuffer sb = new StringBuffer("Usb_Bus\n");
|
StringBuffer sb = new StringBuffer("Usb_Bus\n");
|
||||||
sb.append("\tdirname: " + bus.getDirname() + "\n");
|
sb.append("\tdirname: " + bus.getDirname() + "\n");
|
||||||
sb.append("\tlocation: 0x" + Long.toHexString(bus.getLocation()) + "\n");
|
sb.append("\tlocation: 0x" + Long.toHexString(bus.getLocation())
|
||||||
|
+ "\n");
|
||||||
textArea.setText(sb.toString());
|
textArea.setText(sb.toString());
|
||||||
} else if (component instanceof Usb_Device) {
|
} else if (component instanceof Usb_Device) {
|
||||||
Usb_Device device = (Usb_Device) component;
|
Usb_Device device = (Usb_Device) component;
|
||||||
@@ -185,14 +189,16 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
} else if (component instanceof Usb_Device_Descriptor) {
|
} else if (component instanceof Usb_Device_Descriptor) {
|
||||||
Usb_Device_Descriptor devDesc = (Usb_Device_Descriptor) component;
|
Usb_Device_Descriptor devDesc = (Usb_Device_Descriptor) component;
|
||||||
StringBuffer sb = new StringBuffer("Usb_Device_Descriptor\n");
|
StringBuffer sb = new StringBuffer("Usb_Device_Descriptor\n");
|
||||||
sb.append("\tblenght: 0x" + Integer.toHexString(devDesc.getBLength())
|
sb.append("\tblenght: 0x"
|
||||||
+ "\n");
|
+ Integer.toHexString(devDesc.getBLength() & 0xFF) + "\n");
|
||||||
sb.append("\tbDescriptorType: 0x"
|
sb.append("\tbDescriptorType: 0x"
|
||||||
+ Integer.toHexString(devDesc.getBDescriptorType()) + "\n");
|
+ Integer.toHexString(devDesc.getBDescriptorType() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
sb.append("\tbcdUSB: 0x"
|
sb.append("\tbcdUSB: 0x"
|
||||||
+ Integer.toHexString(devDesc.getBcdUSB() & 0xFFFF) + "\n");
|
+ Integer.toHexString(devDesc.getBcdUSB() & 0xFFFF) + "\n");
|
||||||
sb.append("\tbDeviceClass: 0x"
|
sb.append("\tbDeviceClass: 0x"
|
||||||
+ Integer.toHexString(devDesc.getBDeviceClass() & 0xFF) + "\n");
|
+ Integer.toHexString(devDesc.getBDeviceClass() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
sb.append("\tbDeviceSubClass: 0x"
|
sb.append("\tbDeviceSubClass: 0x"
|
||||||
+ Integer.toHexString(devDesc.getBDeviceSubClass() & 0xFF)
|
+ Integer.toHexString(devDesc.getBDeviceSubClass() & 0xFF)
|
||||||
+ "\n");
|
+ "\n");
|
||||||
@@ -203,19 +209,28 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
+ Integer.toHexString(devDesc.getBMaxPacketSize0() & 0xFF)
|
+ Integer.toHexString(devDesc.getBMaxPacketSize0() & 0xFF)
|
||||||
+ " (" + devDesc.getBMaxPacketSize0() + ")\n");
|
+ " (" + devDesc.getBMaxPacketSize0() + ")\n");
|
||||||
sb.append("\tidVendor: 0x"
|
sb.append("\tidVendor: 0x"
|
||||||
+ Integer.toHexString(devDesc.getIdVendor() & 0xFFFF) + "\n");
|
+ Integer.toHexString(devDesc.getIdVendor() & 0xFFFF)
|
||||||
sb.append("\tidProduct: 0x"
|
|
||||||
+ Integer.toHexString(devDesc.getIdProduct() & 0xFFFF) + "\n");
|
|
||||||
sb.append("\tbcdDevice: 0x"
|
|
||||||
+ Integer.toHexString(devDesc.getBcdDevice()) + "\n");
|
|
||||||
sb.append("\tiManufacturer: 0x"
|
|
||||||
+ Integer.toHexString(devDesc.getIManufacturer()) + "\n");
|
|
||||||
sb.append("\tiProduct: 0x" + Integer.toHexString(devDesc.getIProduct())
|
|
||||||
+ "\n");
|
+ "\n");
|
||||||
|
sb.append("\tidProduct: 0x"
|
||||||
|
+ Integer.toHexString(devDesc.getIdProduct() & 0xFFFF)
|
||||||
|
+ "\n");
|
||||||
|
sb
|
||||||
|
.append("\tbcdDevice: 0x"
|
||||||
|
+ Integer
|
||||||
|
.toHexString(devDesc.getBcdDevice() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
|
sb.append("\tiManufacturer: 0x"
|
||||||
|
+ Integer.toHexString(devDesc.getIManufacturer() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
|
sb.append("\tiProduct: 0x"
|
||||||
|
+ Integer.toHexString(devDesc.getIProduct()) + "\n");
|
||||||
sb.append("\tiSerialNumber: 0x"
|
sb.append("\tiSerialNumber: 0x"
|
||||||
+ Integer.toHexString(devDesc.getISerialNumber()) + "\n");
|
+ Integer.toHexString(devDesc.getISerialNumber() & 0xFF)
|
||||||
sb.append("\tbNumConfigurations: 0x"
|
+ "\n");
|
||||||
+ Integer.toHexString(devDesc.getBNumConfigurations()) + "\n");
|
sb
|
||||||
|
.append("\tbNumConfigurations: 0x"
|
||||||
|
+ Integer.toHexString(devDesc
|
||||||
|
.getBNumConfigurations() & 0xFF) + "\n");
|
||||||
// get device handle to retrieve string descriptors
|
// get device handle to retrieve string descriptors
|
||||||
Usb_Bus bus = rootBus;
|
Usb_Bus bus = rootBus;
|
||||||
while (bus != null) {
|
while (bus != null) {
|
||||||
@@ -224,7 +239,8 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
Usb_Device_Descriptor tmpDevDesc = dev.getDescriptor();
|
Usb_Device_Descriptor tmpDevDesc = dev.getDescriptor();
|
||||||
if ((dev.getDescriptor() != null)
|
if ((dev.getDescriptor() != null)
|
||||||
&& ((dev.getDescriptor().getIManufacturer() > 0)
|
&& ((dev.getDescriptor().getIManufacturer() > 0)
|
||||||
|| (dev.getDescriptor().getIProduct() > 0) || (dev.getDescriptor().getISerialNumber() > 0))) {
|
|| (dev.getDescriptor().getIProduct() > 0) || (dev
|
||||||
|
.getDescriptor().getISerialNumber() > 0))) {
|
||||||
if (tmpDevDesc.equals(devDesc)) {
|
if (tmpDevDesc.equals(devDesc)) {
|
||||||
int handle = LibusbJava.usb_open(dev);
|
int handle = LibusbJava.usb_open(dev);
|
||||||
sb.append("\nString descriptors\n");
|
sb.append("\nString descriptors\n");
|
||||||
@@ -234,8 +250,8 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
}
|
}
|
||||||
if (dev.getDescriptor().getIManufacturer() > 0) {
|
if (dev.getDescriptor().getIManufacturer() > 0) {
|
||||||
String manufacturer = LibusbJava
|
String manufacturer = LibusbJava
|
||||||
.usb_get_string_simple(handle,
|
.usb_get_string_simple(handle, devDesc
|
||||||
devDesc.getIManufacturer());
|
.getIManufacturer());
|
||||||
if (manufacturer == null)
|
if (manufacturer == null)
|
||||||
manufacturer = "unable to fetch manufacturer string";
|
manufacturer = "unable to fetch manufacturer string";
|
||||||
sb.append("\tiManufacturer: " + manufacturer
|
sb.append("\tiManufacturer: " + manufacturer
|
||||||
@@ -243,16 +259,16 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
}
|
}
|
||||||
if (dev.getDescriptor().getIProduct() > 0) {
|
if (dev.getDescriptor().getIProduct() > 0) {
|
||||||
String product = LibusbJava
|
String product = LibusbJava
|
||||||
.usb_get_string_simple(handle,
|
.usb_get_string_simple(handle, devDesc
|
||||||
devDesc.getIProduct());
|
.getIProduct());
|
||||||
if (product == null)
|
if (product == null)
|
||||||
product = "unable to fetch product string";
|
product = "unable to fetch product string";
|
||||||
sb.append("\tiProduct: " + product + "\n");
|
sb.append("\tiProduct: " + product + "\n");
|
||||||
}
|
}
|
||||||
if (dev.getDescriptor().getISerialNumber() > 0) {
|
if (dev.getDescriptor().getISerialNumber() > 0) {
|
||||||
String serialNumber = LibusbJava
|
String serialNumber = LibusbJava
|
||||||
.usb_get_string_simple(handle,
|
.usb_get_string_simple(handle, devDesc
|
||||||
devDesc.getISerialNumber());
|
.getISerialNumber());
|
||||||
if (serialNumber == null)
|
if (serialNumber == null)
|
||||||
serialNumber = "unable to fetch serial number string";
|
serialNumber = "unable to fetch serial number string";
|
||||||
sb.append("\tiSerialNumber: " + serialNumber
|
sb.append("\tiSerialNumber: " + serialNumber
|
||||||
@@ -269,23 +285,29 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
} else if (component instanceof Usb_Config_Descriptor) {
|
} else if (component instanceof Usb_Config_Descriptor) {
|
||||||
Usb_Config_Descriptor confDesc = (Usb_Config_Descriptor) component;
|
Usb_Config_Descriptor confDesc = (Usb_Config_Descriptor) component;
|
||||||
StringBuffer sb = new StringBuffer("Usb_Config_Descriptor\n");
|
StringBuffer sb = new StringBuffer("Usb_Config_Descriptor\n");
|
||||||
sb.append("\tblenght: 0x" + Integer.toHexString(confDesc.getBLength())
|
sb.append("\tblenght: 0x"
|
||||||
+ "\n");
|
+ Integer.toHexString(confDesc.getBLength()) + "\n");
|
||||||
sb.append("\tbDescriptorType: 0x"
|
sb.append("\tbDescriptorType: 0x"
|
||||||
+ Integer.toHexString(confDesc.getBDescriptorType()) + "\n");
|
+ Integer.toHexString(confDesc.getBDescriptorType() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
sb.append("\tbNumInterfaces: 0x"
|
sb.append("\tbNumInterfaces: 0x"
|
||||||
+ Integer.toHexString(confDesc.getBNumInterfaces()) + "\n");
|
+ Integer.toHexString(confDesc.getBNumInterfaces() & 0xFF)
|
||||||
sb.append("\tbConfigurationValue: 0x"
|
+ "\n");
|
||||||
+ Integer.toHexString(confDesc.getBConfigurationValue()) + "\n");
|
sb
|
||||||
|
.append("\tbConfigurationValue: 0x"
|
||||||
|
+ Integer.toHexString(confDesc
|
||||||
|
.getBConfigurationValue() & 0xFF) + "\n");
|
||||||
sb.append("\tiConfiguration: 0x"
|
sb.append("\tiConfiguration: 0x"
|
||||||
+ Integer.toHexString(confDesc.getIConfiguration()) + "\n");
|
+ Integer.toHexString(confDesc.getIConfiguration() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
sb.append("\tbmAttributes: 0x"
|
sb.append("\tbmAttributes: 0x"
|
||||||
+ Integer.toHexString(confDesc.getBmAttributes() & 0xFF) + "\n");
|
+ Integer.toHexString(confDesc.getBmAttributes() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
sb.append("\tMaxPower [mA]: 0x"
|
sb.append("\tMaxPower [mA]: 0x"
|
||||||
+ Integer.toHexString(confDesc.getMaxPower() & 0xFF) + " ("
|
+ Integer.toHexString(confDesc.getMaxPower() & 0xFF) + " ("
|
||||||
+ confDesc.getMaxPower() + ")\n");
|
+ confDesc.getMaxPower() + ")\n");
|
||||||
sb.append("\textralen: 0x" + Integer.toHexString(confDesc.getExtralen())
|
sb.append("\textralen: 0x"
|
||||||
+ "\n");
|
+ Integer.toHexString(confDesc.getExtralen()) + "\n");
|
||||||
sb.append("\textra: " + confDesc.getExtra() + "\n");
|
sb.append("\textra: " + confDesc.getExtra() + "\n");
|
||||||
// get device handle to retrieve string descriptors
|
// get device handle to retrieve string descriptors
|
||||||
Usb_Bus bus = rootBus;
|
Usb_Bus bus = rootBus;
|
||||||
@@ -303,8 +325,8 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
String configuration = LibusbJava
|
String configuration = LibusbJava
|
||||||
.usb_get_string_simple(handle,
|
.usb_get_string_simple(handle, confDesc
|
||||||
confDesc.getIConfiguration());
|
.getIConfiguration());
|
||||||
if (configuration == null)
|
if (configuration == null)
|
||||||
configuration = "unable to fetch configuration string";
|
configuration = "unable to fetch configuration string";
|
||||||
sb.append("\tiConfiguration: " + configuration
|
sb.append("\tiConfiguration: " + configuration
|
||||||
@@ -329,29 +351,36 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
} else if (component instanceof Usb_Interface_Descriptor) {
|
} else if (component instanceof Usb_Interface_Descriptor) {
|
||||||
Usb_Interface_Descriptor intDesc = (Usb_Interface_Descriptor) component;
|
Usb_Interface_Descriptor intDesc = (Usb_Interface_Descriptor) component;
|
||||||
StringBuffer sb = new StringBuffer("Usb_Interface_Descriptor\n");
|
StringBuffer sb = new StringBuffer("Usb_Interface_Descriptor\n");
|
||||||
sb.append("\tblenght: 0x" + Integer.toHexString(intDesc.getBLength())
|
sb.append("\tblenght: 0x"
|
||||||
+ "\n");
|
+ Integer.toHexString(intDesc.getBLength() & 0xFF) + "\n");
|
||||||
sb.append("\tbDescriptorType: 0x"
|
sb.append("\tbDescriptorType: 0x"
|
||||||
+ Integer.toHexString(intDesc.getBDescriptorType()) + "\n");
|
+ Integer.toHexString(intDesc.getBDescriptorType() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
sb.append("\tbInterfaceNumber: 0x"
|
sb.append("\tbInterfaceNumber: 0x"
|
||||||
+ Integer.toHexString(intDesc.getBInterfaceNumber()) + "\n");
|
+ Integer.toHexString(intDesc.getBInterfaceNumber() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
sb.append("\tbAlternateSetting: 0x"
|
sb.append("\tbAlternateSetting: 0x"
|
||||||
+ Integer.toHexString(intDesc.getBAlternateSetting()) + "\n");
|
+ Integer
|
||||||
|
.toHexString(intDesc.getBAlternateSetting() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
sb.append("\tbNumEndpoints: 0x"
|
sb.append("\tbNumEndpoints: 0x"
|
||||||
+ Integer.toHexString(intDesc.getBNumEndpoints()) + "\n");
|
+ Integer.toHexString(intDesc.getBNumEndpoints() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
sb.append("\tbInterfaceClass: 0x"
|
sb.append("\tbInterfaceClass: 0x"
|
||||||
+ Integer.toHexString(intDesc.getBInterfaceClass() & 0xFF)
|
+ Integer.toHexString(intDesc.getBInterfaceClass() & 0xFF)
|
||||||
+ "\n");
|
+ "\n");
|
||||||
sb.append("\tbInterfaceSubClass: 0x"
|
sb
|
||||||
+ Integer.toHexString(intDesc.getBInterfaceSubClass() & 0xFF)
|
.append("\tbInterfaceSubClass: 0x"
|
||||||
+ "\n");
|
+ Integer.toHexString(intDesc
|
||||||
sb.append("\tbInterfaceProtocol: 0x"
|
.getBInterfaceSubClass() & 0xFF) + "\n");
|
||||||
+ Integer.toHexString(intDesc.getBInterfaceProtocol() & 0xFF)
|
sb
|
||||||
+ "\n");
|
.append("\tbInterfaceProtocol: 0x"
|
||||||
|
+ Integer.toHexString(intDesc
|
||||||
|
.getBInterfaceProtocol() & 0xFF) + "\n");
|
||||||
sb.append("\tiInterface: 0x"
|
sb.append("\tiInterface: 0x"
|
||||||
+ Integer.toHexString(intDesc.getIInterface()) + "\n");
|
+ Integer.toHexString(intDesc.getIInterface()) + "\n");
|
||||||
sb.append("\textralen: 0x" + Integer.toHexString(intDesc.getExtralen())
|
sb.append("\textralen: 0x"
|
||||||
+ "\n");
|
+ Integer.toHexString(intDesc.getExtralen()) + "\n");
|
||||||
sb.append("\textra: " + intDesc.getExtra() + "\n");
|
sb.append("\textra: " + intDesc.getExtra() + "\n");
|
||||||
// get device handle to retrieve string descriptors
|
// get device handle to retrieve string descriptors
|
||||||
Usb_Bus bus = rootBus;
|
Usb_Bus bus = rootBus;
|
||||||
@@ -362,7 +391,8 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
for (int i = 0; i < confDescs.length; i++) {
|
for (int i = 0; i < confDescs.length; i++) {
|
||||||
Usb_Interface[] ints = confDescs[i].getInterface();
|
Usb_Interface[] ints = confDescs[i].getInterface();
|
||||||
for (int j = 0; j < ints.length; j++) {
|
for (int j = 0; j < ints.length; j++) {
|
||||||
Usb_Interface_Descriptor[] tmpIntDescs = ints[j].getAltsetting();
|
Usb_Interface_Descriptor[] tmpIntDescs = ints[j]
|
||||||
|
.getAltsetting();
|
||||||
for (int k = 0; k < ints.length; k++) {
|
for (int k = 0; k < ints.length; k++) {
|
||||||
if (tmpIntDescs[i].equals(intDesc)
|
if (tmpIntDescs[i].equals(intDesc)
|
||||||
&& (intDesc.getIInterface() > 0)) {
|
&& (intDesc.getIInterface() > 0)) {
|
||||||
@@ -393,26 +423,28 @@ public class UsbTreeModel implements TreeModel, TreeSelectionListener {
|
|||||||
} else if (component instanceof Usb_Endpoint_Descriptor) {
|
} else if (component instanceof Usb_Endpoint_Descriptor) {
|
||||||
Usb_Endpoint_Descriptor epDesc = (Usb_Endpoint_Descriptor) component;
|
Usb_Endpoint_Descriptor epDesc = (Usb_Endpoint_Descriptor) component;
|
||||||
StringBuffer sb = new StringBuffer("Usb_Endpoint_Descriptor\n");
|
StringBuffer sb = new StringBuffer("Usb_Endpoint_Descriptor\n");
|
||||||
sb.append("\tblenght: 0x" + Integer.toHexString(epDesc.getBLength())
|
sb.append("\tblenght: 0x"
|
||||||
+ "\n");
|
+ Integer.toHexString(epDesc.getBLength() & 0xFF) + "\n");
|
||||||
sb.append("\tbDescriptorType: 0x"
|
sb.append("\tbDescriptorType: 0x"
|
||||||
+ Integer.toHexString(epDesc.getBDescriptorType()) + "\n");
|
+ Integer.toHexString(epDesc.getBDescriptorType() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
sb.append("\tbEndpointAddress: 0x"
|
sb.append("\tbEndpointAddress: 0x"
|
||||||
+ Integer.toHexString(epDesc.getBEndpointAddress() & 0xFF)
|
+ Integer.toHexString(epDesc.getBEndpointAddress() & 0xFF)
|
||||||
+ "\n");
|
+ "\n");
|
||||||
sb.append("\tbmAttributes: 0x"
|
sb.append("\tbmAttributes: 0x"
|
||||||
+ Integer.toHexString(epDesc.getBmAttributes() & 0xFF) + "\n");
|
+ Integer.toHexString(epDesc.getBmAttributes() & 0xFF)
|
||||||
|
+ "\n");
|
||||||
sb.append("\twMaxPacketSize: 0x"
|
sb.append("\twMaxPacketSize: 0x"
|
||||||
+ Integer.toHexString(epDesc.getWMaxPacketSize() & 0xFFFF)
|
+ Integer.toHexString(epDesc.getWMaxPacketSize() & 0xFFFF)
|
||||||
+ " (" + epDesc.getWMaxPacketSize() + ")\n");
|
+ " (" + epDesc.getWMaxPacketSize() + ")\n");
|
||||||
sb.append("\tbInterval: 0x" + Integer.toHexString(epDesc.getBInterval())
|
sb.append("\tbInterval: 0x"
|
||||||
+ "\n");
|
+ Integer.toHexString(epDesc.getBInterval() & 0xFF) + "\n");
|
||||||
sb.append("\tbRefresh: 0x" + Integer.toHexString(epDesc.getBRefresh())
|
sb.append("\tbRefresh: 0x"
|
||||||
+ "\n");
|
+ Integer.toHexString(epDesc.getBRefresh() & 0xFF) + "\n");
|
||||||
sb.append("\tbSynchAddress: 0x"
|
sb.append("\tbSynchAddress: 0x"
|
||||||
+ Integer.toHexString(epDesc.getBSynchAddress()) + "\n");
|
+ Integer.toHexString(epDesc.getBSynchAddress()) + "\n");
|
||||||
sb.append("\textralen: 0x" + Integer.toHexString(epDesc.getExtralen())
|
sb.append("\textralen: 0x"
|
||||||
+ "\n");
|
+ Integer.toHexString(epDesc.getExtralen()) + "\n");
|
||||||
sb.append("\textra: " + epDesc.getExtra() + "\n");
|
sb.append("\textra: " + epDesc.getExtra() + "\n");
|
||||||
textArea.setText(sb.toString());
|
textArea.setText(sb.toString());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,20 +11,32 @@ import java.awt.Component;
|
|||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.awt.event.MouseAdapter;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JMenu;
|
import javax.swing.JMenu;
|
||||||
import javax.swing.JMenuBar;
|
import javax.swing.JMenuBar;
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JPopupMenu;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JSplitPane;
|
import javax.swing.JSplitPane;
|
||||||
import javax.swing.JTextArea;
|
import javax.swing.JTextArea;
|
||||||
import javax.swing.JTree;
|
import javax.swing.JTree;
|
||||||
import javax.swing.KeyStroke;
|
import javax.swing.KeyStroke;
|
||||||
|
import javax.swing.tree.TreePath;
|
||||||
|
|
||||||
import ch.ntb.usb.LibusbJava;
|
import ch.ntb.usb.LibusbJava;
|
||||||
import ch.ntb.usb.Usb_Bus;
|
import ch.ntb.usb.Usb_Bus;
|
||||||
|
import ch.ntb.usb.Usb_Config_Descriptor;
|
||||||
|
import ch.ntb.usb.Usb_Device;
|
||||||
|
import ch.ntb.usb.Usb_Device_Descriptor;
|
||||||
|
import ch.ntb.usb.Usb_Endpoint_Descriptor;
|
||||||
|
import ch.ntb.usb.Usb_Interface_Descriptor;
|
||||||
|
import ch.ntb.usb.test.AbstractDeviceInfo.TransferMode;
|
||||||
|
import ch.ntb.usb.testApp.TestApp;
|
||||||
|
import ch.ntb.usb.testApp.TestDevice;
|
||||||
|
|
||||||
public class UsbView extends JFrame {
|
public class UsbView extends JFrame {
|
||||||
|
|
||||||
@@ -44,6 +56,10 @@ public class UsbView extends JFrame {
|
|||||||
|
|
||||||
UsbTreeModel treeModel;
|
UsbTreeModel treeModel;
|
||||||
|
|
||||||
|
JPopupMenu testAppPopup;
|
||||||
|
|
||||||
|
protected JPopupMenu endpointPopup;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the default constructor
|
* This is the default constructor
|
||||||
*/
|
*/
|
||||||
@@ -179,10 +195,168 @@ public class UsbView extends JFrame {
|
|||||||
usbTree = new JTree(treeModel);
|
usbTree = new JTree(treeModel);
|
||||||
expandAll(usbTree);
|
expandAll(usbTree);
|
||||||
usbTree.addTreeSelectionListener(treeModel);
|
usbTree.addTreeSelectionListener(treeModel);
|
||||||
|
getJTestAppPopup();
|
||||||
|
usbTree.addMouseListener(new MouseAdapter() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mousePressed(MouseEvent e) {
|
||||||
|
if (e.isPopupTrigger()) {
|
||||||
|
Object source = e.getSource();
|
||||||
|
if (source instanceof JTree) {
|
||||||
|
JTree tree = (JTree) source;
|
||||||
|
TreePath path = tree.getPathForLocation(e.getX(), e
|
||||||
|
.getY());
|
||||||
|
if (path != null
|
||||||
|
&& (path.getLastPathComponent() instanceof Usb_Interface_Descriptor)) {
|
||||||
|
usbTree.setSelectionPath(path);
|
||||||
|
testAppPopup.show(tree, e.getX(), e.getY());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseReleased(MouseEvent e) {
|
||||||
|
if (e.isPopupTrigger()) {
|
||||||
|
if (e.isPopupTrigger()) {
|
||||||
|
Object source = e.getSource();
|
||||||
|
if (source instanceof JTree) {
|
||||||
|
JTree tree = (JTree) source;
|
||||||
|
TreePath path = tree.getPathForLocation(e
|
||||||
|
.getX(), e.getY());
|
||||||
|
if (path != null
|
||||||
|
&& (path.getLastPathComponent() instanceof Usb_Interface_Descriptor)) {
|
||||||
|
usbTree.setSelectionPath(path);
|
||||||
|
testAppPopup.show(tree, e.getX(), e.getY());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return usbTree;
|
return usbTree;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void getJTestAppPopup() {
|
||||||
|
// Create the popup menu.
|
||||||
|
testAppPopup = new JPopupMenu();
|
||||||
|
endpointPopup = new JPopupMenu();
|
||||||
|
JMenuItem menuItem = new JMenuItem(
|
||||||
|
"Start a test application using this interface");
|
||||||
|
menuItem.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||||
|
initAndStartTestApp();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initAndStartTestApp() {
|
||||||
|
JTree tree = (JTree) testAppPopup.getInvoker();
|
||||||
|
TreePath path = tree.getSelectionPath();
|
||||||
|
TreePath parent = path;
|
||||||
|
Usb_Endpoint_Descriptor[] endpoints = null;
|
||||||
|
int altinterface = -1;
|
||||||
|
int interface_ = -1;
|
||||||
|
int configuration = -1;
|
||||||
|
short vendorId = -1;
|
||||||
|
short productId = -1;
|
||||||
|
while (parent != null
|
||||||
|
&& !(parent.getLastPathComponent() instanceof Usb_Bus)) {
|
||||||
|
Object usbObj = parent.getLastPathComponent();
|
||||||
|
if (usbObj instanceof Usb_Interface_Descriptor) {
|
||||||
|
Usb_Interface_Descriptor usbIntDesc = (Usb_Interface_Descriptor) usbObj;
|
||||||
|
endpoints = usbIntDesc.getEndpoint();
|
||||||
|
interface_ = usbIntDesc.getBInterfaceNumber();
|
||||||
|
altinterface = usbIntDesc.getBAlternateSetting();
|
||||||
|
} else if (usbObj instanceof Usb_Config_Descriptor) {
|
||||||
|
configuration = ((Usb_Config_Descriptor) usbObj)
|
||||||
|
.getBConfigurationValue();
|
||||||
|
} else if (usbObj instanceof Usb_Device) {
|
||||||
|
Usb_Device_Descriptor devDesc = ((Usb_Device) usbObj)
|
||||||
|
.getDescriptor();
|
||||||
|
productId = devDesc.getIdProduct();
|
||||||
|
vendorId = devDesc.getIdVendor();
|
||||||
|
}
|
||||||
|
parent = parent.getParentPath();
|
||||||
|
}
|
||||||
|
if (parent != null) {
|
||||||
|
// present a dialog to select in/out endpoint
|
||||||
|
// TODO: present dialog to select in/out endpoint
|
||||||
|
Usb_Endpoint_Descriptor[] outEPs = null;
|
||||||
|
int nofOutEPs = 0;
|
||||||
|
Usb_Endpoint_Descriptor[] inEPs = null;
|
||||||
|
int nofInEPs = 0;
|
||||||
|
|
||||||
|
if (endpoints != null) {
|
||||||
|
outEPs = new Usb_Endpoint_Descriptor[endpoints.length];
|
||||||
|
inEPs = new Usb_Endpoint_Descriptor[endpoints.length];
|
||||||
|
for (int i = 0; i < endpoints.length; i++) {
|
||||||
|
int epAddr = endpoints[i].getBEndpointAddress() & 0xFF;
|
||||||
|
if ((epAddr & 0x80) > 0) {
|
||||||
|
// is IN endpoint
|
||||||
|
inEPs[nofInEPs++] = endpoints[i];
|
||||||
|
} else {
|
||||||
|
// is OUT endpoint
|
||||||
|
outEPs[nofOutEPs++] = endpoints[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// create a new TestDevice
|
||||||
|
TestDevice testDevice = new TestDevice();
|
||||||
|
testDevice.setIdProduct(productId);
|
||||||
|
testDevice.setIdVendor(vendorId);
|
||||||
|
testDevice.setAltinterface(altinterface);
|
||||||
|
testDevice.setConfiguration(configuration);
|
||||||
|
testDevice.setInterface(interface_);
|
||||||
|
if (inEPs != null) {
|
||||||
|
for (int i = 0; i < nofInEPs; i++) {
|
||||||
|
int type = inEPs[i].getBmAttributes() & 0x03;
|
||||||
|
switch (type) {
|
||||||
|
case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_BULK:
|
||||||
|
testDevice.setInEPBulk(inEPs[i]
|
||||||
|
.getBEndpointAddress() & 0xff);
|
||||||
|
testDevice.setInMode(TransferMode.Bulk);
|
||||||
|
break;
|
||||||
|
case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_INTERRUPT:
|
||||||
|
testDevice.setInEPInt(inEPs[i]
|
||||||
|
.getBEndpointAddress() & 0xff);
|
||||||
|
testDevice.setInMode(TransferMode.Interrupt);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (outEPs != null) {
|
||||||
|
for (int i = 0; i < nofOutEPs; i++) {
|
||||||
|
int type = outEPs[i].getBmAttributes() & 0x03;
|
||||||
|
switch (type) {
|
||||||
|
case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_BULK:
|
||||||
|
testDevice.setOutEPBulk(outEPs[i]
|
||||||
|
.getBEndpointAddress() & 0xff);
|
||||||
|
testDevice.setOutMode(TransferMode.Bulk);
|
||||||
|
break;
|
||||||
|
case Usb_Endpoint_Descriptor.USB_ENDPOINT_TYPE_INTERRUPT:
|
||||||
|
testDevice.setOutEPInt(outEPs[i]
|
||||||
|
.getBEndpointAddress() & 0xff);
|
||||||
|
testDevice.setOutMode(TransferMode.Interrupt);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// open a new testApp
|
||||||
|
TestApp app = new TestApp(testDevice);
|
||||||
|
app.setVisible(true);
|
||||||
|
} else {
|
||||||
|
System.out.println("error, could not find device node");
|
||||||
|
// TODO: handle error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
testAppPopup.add(menuItem);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method initializes jSplitPane
|
* This method initializes jSplitPane
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -18,12 +18,12 @@ public class AT90USB1287 extends AbstractDeviceInfo {
|
|||||||
setConfiguration(1);
|
setConfiguration(1);
|
||||||
setInterface(0);
|
setInterface(0);
|
||||||
setAltinterface(-1);
|
setAltinterface(-1);
|
||||||
setOUT_EP_BULK(0x01);
|
setOutEPBulk(0x01);
|
||||||
setIN_EP_BULK(0x82);
|
setInEPBulk(0x82);
|
||||||
setOUT_EP_INT(0x03);
|
setOutEPInt(0x03);
|
||||||
setIN_EP_INT(0x84);
|
setInEPInt(0x84);
|
||||||
setSleepTimeout(2000);
|
setSleepTimeout(2000);
|
||||||
setMaxDataSize(USB.FULLSPEED_MAX_BULK_PACKET_SIZE);
|
setMaxDataSize(USB.FULLSPEED_MAX_BULK_PACKET_SIZE);
|
||||||
setMode(WriteMode.Bulk);
|
setMode(TransferMode.Bulk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,33 +8,33 @@ package ch.ntb.usb.test;
|
|||||||
|
|
||||||
public abstract class AbstractDeviceInfo {
|
public abstract class AbstractDeviceInfo {
|
||||||
|
|
||||||
private short IdVendor;
|
private short idVendor;
|
||||||
|
|
||||||
private short IdProduct;
|
private short idProduct;
|
||||||
|
|
||||||
private int Timeout;
|
private int timeout;
|
||||||
|
|
||||||
private int Configuration;
|
private int configuration;
|
||||||
|
|
||||||
private int Interface;
|
private int interface_;
|
||||||
|
|
||||||
private int Altinterface;
|
private int altinterface;
|
||||||
|
|
||||||
private int OUT_EP_BULK;
|
private int outEPBulk;
|
||||||
|
|
||||||
private int IN_EP_BULK;
|
private int inEPBulk;
|
||||||
|
|
||||||
private int OUT_EP_INT;
|
private int outEPInt;
|
||||||
|
|
||||||
private int IN_EP_INT;
|
private int inEPInt;
|
||||||
|
|
||||||
private int SleepTimeout;
|
private int sleepTimeout;
|
||||||
|
|
||||||
private int MaxDataSize;
|
private int maxDataSize;
|
||||||
|
|
||||||
private WriteMode mode;
|
private TransferMode mode;
|
||||||
|
|
||||||
public static enum WriteMode {
|
public static enum TransferMode {
|
||||||
Bulk, Interrupt
|
Bulk, Interrupt
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,106 +45,106 @@ public abstract class AbstractDeviceInfo {
|
|||||||
abstract public void initValues();
|
abstract public void initValues();
|
||||||
|
|
||||||
public int getAltinterface() {
|
public int getAltinterface() {
|
||||||
return Altinterface;
|
return altinterface;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getConfiguration() {
|
public int getConfiguration() {
|
||||||
return Configuration;
|
return configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
public short getIdProduct() {
|
public short getIdProduct() {
|
||||||
return IdProduct;
|
return idProduct;
|
||||||
}
|
}
|
||||||
|
|
||||||
public short getIdVendor() {
|
public short getIdVendor() {
|
||||||
return IdVendor;
|
return idVendor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getIN_EP_BULK() {
|
public int getInEPBulk() {
|
||||||
return IN_EP_BULK;
|
return inEPBulk;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getIN_EP_INT() {
|
public int getInEPInt() {
|
||||||
return IN_EP_INT;
|
return inEPInt;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getInterface() {
|
public int getInterface() {
|
||||||
return Interface;
|
return interface_;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMaxDataSize() {
|
public int getMaxDataSize() {
|
||||||
return MaxDataSize;
|
return maxDataSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getOUT_EP_BULK() {
|
public int getOutEPBulk() {
|
||||||
return OUT_EP_BULK;
|
return outEPBulk;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getOUT_EP_INT() {
|
public int getOutEPInt() {
|
||||||
return OUT_EP_INT;
|
return outEPInt;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSleepTimeout() {
|
public int getSleepTimeout() {
|
||||||
return SleepTimeout;
|
return sleepTimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTimeout() {
|
public int getTimeout() {
|
||||||
return Timeout;
|
return timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAltinterface(int altinterface) {
|
public void setAltinterface(int altinterface) {
|
||||||
Altinterface = altinterface;
|
this.altinterface = altinterface;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConfiguration(int configuration) {
|
public void setConfiguration(int configuration) {
|
||||||
Configuration = configuration;
|
this.configuration = configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIdProduct(short idProduct) {
|
public void setIdProduct(short idProduct) {
|
||||||
IdProduct = idProduct;
|
this.idProduct = idProduct;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIdVendor(short idVendor) {
|
public void setIdVendor(short idVendor) {
|
||||||
IdVendor = idVendor;
|
this.idVendor = idVendor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIN_EP_BULK(int in_ep_bulk) {
|
public void setInEPBulk(int in_ep_bulk) {
|
||||||
IN_EP_BULK = in_ep_bulk;
|
this.inEPBulk = in_ep_bulk;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIN_EP_INT(int in_ep_int) {
|
public void setInEPInt(int in_ep_int) {
|
||||||
IN_EP_INT = in_ep_int;
|
this.inEPInt = in_ep_int;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInterface(int interface1) {
|
public void setInterface(int interface_) {
|
||||||
Interface = interface1;
|
this.interface_ = interface_;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMaxDataSize(int maxDataSize) {
|
public void setMaxDataSize(int maxDataSize) {
|
||||||
MaxDataSize = maxDataSize;
|
this.maxDataSize = maxDataSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOUT_EP_BULK(int out_ep_bulk) {
|
public void setOutEPBulk(int out_ep_bulk) {
|
||||||
OUT_EP_BULK = out_ep_bulk;
|
this.outEPBulk = out_ep_bulk;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOUT_EP_INT(int out_ep_int) {
|
public void setOutEPInt(int out_ep_int) {
|
||||||
OUT_EP_INT = out_ep_int;
|
this.outEPInt = out_ep_int;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSleepTimeout(int sleepTimeout) {
|
public void setSleepTimeout(int sleepTimeout) {
|
||||||
SleepTimeout = sleepTimeout;
|
this.sleepTimeout = sleepTimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTimeout(int timeout) {
|
public void setTimeout(int timeout) {
|
||||||
Timeout = timeout;
|
this.timeout = timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WriteMode getMode() {
|
public TransferMode getMode() {
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMode(WriteMode mode) {
|
public void setMode(TransferMode mode) {
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,12 +18,12 @@ public class CY7C68013A extends AbstractDeviceInfo {
|
|||||||
setConfiguration(1);
|
setConfiguration(1);
|
||||||
setInterface(0);
|
setInterface(0);
|
||||||
setAltinterface(-1);
|
setAltinterface(-1);
|
||||||
setOUT_EP_INT(0x02);
|
setOutEPInt(0x02);
|
||||||
setIN_EP_INT(0x86);
|
setInEPInt(0x86);
|
||||||
setOUT_EP_BULK(0x04);
|
setOutEPBulk(0x04);
|
||||||
setIN_EP_BULK(0x88);
|
setInEPBulk(0x88);
|
||||||
setSleepTimeout(2000);
|
setSleepTimeout(2000);
|
||||||
setMaxDataSize(USB.HIGHSPEED_MAX_BULK_PACKET_SIZE);
|
setMaxDataSize(USB.HIGHSPEED_MAX_BULK_PACKET_SIZE);
|
||||||
setMode(WriteMode.Bulk);
|
setMode(TransferMode.Bulk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import ch.ntb.usb.USB;
|
|||||||
import ch.ntb.usb.USBException;
|
import ch.ntb.usb.USBException;
|
||||||
import ch.ntb.usb.Usb_Config_Descriptor;
|
import ch.ntb.usb.Usb_Config_Descriptor;
|
||||||
import ch.ntb.usb.Usb_Device_Descriptor;
|
import ch.ntb.usb.Usb_Device_Descriptor;
|
||||||
import ch.ntb.usb.test.AbstractDeviceInfo.WriteMode;
|
import ch.ntb.usb.test.AbstractDeviceInfo.TransferMode;
|
||||||
|
|
||||||
public class DeviceTest {
|
public class DeviceTest {
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ public class DeviceTest {
|
|||||||
doOpen();
|
doOpen();
|
||||||
doClose();
|
doClose();
|
||||||
// this call must throw an exception, because the device is closed
|
// this call must throw an exception, because the device is closed
|
||||||
dev.writeBulk(devinfo.getOUT_EP_BULK(), testData, testData.length,
|
dev.writeBulk(devinfo.getOutEPBulk(), testData, testData.length,
|
||||||
devinfo.getTimeout(), false);
|
devinfo.getTimeout(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ public class DeviceTest {
|
|||||||
dev.reset();
|
dev.reset();
|
||||||
timeout();
|
timeout();
|
||||||
// this call must throw an exception, because the device is closed
|
// this call must throw an exception, because the device is closed
|
||||||
dev.writeBulk(devinfo.getOUT_EP_BULK(), testData, testData.length,
|
dev.writeBulk(devinfo.getOutEPBulk(), testData, testData.length,
|
||||||
devinfo.getTimeout(), false);
|
devinfo.getTimeout(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,13 +116,13 @@ public class DeviceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void bulkWriteRead() throws Exception {
|
public void bulkWriteRead() throws Exception {
|
||||||
devinfo.setMode(WriteMode.Bulk);
|
devinfo.setMode(TransferMode.Bulk);
|
||||||
doOpenWriteReadClose();
|
doOpenWriteReadClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void interruptWriteRead() throws Exception {
|
public void interruptWriteRead() throws Exception {
|
||||||
devinfo.setMode(WriteMode.Interrupt);
|
devinfo.setMode(TransferMode.Interrupt);
|
||||||
doOpenWriteReadClose();
|
doOpenWriteReadClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ public class DeviceTest {
|
|||||||
public void bulkWriteReadMultiple() throws Exception {
|
public void bulkWriteReadMultiple() throws Exception {
|
||||||
final int NumberOfIterations = 100;
|
final int NumberOfIterations = 100;
|
||||||
|
|
||||||
devinfo.setMode(WriteMode.Bulk);
|
devinfo.setMode(TransferMode.Bulk);
|
||||||
doOpen();
|
doOpen();
|
||||||
for (int i = 0; i < NumberOfIterations; i++) {
|
for (int i = 0; i < NumberOfIterations; i++) {
|
||||||
initTestData();
|
initTestData();
|
||||||
@@ -142,7 +142,7 @@ public class DeviceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void multipleOpenCloseWithBulkWrite() throws Exception {
|
public void multipleOpenCloseWithBulkWrite() throws Exception {
|
||||||
devinfo.setMode(WriteMode.Bulk);
|
devinfo.setMode(TransferMode.Bulk);
|
||||||
for (int i = 0; i < 5; i++) {
|
for (int i = 0; i < 5; i++) {
|
||||||
doOpen();
|
doOpen();
|
||||||
doClose();
|
doClose();
|
||||||
@@ -164,10 +164,10 @@ public class DeviceTest {
|
|||||||
public void bulkAndInterrupt() throws Exception {
|
public void bulkAndInterrupt() throws Exception {
|
||||||
doOpen();
|
doOpen();
|
||||||
// BULK
|
// BULK
|
||||||
devinfo.setMode(WriteMode.Bulk);
|
devinfo.setMode(TransferMode.Bulk);
|
||||||
doWriteRead();
|
doWriteRead();
|
||||||
// INTERRUPT
|
// INTERRUPT
|
||||||
devinfo.setMode(WriteMode.Interrupt);
|
devinfo.setMode(TransferMode.Interrupt);
|
||||||
doWriteRead();
|
doWriteRead();
|
||||||
doClose();
|
doClose();
|
||||||
}
|
}
|
||||||
@@ -175,9 +175,9 @@ public class DeviceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void bulkAndInterruptMultiple() throws Exception {
|
public void bulkAndInterruptMultiple() throws Exception {
|
||||||
for (int i = 0; i < 20; i++) {
|
for (int i = 0; i < 20; i++) {
|
||||||
devinfo.setMode(WriteMode.Bulk);
|
devinfo.setMode(TransferMode.Bulk);
|
||||||
doOpenWriteReadClose();
|
doOpenWriteReadClose();
|
||||||
devinfo.setMode(WriteMode.Interrupt);
|
devinfo.setMode(TransferMode.Interrupt);
|
||||||
doOpenWriteReadClose();
|
doOpenWriteReadClose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -239,15 +239,15 @@ public class DeviceTest {
|
|||||||
|
|
||||||
private void doWriteRead() throws Exception {
|
private void doWriteRead() throws Exception {
|
||||||
initTestData();
|
initTestData();
|
||||||
if (devinfo.getMode().equals(WriteMode.Bulk)) {
|
if (devinfo.getMode().equals(TransferMode.Bulk)) {
|
||||||
dev.writeBulk(devinfo.getOUT_EP_BULK(), testData, testData.length,
|
dev.writeBulk(devinfo.getOutEPBulk(), testData, testData.length,
|
||||||
devinfo.getTimeout(), false);
|
devinfo.getTimeout(), false);
|
||||||
dev.readBulk(devinfo.getIN_EP_BULK(), readData, readData.length,
|
dev.readBulk(devinfo.getInEPBulk(), readData, readData.length,
|
||||||
devinfo.getTimeout(), false);
|
devinfo.getTimeout(), false);
|
||||||
} else if (devinfo.getMode().equals(WriteMode.Interrupt)) {
|
} else if (devinfo.getMode().equals(TransferMode.Interrupt)) {
|
||||||
dev.writeInterrupt(devinfo.getOUT_EP_INT(), testData,
|
dev.writeInterrupt(devinfo.getOutEPInt(), testData,
|
||||||
testData.length, devinfo.getTimeout(), false);
|
testData.length, devinfo.getTimeout(), false);
|
||||||
dev.readInterrupt(devinfo.getIN_EP_INT(), readData,
|
dev.readInterrupt(devinfo.getInEPInt(), readData,
|
||||||
readData.length, devinfo.getTimeout(), false);
|
readData.length, devinfo.getTimeout(), false);
|
||||||
}
|
}
|
||||||
compare(testData, readData);
|
compare(testData, readData);
|
||||||
|
|||||||
Reference in New Issue
Block a user