summaryrefslogtreecommitdiff
path: root/usbdrv/usbconfig_.h
diff options
context:
space:
mode:
Diffstat (limited to 'usbdrv/usbconfig_.h')
-rw-r--r--usbdrv/usbconfig_.h280
1 files changed, 280 insertions, 0 deletions
diff --git a/usbdrv/usbconfig_.h b/usbdrv/usbconfig_.h
new file mode 100644
index 0000000..a4288ce
--- /dev/null
+++ b/usbdrv/usbconfig_.h
@@ -0,0 +1,280 @@
+/* Name: usbconfig.h
+ * Project: AVR USB driver
+ * Author: Christian Starkjohann
+ * Creation Date: 2005-04-01
+ * Tabsize: 4
+ * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
+ * License: Proprietary, free under certain conditions. See Documentation.
+ * This Revision: $Id: usbconfig-prototype.h 206 2006-06-23 19:02:30Z cs $
+ */
+
+#ifndef __usbconfig_h_included__
+#define __usbconfig_h_included__
+
+/*
+General Description:
+This file is an example configuration (with inline documentation) for the USB
+driver. It configures AVR-USB for an ATMega8 with USB D+ connected to Port D
+bit 2 (which is also hardware interrupt 0) and USB D- to Port D bit 0. You may
+wire the lines to any other port, as long as D- is on bit 0 and D+ is also
+wired to INT0.
+To create your own usbconfig.h file, copy this file to the directory
+containing "usbdrv" (that is your project firmware source directory) and
+rename it to "usbconfig.h". Then edit it accordingly.
+*/
+
+/* ---------------------------- Hardware Config ---------------------------- */
+
+#if defined(CCCB_COMPATIBLE)
+
+ #define USB_CFG_IOPORTNAME D
+ #define USB_CFG_DMINUS_BIT 1
+ #define USB_CFG_DPLUS_BIT 2
+
+#else
+
+ #define USB_CFG_IOPORTNAME B
+ #define USB_CFG_DMINUS_BIT 0
+ #define USB_CFG_DPLUS_BIT 1
+
+#endif
+
+/* ----------------------- Optional Hardware Config ------------------------ */
+
+/* #define USB_CFG_PULLUP_IOPORTNAME D */
+/* If you connect the 1.5k pullup resistor from D- to a port pin instead of
+ * V+, you can connect and disconnect the device from firmware by calling
+ * the macros usbDeviceConnect() and usbDeviceDisconnect() (see usbdrv.h).
+ * This constant defines the port on which the pullup resistor is connected.
+ */
+/* #define USB_CFG_PULLUP_BIT 4 */
+/* This constant defines the bit number in USB_CFG_PULLUP_IOPORT (defined
+ * above) where the 1.5k pullup resistor is connected. See description
+ * above for details.
+ */
+/* #define USB_BUFFER_SECTION ".bss" */
+/* The USB receive buffer (variable "usbRxBuf") with a length of 22 bytes
+ * MUST NOT cross a 256 byte boundary. We have introduced this configuration
+ * option to allow you to change the data segment where this buffer is
+ * allocated. If you have problems with the default segment (start of .bss),
+ * you may change this setting. See the comment in usbdrv.h for details.
+ * On IAR C, the default is the TINY_Z segment (first 256 bytes). You must
+ * change this default for devices which don't have RAM below 0x100.
+ */
+
+/* --------------------------- Functional Range ---------------------------- */
+
+#ifndef BOOTLOADER
+ #ifndef USB_HID
+ #define USB_CFG_HAVE_INTRIN_ENDPOINT 1
+/* Define this to 1 if you want to compile a version with two endpoints: The
+ * default control endpoint 0 and an interrupt-in endpoint 1.
+ */
+ #define USB_CFG_HAVE_INTRIN_ENDPOINT3 1
+/* Define this and USB_CFG_HAVE_INTRIN_ENDPOINT to 1 if you want to compile a
+ * version with three endpoints: The default control endpoint 0, an
+ * interrupt-in endpoint 1 and an interrupt-in endpoint 3.
+ */
+ #else
+ #define USB_CFG_HAVE_INTRIN_ENDPOINT 0
+ #define USB_CFG_HAVE_INTRIN_ENDPOINT3 0
+ #endif
+#else
+ #define USB_CFG_HAVE_INTRIN_ENDPOINT 0
+ #define USB_CFG_HAVE_INTRIN_ENDPOINT3 0
+#endif
+#define USB_CFG_IMPLEMENT_HALT 0
+/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature
+ * for endpoint 1 (interrupt endpoint). Although you may not need this feature,
+ * it is required by the standard. We have made it a config option because it
+ * bloats the code considerably.
+ */
+#define USB_CFG_INTR_POLL_INTERVAL 10
+/* If you compile a version with endpoint 1 (interrupt-in), this is the poll
+ * interval. The value is in milliseconds and must not be less than 10 ms for
+ * low speed devices.
+ */
+#define USB_CFG_IS_SELF_POWERED 0
+/* Define this to 1 if the device has its own power supply. Set it to 0 if the
+ * device is powered from the USB bus.
+ */
+#define USB_CFG_MAX_BUS_POWER 120
+/* Set this variable to the maximum USB bus power consumption of your device.
+ * The value is in milliamperes. [It will be divided by two since USB
+ * communicates power requirements in units of 2 mA.]
+ */
+#define USB_CFG_SAMPLE_EXACT 1
+/* This variable affects Sampling Jitter for USB receiving. When it is 0, the
+ * driver guarantees a sampling window of 1/2 bit. The USB spec requires
+ * that the receiver has at most 1/4 bit sampling window. The 1/2 bit window
+ * should still work reliably enough because we work at low speed. If you want
+ * to meet the spec, set this value to 1. This will unroll a loop which
+ * results in bigger code size.
+ * If you have problems with long cables, try setting this value to 1.
+ */
+#define USB_CFG_IMPLEMENT_FN_WRITE 1
+/* Set this to 1 if you want usbFunctionWrite() to be called for control-out
+ * transfers. Set it to 0 if you don't need it and want to save a couple of
+ * bytes.
+ */
+#ifndef BOOTLOADER
+ #define USB_CFG_IMPLEMENT_FN_READ 1
+/* Set this to 1 if you need to send control replies which are generated
+ * "on the fly" when usbFunctionRead() is called. If you only want to send
+ * data from a static buffer, set it to 0 and return the data from
+ * usbFunctionSetup(). This saves a couple of bytes.
+ */
+
+ #ifndef USB_HID
+ #define USB_CFG_IMPLEMENT_FN_WRITEOUT 1
+ #else
+ #define USB_CFG_IMPLEMENT_FN_WRITEOUT 0
+ #endif
+/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoint 1.
+ * You must implement the function usbFunctionWriteOut() which receives all
+ * interrupt/bulk data sent to endpoint 1.
+ */
+ #define USB_CFG_HAVE_FLOWCONTROL 1
+/* Define this to 1 if you want flowcontrol over USB data. See the definition
+ * of the macros usbDisableAllRequests() and usbEnableAllRequests() in
+ * usbdrv.h.
+ */
+#else
+ #define USB_CFG_IMPLEMENT_FN_READ 0
+#endif
+/* Define this to the size of your configuration descriptor if you provide
+ * your own configuration descriptor at the global program memory address
+ * 'usbDescrConfig'.
+ */
+
+/* -------------------------- Device Description --------------------------- */
+
+#ifndef BOOTLOADER
+ #ifndef ISAVRISPMKII
+ #define USB_CFG_VENDOR_ID 0xc0, 0x16
+/* USB vendor ID for the device, low byte first. If you have registered your
+ * own Vendor ID, define it here. Otherwise you use obdev's free shared
+ * VID/PID pair. Be sure to read USBID-License.txt for rules!
+ * This template uses obdev's shared VID/PID pair for HIDs: 0x16c0/0x5df.
+ * Use this VID/PID pair ONLY if you understand the implications!
+ */
+ #ifndef USB_HID
+ #define USB_CFG_DEVICE_ID 0xe1, 0x05
+ #else
+ #define USB_CFG_DEVICE_ID 0xdc, 0x05
+ #endif
+/* This is the ID of the product, low byte first. It is interpreted in the
+ * scope of the vendor ID. If you have registered your own VID with usb.org
+ * or if you have licensed a PID from somebody else, define it here. Otherwise
+ * you use obdev's free shared VID/PID pair. Be sure to read the rules in
+ * USBID-License.txt!
+ * This template uses obdev's shared VID/PID pair for HIDs: 0x16c0/0x5df.
+ * Use this VID/PID pair ONLY if you understand the implications!
+ */
+ #else
+ #define USB_CFG_VENDOR_ID 0x03, 0xeb
+ #define USB_CFG_DEVICE_ID 0x21, 0x04
+ #endif
+#endif
+#ifndef ISAVRISPMKII
+ #define USB_CFG_DEVICE_VERSION 0x00, 0x01
+#else
+ #define USB_CFG_DEVICE_VERSION 0x02, 0x00
+#endif
+/* Version number of the device: Minor number first, then major number.
+ */
+#ifndef ISUSBASP
+ #define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'd', 'f', 'i', 's', 'c', 'h', '.', 'o', 'r', 'g'
+ #define USB_CFG_VENDOR_NAME_LEN 13
+ #define USB_CFG_DEVICE_NAME 's', 'c', 'h', 'e', 'i', 'b', 'e'
+ #define USB_CFG_DEVICE_NAME_LEN 7
+#else
+ #define USB_CFG_VENDOR_NAME 'w', 'w', 'w', '.', 'f', 'i', 's', 'c', 'h', 'l', '.', 'd', 'e'
+ #define USB_CFG_VENDOR_NAME_LEN 13
+ #define USB_CFG_DEVICE_NAME 'U', 'S', 'B', 'a', 's', 'p'
+ #define USB_CFG_DEVICE_NAME_LEN 6
+#endif
+
+/* Same as above for the device name. If you don't want a device name, undefine
+ * the macros. See the file USBID-License.txt before you assign a name if you
+ * use a shared VID/PID.
+ */
+#define USB_CFG_SERIAL_NUMBER_LENGTH 0
+/* Set this define to the number of charcters in the serial number if your
+ * device should have a serial number to uniquely identify each hardware
+ * instance. You must supply the serial number in a string descriptor with the
+ * name "usbCfgSerialNumberStringDescriptor", e.g.:
+ * #define USB_CFG_SERIAL_NUMBER_LENGTH 5
+ * int usbCfgSerialNumberStringDescriptor[] PROGMEM = {
+ * USB_STRING_DESCRIPTOR_HEADER(USB_CFG_SERIAL_NUMBER_LENGTH),
+ * '1', '2', '3', '4', '5'
+ * };
+ * See usbdrv.h for more information about the USB_STRING_DESCRIPTOR_HEADER()
+ * macro or usbdrv.c for example string descriptors.
+ * You may want to put "usbCfgSerialNumberStringDescriptor" at a constant
+ * flash memory address (with magic linker commands) so that you don't need
+ * to recompile if you change it.
+ */
+#if defined(BOOTLOADER) || defined(USB_HID)
+ #define USB_CFG_DEVICE_CLASS 0xff
+ #define USB_CFG_DEVICE_SUBCLASS 0
+
+ #define USB_CFG_INTERFACE_CLASS 0
+ #define USB_CFG_INTERFACE_SUBCLASS 0
+ #define USB_CFG_INTERFACE_PROTOCOL 0
+#else
+ #define USB_CFG_DEVICE_CLASS 2
+ #define USB_CFG_DEVICE_SUBCLASS 0
+/* See USB specification if you want to conform to an existing device class.
+ */
+ #ifndef ISAVRISPMKII
+ #define USB_CFG_INTERFACE_CLASS 0x02 /* CDC class */
+ #define USB_CFG_INTERFACE_SUBCLASS 2 /* Abstract (Modem) */
+ #define USB_CFG_INTERFACE_PROTOCOL 1 /* AT-Commands */
+ #else
+ #define USB_CFG_INTERFACE_CLASS 0xff /* Vendor specific */
+ #define USB_CFG_INTERFACE_SUBCLASS 0 /* none */
+ #define USB_CFG_INTERFACE_PROTOCOL 0 /* none */
+ #endif
+#endif
+#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0 /* total length of report descriptor */
+/* Define this to the length of the HID report descriptor, if you implement
+ * an HID device. Otherwise don't define it or define it to 0.
+ * Since this template defines a HID device, it must also specify a HID
+ * report descriptor length. You must add a PROGMEM character array named
+ * "usbHidReportDescriptor" to your code which contains the report descriptor.
+ * Don't forget to keep the array and this define in sync!
+ */
+
+/* ----------------------- Optional MCU Description ------------------------ */
+
+/* The following configurations have working defaults in usbdrv.h. You
+ * usually don't need to set them explicitly. Only if you want to run
+ * the driver on a device which is not yet supported or with a compiler
+ * which is not fully supported (such as IAR C) or if you use a differnt
+ * interrupt than INT0, you may have to define some of these.
+ */
+/* #define USB_INTR_CFG MCUCR */
+/* #define USB_INTR_CFG_SET ((1 << ISC00) | (1 << ISC01)) */
+/* #define USB_INTR_CFG_CLR 0 */
+/* #define USB_INTR_ENABLE GIMSK */
+/* #define USB_INTR_ENABLE_BIT INT0 */
+/* #define USB_INTR_PENDING GIFR */
+/* #define USB_INTR_PENDING_BIT INTF0 */
+
+#ifndef BOOTLOADER
+ #ifndef USB_HID
+ #define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
+ #define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
+ #define USB_CFG_DESCR_PROPS_STRINGS 0
+ #define USB_CFG_DESCR_PROPS_STRING_0 0
+ #define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
+ #define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
+ #define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+ #define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
+ #define USB_CFG_DESCR_PROPS_HID_REPORT 0
+ #define USB_CFG_DESCR_PROPS_UNKNOWN 0
+ #endif
+#endif
+
+#endif /* __usbconfig_h_included__ */