X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/1daa5e16f9a395fb2943906a715adb35b8106988..8b13f7f89a7648f5578d14b518b9c8a7fcda8144:/LUFA/Drivers/USB/Core/USBMode.h diff --git a/LUFA/Drivers/USB/Core/USBMode.h b/LUFA/Drivers/USB/Core/USBMode.h index 58f9927dc..4acfda247 100644 --- a/LUFA/Drivers/USB/Core/USBMode.h +++ b/LUFA/Drivers/USB/Core/USBMode.h @@ -29,11 +29,8 @@ */ /** \file - * \brief USB mode and capability macros. - * - * This file defines macros indicating the type of USB controller the library is being compiled for, and its - * capabilities. These macros may then be referenced in the user application to selectively enable or disable - * code sections depending on if they are defined or not. + * \brief USB mode and feature support definitions. + * \copydetails Group_USBMode * * \note This file should not be included directly. It is automatically included as needed by the USB driver * dispatch header located in LUFA/Drivers/USB/USB.h. @@ -41,11 +38,15 @@ /** \ingroup Group_USB * \defgroup Group_USBMode USB Mode Tokens + * \brief USB mode and feature support definitions. + * + * This file defines macros indicating the type of USB controller the library is being compiled for, and its + * capabilities. These macros may then be referenced in the user application to selectively enable or disable + * code sections depending on if they are defined or not. * - * After the inclusion of the master USB driver header, one or more of the following - * tokens may be defined, to allow the user code to conditionally enable or disable - * code based on the USB controller family and allowable USB modes. These tokens may - * be tested against to eliminate code relating to a USB mode which is not enabled for + * After the inclusion of the master USB driver header, one or more of the following tokens may be defined, to + * allow the user code to conditionally enable or disable code based on the USB controller family and allowable + * USB modes. These tokens may be tested against to eliminate code relating to a USB mode which is not enabled for * the given compilation. * * @{ @@ -81,17 +82,22 @@ */ #define USB_SERIES_7_AVR - /** Indicates that the target AVR microcontroller and compilation settings allow for the + /** Indicates that the target AVR microcontroller belongs to the UC3B Series USB controller + * (i.e. AT32UC3B*) when defined. + */ + #define USB_SERIES_UC3B_AVR + + /** Indicates that the target microcontroller and compilation settings allow for the * target to be configured in USB Device mode when defined. */ #define USB_CAN_BE_DEVICE - /** Indicates that the target AVR microcontroller and compilation settings allow for the + /** Indicates that the target microcontroller and compilation settings allow for the * target to be configured in USB Host mode when defined. */ #define USB_CAN_BE_HOST - /** Indicates that the target AVR microcontroller and compilation settings allow for the + /** Indicates that the target microcontroller and compilation settings allow for the * target to be configured in either USB Device or Host mode when defined. */ #define USB_CAN_BE_BOTH @@ -100,37 +106,55 @@ #if (defined(__AVR_AT90USB162__) || defined(__AVR_AT90USB82__) || \ defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega8U2__)) #define USB_SERIES_2_AVR + #define USB_CAN_BE_DEVICE #elif (defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega16U4__)) #define USB_SERIES_4_AVR + #define USB_CAN_BE_DEVICE #elif (defined(__AVR_ATmega32U6__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)) #define USB_SERIES_6_AVR + #define USB_CAN_BE_DEVICE #elif (defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1287__)) #define USB_SERIES_7_AVR + #define USB_CAN_BE_DEVICE + #define USB_CAN_BE_HOST + #elif (defined(__AVR32_UC3B0512__) || defined(__AVR32_UC3B1512__) || \ + defined(__AVR32_UC3B0256__) || defined(__AVR32_UC3B1256__) || \ + defined(__AVR32_UC3B0128__) || defined(__AVR32_UC3B1128__) || \ + defined(__AVR32_UC3B064__) || defined(__AVR32_UC3B164__)) + #define USB_SERIES_UC3B_AVR + #define USB_CAN_BE_DEVICE + #define USB_CAN_BE_HOST + #endif + + #if (defined(USB_CAN_BE_DEVICE) && defined(USB_CAN_BE_HOST)) + #define USB_CAN_BE_BOTH #endif - #if !defined(USB_SERIES_7_AVR) - #if defined(USB_HOST_ONLY) - #error USB_HOST_ONLY is not available for the currently selected USB AVR model. - #endif - - #if !defined(USB_DEVICE_ONLY) - #define USB_DEVICE_ONLY + #if defined(USB_HOST_ONLY) + #if !defined(USB_CAN_BE_HOST) + #error USB_HOST_ONLY is not available for the currently selected microcontroller model. + #else + #undef USB_CAN_BE_DEVICE + #undef USB_CAN_BE_BOTH #endif #endif - #if (!defined(USB_DEVICE_ONLY) && !defined(USB_HOST_ONLY)) - #define USB_CAN_BE_BOTH - #define USB_CAN_BE_HOST - #define USB_CAN_BE_DEVICE - #elif defined(USB_HOST_ONLY) - #define USB_CAN_BE_HOST - #elif defined(USB_DEVICE_ONLY) - #define USB_CAN_BE_DEVICE + #if defined(USB_DEVICE_ONLY) + #if !defined(USB_CAN_BE_DEVICE) + #error USB_DEVICE_ONLY is not available for the currently selected microcontroller model. + #else + #undef USB_CAN_BE_HOST + #undef USB_CAN_BE_BOTH + #endif #endif - + #if (defined(USB_HOST_ONLY) && defined(USB_DEVICE_ONLY)) #error USB_HOST_ONLY and USB_DEVICE_ONLY are mutually exclusive. #endif + + #if (!defined(USB_CAN_BE_DEVICE) && !defined(USB_CAN_BE_HOST)) + #error The currently selected architecture is not supported under the USB component of the library. + #endif #endif #endif