00001 /* Name: usbconfig.h 00002 * Project: AVR USB driver 00003 * Author: Christian Starkjohann 00004 * Creation Date: 2005-04-01 00005 * Tabsize: 4 00006 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH 00007 * License: Proprietary, free under certain conditions. See Documentation. 00008 * This Revision: $Id: usbconfig.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ 00009 */ 00010 00011 #ifndef __usbconfig_h_included__ 00012 #define __usbconfig_h_included__ 00013 00021 /* 00022 General Description: 00023 This file contains parts of the USB driver which can be configured and can or 00024 must be adapted to your hardware. 00025 00026 Please note that the usbdrv contains a usbconfig-prototype.h file now. We 00027 recommend that you use that file as a template because it will always list 00028 the newest features and options. 00029 */ 00030 00031 /* ---------------------------- Hardware Config ---------------------------- */ 00032 00033 #define USB_CFG_IOPORTNAME D 00034 /* This is the port where the USB bus is connected. When you configure it to 00035 * "PORTB", the registers PORTB, PINB (=PORTB-2) and DDRB (=PORTB-1) will be 00036 * used. 00037 */ 00038 #define USB_CFG_DMINUS_BIT 0 00039 /* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. 00040 * This MUST be bit 0 or 7. All other values will result in a compile error! 00041 */ 00042 #define USB_CFG_DPLUS_BIT 2 00043 /* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. 00044 * This may be any bit in the port. Please note that D+ must also be connected 00045 * to interrupt pin INT0! 00046 */ 00047 00048 /* #define USB_CFG_PULLUP_IOPORTNAME B */ 00049 /* This is the port where the USB D- pullup resistor is connected. When you 00050 * configure it to "PORTB", the registers PORTB and DDRB (=PORTB-1) will be 00051 * used. If this constant is defined, the macros usbDeviceConnect() and 00052 * usbDeviceDisconnect will be available. 00053 */ 00054 /* #define USB_CFG_PULLUP_BIT 2 */ 00055 /* This is the bit number in USB_CFG_PULLUP_IOPORT where the USB D- 1.5 kOhm 00056 * pullup resistor is connected instead of VBUS. This may be any bit in 00057 * the port. 00058 */ 00059 00060 /* --------------------------- Functional Range ---------------------------- */ 00061 00062 #define USB_CFG_HAVE_INTRIN_ENDPOINT 0 00063 /* Define this to 1 if you want to compile a version with two endpoints: The 00064 * default control endpoint 0 and an interrupt-in endpoint 1. 00065 */ 00066 #define USB_CFG_IMPLEMENT_HALT 0 00067 /* Define this to 1 if you also want to implement the ENDPOINT_HALT feature 00068 * for endpoint 1 (interrupt endpoint). Although you may not need this feature, 00069 * it is required by the standard. We have made it a config option because it 00070 * bloats the code considerably. 00071 */ 00072 #define USB_CFG_INTR_POLL_INTERVAL 10 00073 /* If you compile a version with endpoint 1 (interrupt-in), this is the poll 00074 * interval. The value is in milliseconds and must not be less than 10 ms for 00075 * low speed devices. 00076 */ 00077 #define USB_CFG_IS_SELF_POWERED 1 00078 /* Define this to 1 if the device has its own power supply. Set it to 0 if the 00079 * device is powered from the USB bus. 00080 */ 00081 #define USB_CFG_MAX_BUS_POWER 20 00082 /* Set this variable to the maximum USB bus power consumption of your device. 00083 * The value is in milliamperes. [It will be divided by two since USB 00084 * communicates power requirements in units of 2 mA.] 00085 */ 00086 #define USB_CFG_SAMPLE_EXACT 0 00087 /* This variable affects Sampling Jitter for USB receiving. When it is 0, the 00088 * driver guarantees a sampling window of 1/2 bit. The USB spec requires 00089 * that the receiver has at most 1/4 bit sampling window. The 1/2 bit window 00090 * should still work reliably enough because we work at low speed. If you want 00091 * to meet the spec, set this value to 1. This will unroll a loop which 00092 * results in bigger code size. 00093 * If you have problems with long cables, try setting this value to 1. 00094 */ 00095 #define USB_CFG_IMPLEMENT_FN_WRITE 0 00096 /* Set this to 1 if you want usbFunctionWrite() to be called for control-out 00097 * transfers. Set it to 0 if you don't need it and want to save a couple of 00098 * bytes. 00099 */ 00100 #define USB_CFG_IMPLEMENT_FN_READ 0 00101 /* Set this to 1 if you need to send control replies which are generated 00102 * "on the fly" when usbFunctionRead() is called. If you only want to send 00103 * data from a static buffer, set it to 0 and return the data from 00104 * usbFunctionSetup(). This saves a couple of bytes. 00105 */ 00106 00107 /* -------------------------- Device Description --------------------------- */ 00108 00109 #define USB_CFG_VENDOR_ID 0xc0, 0x16 /* 5824 in dec, stands for VOTI */ 00110 /* USB vendor ID for the device, low byte first. If you have registered your 00111 * own Vendor ID, define it here. Otherwise you use obdev's free shared 00112 * VID/PID pair. Be sure to read USBID-License.txt for rules! 00113 */ 00114 #define USB_CFG_DEVICE_ID 0xdc, 0x05 /* 1500 in dec, obdev's free PID */ 00115 /* This is the ID of the product, low byte first. It is interpreted in the 00116 * scope of the vendor ID. If you have registered your own VID with usb.org 00117 * or if you have licensed a PID from somebody else, define it here. Otherwise 00118 * you use obdev's free shared VID/PID pair. Be sure to read the rules in 00119 * USBID-License.txt! 00120 */ 00121 #define USB_CFG_DEVICE_VERSION 0x00, 0x01 00122 /* Version number of the device: Minor number first, then major number. 00123 */ 00124 #define USB_CFG_VENDOR_NAME 'w', 'w', 'w', '.', 's', 'c', 'h', 'a', 't', 'e', 'n', 's', 'e', 'i', 't', 'e', '.', 'd', 'e' 00125 #define USB_CFG_VENDOR_NAME_LEN 19 00126 /* These two values define the vendor name returned by the USB device. The name 00127 * must be given as a list of characters under single quotes. The characters 00128 * are interpreted as Unicode (UTF-16) entities. 00129 * If you don't want a vendor name string, undefine these macros. 00130 * ALWAYS define a vendor name containing your Internet domain name if you use 00131 * obdev's free shared VID/PID pair. See the file USBID-License.txt for 00132 * details. 00133 */ 00134 #define USB_CFG_DEVICE_NAME 'U', 'S', 'B', '-', 'S', 'e', 'r', 'v', 'o' 00135 #define USB_CFG_DEVICE_NAME_LEN 9 00136 /* Same as above for the device name. If you don't want a device name, undefine 00137 * the macros. See the file USBID-License.txt before you assign a name. 00138 */ 00139 #define USB_CFG_SERIAL_NUMBER_LENGTH 0 00140 /* Set this define to the number of charcters in the serial number if your 00141 * device should have a serial number to uniquely identify each hardware 00142 * instance. You must supply the serial number in a string descriptor with the 00143 * name "usbCfgSerialNumberStringDescriptor", e.g.: 00144 * #define USB_CFG_SERIAL_NUMBER_LENGTH 5 00145 * int usbCfgSerialNumberStringDescriptor[] PROGMEM = { 00146 * USB_STRING_DESCRIPTOR_HEADER(USB_CFG_SERIAL_NUMBER_LENGTH), 00147 * '1', '2', '3', '4', '5' 00148 * }; 00149 * See usbdrv.h for more information about the USB_STRING_DESCRIPTOR_HEADER() 00150 * macro or usbdrv.c for example string descriptors. 00151 * You may want to put "usbCfgSerialNumberStringDescriptor" at a constant 00152 * flash memory address (with magic linker commands) so that you don't need 00153 * to recompile if you change it. 00154 */ 00155 #define USB_CFG_DEVICE_CLASS 0xff 00156 #define USB_CFG_DEVICE_SUBCLASS 0 00157 /* See USB specification if you want to conform to an existing device class. 00158 */ 00159 #define USB_CFG_INTERFACE_CLASS 0 00160 #define USB_CFG_INTERFACE_SUBCLASS 0 00161 #define USB_CFG_INTERFACE_PROTOCOL 0 00162 /* See USB specification if you want to conform to an existing device class or 00163 * protocol. 00164 */ 00165 #define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0 /* total length of report descriptor */ 00166 /* Define this to the length of the HID report descriptor, if you implement 00167 * an HID device. Otherwise don't define it or define it to 0. 00168 */ 00169 00170 #endif /* __usbconfig_h_included__ */