Add new ARCH option to the makefiles to (eventually) specify the target device archit...
[pub/USBasp.git] / LUFA / Drivers / USB / HighLevel / StdDescriptors.h
index 2a87619..7b8f4d7 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
+     Copyright (C) Dean Camera, 2011.
 
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -38,7 +38,7 @@
  */
 
 /** \ingroup Group_USB
- *  @defgroup Group_Descriptors USB Descriptors
+ *  \defgroup Group_Descriptors USB Descriptors
  *
  *  Standard USB device descriptor defines and retrieval routines, for USB devices. This module contains
  *  structures and macros for the easy creation of standard USB descriptors in USB device projects.
                         */
                        #define LANGUAGE_ID_ENG                   0x0409
 
+                       /** \name Endpoint Address Direction Masks */
+                       //@{
                        /** Can be masked with an endpoint address for a \ref USB_Descriptor_Endpoint_t endpoint descriptor's
                         *  EndpointAddress value to indicate to the host that the endpoint is of the IN direction (i.e, from
                         *  device to host).
                         *  host to device).
                         */
                        #define ENDPOINT_DESCRIPTOR_DIR_OUT       0x00
+                       //@}
 
+                       /** \name USB Configuration Descriptor Attribute Masks */
+                       //@{
                        /** Can be masked with other configuration descriptor attributes for a \ref USB_Descriptor_Configuration_Header_t
                         *  descriptor's ConfigAttributes value to indicate that the specified configuration can draw its power
                         *  from the host's VBUS line.
                         *  request.
                         */
                        #define USB_CONFIG_ATTR_REMOTEWAKEUP      0x20
-
+                       //@}
+                       
+                       /** \name Endpoint Descriptor Attribute Masks */
+                       //@{
                        /** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's
                         *  Attributes value to indicate that the specified endpoint is not synchronized.
                         *
                         *  \see The USB specification for more details on the possible Endpoint attributes.
                         */
                        #define ENDPOINT_ATTR_SYNC                (3 << 2)
-
+                       //@}
+                       
+                       /** \name Endpoint Descriptor Usage Masks */
+                       //@{
                        /** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's
                         *  Attributes value to indicate that the specified endpoint is used for data transfers.
                         *
                         *  \see The USB specification for more details on the possible Endpoint usage attributes.
                         */
                        #define ENDPOINT_USAGE_IMPLICIT_FEEDBACK  (2 << 4)
-
+                       //@}
+                       
                /* Enums: */
                        /** Enum for the possible standard descriptor types, as given in each descriptor's header. */
                        enum USB_DescriptorTypes_t
                        {
-                               DTYPE_Device               = 0x01, /**< Indicates that the descriptor is a device descriptor. */
-                               DTYPE_Configuration        = 0x02, /**< Indicates that the descriptor is a configuration descriptor. */
-                               DTYPE_String               = 0x03, /**< Indicates that the descriptor is a string descriptor. */
-                               DTYPE_Interface            = 0x04, /**< Indicates that the descriptor is an interface descriptor. */
-                               DTYPE_Endpoint             = 0x05, /**< Indicates that the descriptor is an endpoint descriptor. */
-                               DTYPE_DeviceQualifier      = 0x06, /**< Indicates that the descriptor is a device qualifier descriptor. */
-                               DTYPE_Other                = 0x07, /**< Indicates that the descriptor is of other type. */
-                               DTYPE_InterfacePower       = 0x08, /**< Indicates that the descriptor is an interface power descriptor. */
-                               DTYPE_InterfaceAssociation = 0x0B, /**< Indicates that the descriptor is an interface association descriptor. */
-                               DTYPE_CSInterface          = 0x24, /**< Indicates that the descriptor is a class specific interface descriptor. */
-                               DTYPE_CSEndpoint           = 0x25, /**< Indicates that the descriptor is a class specific endpoint descriptor. */
+                               DTYPE_Device                    = 0x01, /**< Indicates that the descriptor is a device descriptor. */
+                               DTYPE_Configuration             = 0x02, /**< Indicates that the descriptor is a configuration descriptor. */
+                               DTYPE_String                    = 0x03, /**< Indicates that the descriptor is a string descriptor. */
+                               DTYPE_Interface                 = 0x04, /**< Indicates that the descriptor is an interface descriptor. */
+                               DTYPE_Endpoint                  = 0x05, /**< Indicates that the descriptor is an endpoint descriptor. */
+                               DTYPE_DeviceQualifier           = 0x06, /**< Indicates that the descriptor is a device qualifier descriptor. */
+                               DTYPE_Other                     = 0x07, /**< Indicates that the descriptor is of other type. */
+                               DTYPE_InterfacePower            = 0x08, /**< Indicates that the descriptor is an interface power descriptor. */
+                               DTYPE_InterfaceAssociation      = 0x0B, /**< Indicates that the descriptor is an interface association descriptor. */
+                               DTYPE_CSInterface               = 0x24, /**< Indicates that the descriptor is a class specific interface descriptor. */
+                               DTYPE_CSEndpoint                = 0x25, /**< Indicates that the descriptor is a class specific endpoint descriptor. */
+                       };
+
+                       /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors. */
+                       enum USB_Descriptor_ClassSubclassProtocol_t
+                       {
+                               USB_CSCP_NoDeviceClass          = 0x00, /**< Descriptor Class value indicating that the device does not belong
+                                                                        *   to a particular class at the device level.
+                                                                        */
+                               USB_CSCP_NoDeviceSubclass       = 0x00, /**< Descriptor Subclass value indicating that the device does not belong
+                                                                        *   to a particular subclass at the device level.
+                                                                        */
+                               USB_CSCP_NoDeviceProtocol       = 0x00, /**< Descriptor Protocol value indicating that the device does not belong
+                                                                        *   to a particular protocol at the device level.
+                                                                        */
+                               USB_CSCP_VendorSpecificClass    = 0xFF, /**< Descriptor Class value indicating that the device/interface belongs
+                                                                        *   to a vendor specific class.
+                                                                        */
+                               USB_CSCP_VendorSpecificSubclass = 0xFF, /**< Descriptor Subclass value indicating that the device/interface belongs
+                                                                        *   to a vendor specific subclass.
+                                                                        */
+                               USB_CSCP_VendorSpecificProtocol = 0xFF, /**< Descriptor Protocol value indicating that the device/interface belongs
+                                                                        *   to a vendor specific protocol.
+                                                                        */
+                               USB_CSCP_IADDeviceClass         = 0xEF, /**< Descriptor Class value indicating that the device belongs to the
+                                                                        *   Interface Association Descriptor class.
+                                                                        */
+                               USB_CSCP_IADDeviceSubclass      = 0x02, /**< Descriptor Subclass value indicating that the device belongs to the
+                                                                        *   Interface Association Descriptor subclass.
+                                                                        */
+                               USB_CSCP_IADDeviceProtocol      = 0x01, /**< Descriptor Protocol value indicating that the device belongs to the
+                                                                        *   Interface Association Descriptor protocol.
+                                                                        */
                        };
 
                /* Type Defines: */