URL
https://opencores.org/ocsvn/usb_fpga_1_11/usb_fpga_1_11/trunk
Subversion Repositories usb_fpga_1_11
[/] [usb_fpga_1_11/] [trunk/] [java/] [ztex/] [ZtexScanBus1.java] - Rev 2
Go to most recent revision | Compare with Previous | Blame | View Log
/*! Java Driver API for the ZTEX Firmware Kit Copyright (C) 2009-2010 ZTEX e.K. http://www.ztex.de This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see http://www.gnu.org/licenses/. !*/ /* Scan bus for devices with ZTEX descriptor 1 and/or Cypress EZ-USB FX2 devices */ package ztex; import java.io.*; import java.util.*; import ch.ntb.usb.*; /** * A class used for finding the EZ-USB devices on the USB. * The devices found are stored as a list of {@link ZtexDevice1} instances. * @see ZtexDevice1 */ public class ZtexScanBus1 { private Vector<ZtexDevice1> devices = new Vector<ZtexDevice1>(); // ******* ZtexScanBus1 ******************************************************** /** * Scans the USB for suitable devices and constructs a list of them. * Four kinds of search filters can be applied * <ol> * <li> usbVendorId and usbProductId can be used to search for devices with a given vendor and product ID. These devices must provide a ZTEX descriptor 1.</li> * <li> If a certain interface version is required, it can be specified using interfaceVersion. </li> * <li> Incompatible devices can be excluded by the specification of the ZTEX product ID's, see {@link ZtexDevice1#compatible(int,int,int,int)}. </li> * <li> If scanCypress is true, all devices (even unconfigured ones) with Cypress EZ-USB vendor and product ID's are considered. </li> * </ol> * @param usbVendorId USB vendor ID of the device to be searched for * @param usbProductId USB product ID of the device to be searched for * @param scanCypress Include devices with Cypress EZ-USB vendor and product ID's (even unconfigured ones) * @param quiet if true, don't print any warnings * @param interfaceVersion The required interface version (<0 if no interface version is required) * @param productId0 Byte 0 of a given ZTEX product ID (≤0 if not to be considered) * @param productId1 Byte 1 of a given ZTEX product ID (≤0 if not to be considered) * @param productId2 Byte 2 of a given ZTEX product ID (≤0 if not to be considered) * @param productId3 Byte 3 of a given ZTEX product ID (≤0 if not to be considered) */ public ZtexScanBus1 (int usbVendorId, int usbProductId, boolean scanCypress, boolean quiet, int interfaceVersion, int productId0, int productId1, int productId2, int productId3 ) { LibusbJava.usb_find_busses(); LibusbJava.usb_find_devices(); Usb_Bus bus = LibusbJava.usb_get_busses(); while ( bus != null ) { Usb_Device dev = bus.getDevices(); while ( dev != null ) { try { try { ZtexDevice1 zdev = new ZtexDevice1( dev, usbVendorId, usbProductId ); if ( ( scanCypress && zdev.isCypress() ) || ( zdev.valid() && (interfaceVersion<0 || zdev.interfaceVersion()==interfaceVersion) && zdev.compatible(productId0, productId1, productId2, productId3) ) ) { devices.add( zdev ); } } catch ( InvalidFirmwareException e ) { if ( scanCypress && usbVendorId == ZtexDevice1.cypressVendorId && usbProductId == ZtexDevice1.cypressProductId ) { try { ZtexDevice1 zdev = new ZtexDevice1( dev, -1, -1 ); if ( zdev.isCypress() ) devices.add( zdev ); } catch ( InvalidFirmwareException e2 ) { if ( ! quiet ) System.err.println( e2.getLocalizedMessage() ); // should never occur } } else { if ( ! quiet ) System.err.println( e.getLocalizedMessage() ); } } } catch ( UsbException e ) { if ( ! quiet ) System.err.println( e.getLocalizedMessage() ); } dev = dev.getNext(); } bus = bus.getNext(); } } /** * Scans the USB for suitable devices and constructs a list of them. * Three kinds of search filters can be applied * <ol> * <li> usbVendorId and usbProductId can be used to search for devices with a given vendor and product ID. These devices must provide a ZTEX descriptor 1.</li> * <li> If a certain interface version is required, it can be specified using interfaceVersion. </li> * <li> If scanCypress is true, all devices (even unconfigured ones) with Cypress EZ-USB vendor and product ID's are considered. </li> * </ol> * @param usbVendorId USB vendor ID of the device to be searched for * @param usbProductId USB product ID of the device to be searched for * @param scanCypress Include devices with Cypress EZ-USB vendor and product ID's (even unconfigured ones) * @param quiet if true, don't print any warnings * @param interfaceVersion The required interface version (<0 if no interface version is required) */ public ZtexScanBus1 (int usbVendorId, int usbProductId, boolean scanCypress, boolean quiet, int interfaceVersion ) { this(usbVendorId, usbProductId, scanCypress, quiet, interfaceVersion, -1,-1,-1,-1 ); } /** * Scans the USB for suitable devices and constructs a list of them. * Two kinds of search filters can be applied * <ol> * <li> usbVendorId and usbProductId can be used to search for devices with a given vendor and product ID. These devices must provide a ZTEX descriptor 1.</li> * <li> If scanCypress is true, all devices (even unconfigured ones) with Cypress EZ-USB vendor and product ID's are considered. </li> * </ol> * @param usbVendorId USB vendor ID of the device to be searched for * @param usbProductId USB product ID of the device to be searched for * @param scanCypress Include devices with Cypress EZ-USB vendor and product ID's (even unconfigured ones) * @param quiet if true, don't print any warnings */ public ZtexScanBus1 (int usbVendorId, int usbProductId, boolean scanCypress, boolean quiet ) { this(usbVendorId, usbProductId, scanCypress, quiet, -1, -1,-1,-1,-1 ); } // ******* printBus ************************************************************ /** * Prints out a list of devices found. * @param out Where the output is to be printed to. */ public void printBus( PrintStream out ) { for (int i=0; i<devices.size(); i++ ) { out.println( i + ": " + devices.elementAt(i).toString() ); } } // ******* numberOfDevices ***************************************************** /** * Returns the number of devices found. * @return the number of devices found. */ public final int numberOfDevices () { return devices.size(); } // ******* device ************************************************************** /** * Returns a device from the list of devices. * @param i The device index. * @return a device from the list of devices. * @throws IndexOutOfBoundsException if i<0 or i≥{@link #numberOfDevices()} */ public final ZtexDevice1 device (int i) throws IndexOutOfBoundsException { if ( i<0 || i>=devices.size() ) throw new IndexOutOfBoundsException( "Device number out of range. Valid numbers are 0.." + (devices.size()-1) ); return devices.elementAt(i); } }
Go to most recent revision | Compare with Previous | Blame | View Log