aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB/Core/Device.h
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2011-02-20 13:08:29 +0000
committerDean Camera <dean@fourwalledcubicle.com>2011-02-20 13:08:29 +0000
commit5e7319058268e021ae39ca4b9fcabaec0060117b (patch)
treef40fe1525f2053746540498041f1e8a819277bd7 /LUFA/Drivers/USB/Core/Device.h
parent1daa5e16f9a395fb2943906a715adb35b8106988 (diff)
downloadlufa-5e7319058268e021ae39ca4b9fcabaec0060117b.tar.gz
lufa-5e7319058268e021ae39ca4b9fcabaec0060117b.tar.bz2
lufa-5e7319058268e021ae39ca4b9fcabaec0060117b.zip
Start update of documentation to support possible multiple architectures in the future - alter \file documentation to automatically copy in the module documentation where possible.
Diffstat (limited to 'LUFA/Drivers/USB/Core/Device.h')
-rw-r--r--LUFA/Drivers/USB/Core/Device.h42
1 files changed, 38 insertions, 4 deletions
diff --git a/LUFA/Drivers/USB/Core/Device.h b/LUFA/Drivers/USB/Core/Device.h
index 8c85451ac..6fa88d3a3 100644
--- a/LUFA/Drivers/USB/Core/Device.h
+++ b/LUFA/Drivers/USB/Core/Device.h
@@ -29,10 +29,8 @@
*/
/** \file
- * \brief Common USB device mode definitions.
- *
- * This file contains common structures, function prototypes and macros related to USB device mode for all
- * architectures.
+ * \brief Common USB Device definitions for all architectures.
+ * \copydetails Group_Device
*
* \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.
@@ -40,6 +38,7 @@
/** \ingroup Group_USB
* \defgroup Group_Device Device Management
+ * \brief Common USB Device definitions for all architectures.
*
* USB Device mode related definitions common to all architectures. This module contains definitions which
* are used when the USB controller is initialized in device mode.
@@ -65,6 +64,41 @@
#error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.
#endif
+ /* Public Interface - May be used in end-application: */
+ /* Function Prototypes: */
+ /** Function to retrieve a given descriptor's size and memory location from the given descriptor type value,
+ * index and language ID. This function MUST be overridden in the user application (added with full, identical
+ * prototype and name so that the library can call it to retrieve descriptor data.
+ *
+ * \param[in] wValue The type of the descriptor to retrieve in the upper byte, and the index in the
+ * lower byte (when more than one descriptor of the given type exists, such as the
+ * case of string descriptors). The type may be one of the standard types defined
+ * in the DescriptorTypes_t enum, or may be a class-specific descriptor type value.
+ * \param[in] wIndex The language ID of the string to return if the \c wValue type indicates
+ * \ref DTYPE_String, otherwise zero for standard descriptors, or as defined in a
+ * class-specific standards.
+ * \param[out] DescriptorAddress Pointer to the descriptor in memory. This should be set by the routine to
+ * the address of the descriptor.
+ * \param[out] MemoryAddressSpace A value from the \ref USB_DescriptorMemorySpaces_t enum to indicate the memory
+ * space in which the descriptor is stored. This parameter does not exist when one
+ * of the \c USE_*_DESCRIPTORS compile time options is used.
+ *
+ * \note By default, the library expects all descriptors to be located in flash memory via the \c PROGMEM attribute.
+ * If descriptors should be located in RAM or EEPROM instead (to speed up access in the case of RAM, or to
+ * allow the descriptors to be changed dynamically at runtime) either the \c USE_RAM_DESCRIPTORS or the
+ * \c USE_EEPROM_DESCRIPTORS tokens may be defined in the project makefile and passed to the compiler by the -D
+ * switch.
+ *
+ * \return Size in bytes of the descriptor if it exists, zero or \ref NO_DESCRIPTOR otherwise.
+ */
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
+ const uint8_t wIndex,
+ const void** const DescriptorAddress
+ #if !defined(USE_FLASH_DESCRIPTORS) && !defined(USE_EEPROM_DESCRIPTORS) && !defined(USE_RAM_DESCRIPTORS)
+ , uint8_t* MemoryAddressSpace
+ #endif
+ ) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
+
#endif
/** @} */