Added new TOTAL_NUM_CONFIGURATIONS option, removed USE_SINGLE_DEVICE_CONFIGURATION compile time option (but silently convert it to USE_SINGLE_DEVICE_CONFIGURATION internally for compatibility).

Added new USE_FLASH_DESCRIPTORS compile time option. By default, descriptors can now lie in mixed memory spaces (specified by a new parameter to the CALLBACK_USB_GetDescriptor() function) unless one of the USE_*_DESCRIPTORS compile time option is specified.
This commit is contained in:
Dean Camera 2009-07-16 08:15:27 +00:00
parent f85a53a31b
commit 37f8a84f35
42 changed files with 176 additions and 62 deletions

View file

@ -48,16 +48,33 @@
extern "C" {
#endif
/* Public Interface - May be used in end-application: */
/* Public Interface - May be used in end-application: */
/* Macros: */
#if defined(USE_SINGLE_DEVICE_CONFIGURATION)
#define TOTAL_NUM_CONFIGURATIONS 1
#endif
/* Enums: */
#if !defined(USE_FLASH_DESCRIPTORS) && !defined(USE_EEPROM_DESCRIPTORS) && !defined(USE_RAM_DESCRIPTORS)
/** Enum for the possible descriptor memory spaces, for the MemoryAddressSpace of the
* \ref CALLBACK_USB_GetDescriptor() function. This can be used when none of the USE_*_DESCRIPTORS
* compile time options are used, to indicate in which memory space the descriptor is stored.
*
* \ingroup Group_Device
*/
enum USB_DescriptorMemorySpaces_t
{
MEMSPACE_FLASH = 0, /**< Indicates the requested descriptor is located in FLASH memory */
MEMSPACE_EEPROM = 1, /**< Indicates the requested descriptor is located in EEPROM memory */
MEMSPACE_RAM = 2, /**< Indicates the requested descriptor is located in RAM memory */
};
#endif
/* Global Variables: */
/** Indicates the currently set configuration number of the device. USB devices may have several
* different configurations which the host can select between; this indicates the currently selected
* value, or 0 if no configuration has been selected.
*
* If a device has only one single configuration, the token USE_SINGLE_DEVICE_CONFIGURATION may be
* defined in the project makefile and passed to the compiler using the -D switch. This optimize for
* a single configuration, saving a small amount of space in the resulting compiled binary.
*
* \note This variable should be treated as read-only in the user application, and never manually
* changed in value.
*
@ -87,6 +104,12 @@
#if !defined(__DOXYGEN__)
#if defined(USE_RAM_DESCRIPTORS) && defined(USE_EEPROM_DESCRIPTORS)
#error USE_RAM_DESCRIPTORS and USE_EEPROM_DESCRIPTORS are mutually exclusive.
#elif defined(USE_RAM_DESCRIPTORS) && defined(USE_FLASH_DESCRIPTORS)
#error USE_RAM_DESCRIPTORS and USE_FLASH_DESCRIPTORS are mutually exclusive.
#elif defined(USE_FLASH_DESCRIPTORS) && defined(USE_EEPROM_DESCRIPTORS)
#error USE_FLASH_DESCRIPTORS and USE_EEPROM_DESCRIPTORS are mutually exclusive.
#elif defined(USE_FLASH_DESCRIPTORS) && defined(USE_EEPROM_DESCRIPTORS) && defined(USE_RAM_DESCRIPTORS)
#error Only one of the USE_*_DESCRIPTORS modes should be selected.
#endif
/* Function Prototypes: */