USBasp 2006.09.16.
[pub/USBasp.git] / firmware / usbconfig.h
index 70ee324..8a1ebd0 100644 (file)
@@ -9,52 +9,74 @@
  */
 
 #ifndef __usbconfig_h_included__
-#define        __usbconfig_h_included__
+#define __usbconfig_h_included__
 
 /*
 General Description:
 This file contains parts of the USB driver which can be configured and can or
 must be adapted to your hardware.
+
+Please note that the usbdrv contains a usbconfig-prototype.h file now. We
+recommend that you use that file as a template because it will always list
+the newest features and options.
 */
 
 /* ---------------------------- Hardware Config ---------------------------- */
 
-#define        USB_CFG_IOPORT                  PORTB
+#define USB_CFG_IOPORTNAME      B
 /* This is the port where the USB bus is connected. When you configure it to
- * "PORTB", the registers PORTB, PINB (=PORTB+2) and DDRB (=PORTB+1) will be
+ * "PORTB", the registers PORTB, PINB (=PORTB-2) and DDRB (=PORTB-1) will be
  * used.
  */
-#define        USB_CFG_DMINUS_BIT              0
+#define USB_CFG_DMINUS_BIT      0
 /* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
- * This MUST be bit 0. All other values will result in a compile error!
+ * This MUST be bit 0 or 7. All other values will result in a compile error!
  */
-#define        USB_CFG_DPLUS_BIT               1
+#define USB_CFG_DPLUS_BIT       1
 /* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
  * This may be any bit in the port. Please note that D+ must also be connected
  * to interrupt pin INT0!
  */
 
+/* #define USB_CFG_PULLUP_IOPORTNAME   B */
+/* This is the port where the USB D- pullup resistor is connected. When you
+ * configure it to "PORTB", the registers PORTB and DDRB (=PORTB-1) will be
+ * used. If this constant is defined, the macros usbDeviceConnect() and
+ * usbDeviceDisconnect will be available.
+ */
+/* #define USB_CFG_PULLUP_BIT          2 */
+/* This is the bit number in USB_CFG_PULLUP_IOPORT where the USB D- 1.5 kOhm
+ * pullup resistor is connected instead of VBUS. This may be any bit in
+ * the port.
+ */
+
 /* --------------------------- Functional Range ---------------------------- */
 
-#define        USB_CFG_HAVE_INTRIN_ENDPOINT    0
+#define USB_CFG_HAVE_INTRIN_ENDPOINT    0
 /* 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_INTR_POLL_INTERVAL              10
+#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 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                   50
+#define USB_CFG_MAX_BUS_POWER           50
 /* 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
+#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
@@ -63,12 +85,12 @@ must be adapted to your hardware.
  * 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
+#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.
  */
-#define USB_CFG_IMPLEMENT_FN_READ              1
+#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
@@ -77,41 +99,65 @@ must be adapted to your hardware.
 
 /* -------------------------- Device Description --------------------------- */
 
-#define        USB_CFG_VENDOR_ID               0xeb, 0x03
-/* USB vendor ID for the device, low byte first. 0xeb, 0x03 is Atmel's vendor
- * ID. Don't use it for hardware you sell or publish!
- */
-#define        USB_CFG_DEVICE_ID               0xb4, 0xc7
-/* This is the ID of the device, low byte first. It is interpreted in the
- * scope of the vendor ID. The only requirement is that no two devices may
- * share the same product and vendor IDs. Not even if the devices are never
- * on the same bus together!
- */
-#define        USB_CFG_DEVICE_VERSION  0x00, 0x01
+#define  USB_CFG_VENDOR_ID  0xc0, 0x16  /* 5824 in dec, stands for VOTI */
+/* 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!
+ */
+#define USB_CFG_DEVICE_ID   0xdc, 0x05  /* 1500 in dec, obdev's free PID */
+/* 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!
+ */
+#define USB_CFG_DEVICE_VERSION  0x01, 0x01
 /* Version number of the device: Minor number first, then major number.
  */
-#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_VENDOR_NAME     'w', 'w', 'w', '.', 'f', 'i', 's', 'c', 'h', 'l', '.', 'd', 'e'
+#define USB_CFG_VENDOR_NAME_LEN 13
 /* These two values define the vendor name returned by the USB device. The name
  * must be given as a list of characters under single quotes. The characters
  * are interpreted as Unicode (UTF-16) entities.
  * If you don't want a vendor name string, undefine these macros.
+ * ALWAYS define a vendor name containing your Internet domain name if you use
+ * obdev's free shared VID/PID pair. See the file USBID-License.txt for
+ * details.
  */
 #define        USB_CFG_DEVICE_NAME             'U', 'S', 'B', 'a', 's', 'p'
 #define        USB_CFG_DEVICE_NAME_LEN 6
 /* Same as above for the device name. If you don't want a device name, undefine
- * the macros.
- */
-#define        USB_CFG_DEVICE_CLASS    0xff
-#define        USB_CFG_DEVICE_SUBCLASS 0
+ * the macros. See the file USBID-License.txt before you assign a name.
+ */
+#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.
+ */
+#define USB_CFG_DEVICE_CLASS    0xff
+#define USB_CFG_DEVICE_SUBCLASS 0
 /* See USB specification if you want to conform to an existing device class.
  */
-#define        USB_CFG_INTERFACE_CLASS         0
-#define        USB_CFG_INTERFACE_SUBCLASS      0
-#define        USB_CFG_INTERFACE_PROTOCOL      0
+#define USB_CFG_INTERFACE_CLASS     0
+#define USB_CFG_INTERFACE_SUBCLASS  0
+#define USB_CFG_INTERFACE_PROTOCOL  0
 /* See USB specification if you want to conform to an existing device class or
  * protocol.
  */
-
+#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.
+ */
 
 #endif /* __usbconfig_h_included__ */