- Main Page
- Modules
- Data Structures
- Files
- Related Pages

# usb_descriptors.c

Go to the documentation of this file.

    00001 /*This file has been prepared for Doxygen automatic documentation generation.*/
    00016
    00017 /* Copyright (c) 2007, Atmel Corporation All rights reserved.
    00018  *
    00019  * Redistribution and use in source and binary forms, with or without
    00020  * modification, are permitted provided that the following conditions are met:
    00021  *
    00022  * 1. Redistributions of source code must retain the above copyright notice,
    00023  * this list of conditions and the following disclaimer.
    00024  *
    00025  * 2. Redistributions in binary form must reproduce the above copyright notice,
    00026  * this list of conditions and the following disclaimer in the documentation
    00027  * and/or other materials provided with the distribution.
    00028  *
    00029  * 3. The name of ATMEL may not be used to endorse or promote products derived
    00030  * from this software without specific prior written permission.
    00031  *
    00032  * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED
    00033  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    00034  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY AND
    00035  * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
    00036  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    00037  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    00038  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    00039  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    00040  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    00041  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    00042  */
    00043
    00044
    00045 //_____ I N C L U D E S ____________________________________________________
    00046
    00047 #include "config.h"
    00048 #include "conf_usb.h"
    00049
    00050 #include "lib_mcu/usb/usb_drv.h"
    00051 #include "usb_descriptors.h"
    00052 #include "modules/usb/device_chap9/usb_standard_request.h"
    00053 #include "usb_specific_request.h"
    00054 #if ((USB_DEVICE_SN_USE==ENABLE) && (USE_DEVICE_SN_UNIQUE==ENABLE))
    00055 #include "lib_mcu/flash/flash_drv.h"
    00056 #endif
    00057
    00058 //_____ M A C R O S ________________________________________________________
    00059
    00060
    00061
    00062
    00063 //_____ D E F I N I T I O N ________________________________________________
    00064
    00065 // usb_user_device_descriptor
    00066 code S_usb_device_descriptor usb_dev_desc =
    00067 {
    00068   sizeof(usb_dev_desc)
    00069 , DESCRIPTOR_DEVICE
    00070 , Usb_write_word_enum_struc(USB_SPECIFICATION)
    00071 , DEVICE_CLASS
    00072 , DEVICE_SUB_CLASS
    00073 , DEVICE_PROTOCOL
    00074 , EP_CONTROL_LENGTH
    00075 , Usb_write_word_enum_struc(VENDOR_ID)
    00076 , Usb_write_word_enum_struc(PRODUCT_ID)
    00077 , Usb_write_word_enum_struc(RELEASE_NUMBER)
    00078 , MAN_INDEX
    00079 , PROD_INDEX
    00080 , SN_INDEX
    00081 , NB_CONFIGURATION
    00082 };
    00083
    00084 // usb_user_configuration_descriptor FS
    00085 code S_usb_user_configuration_descriptor usb_conf_desc = {
    00086  { sizeof(S_usb_configuration_descriptor)
    00087  , DESCRIPTOR_CONFIGURATION
    00088  , Usb_write_word_enum_struc(sizeof(S_usb_configuration_descriptor)\
    00089        +sizeof(S_usb_interface_descriptor)   \
    00090        +sizeof(S_usb_endpoint_descriptor)    \
    00091        +sizeof(S_usb_endpoint_descriptor))
    00092  , NB_INTERFACE
    00093  , CONF_NB
    00094  , CONF_INDEX
    00095  , CONF_ATTRIBUTES
    00096  , MAX_POWER
    00097  }
    00098 ,
    00099  { sizeof(S_usb_interface_descriptor)
    00100  , DESCRIPTOR_INTERFACE
    00101  , INTERFACE_NB
    00102  , ALTERNATE
    00103  , NB_ENDPOINT
    00104  , INTERFACE_CLASS
    00105  , INTERFACE_SUB_CLASS
    00106  , INTERFACE_PROTOCOL
    00107  , INTERFACE_INDEX
    00108  }
    00109  ,
    00110  { sizeof(S_usb_endpoint_descriptor)
    00111  , DESCRIPTOR_ENDPOINT
    00112  , ENDPOINT_NB_2
    00113  , EP_ATTRIBUTES_2
    00114  , Usb_write_word_enum_struc(EP_SIZE_2)
    00115  , EP_INTERVAL_2
    00116  }
    00117  ,
    00118  { sizeof(S_usb_endpoint_descriptor)
    00119  , DESCRIPTOR_ENDPOINT
    00120  , ENDPOINT_NB_3
    00121  , EP_ATTRIBUTES_3
    00122  , Usb_write_word_enum_struc(EP_SIZE_3)
    00123  , EP_INTERVAL_3
    00124  }
    00125 };
    00126
    00127
    00128
    00129                                       // usb_user_manufacturer_string_descriptor
    00130 code S_usb_manufacturer_string_descriptor usb_user_manufacturer_string_descriptor = {
    00131   sizeof(usb_user_manufacturer_string_descriptor)
    00132 , DESCRIPTOR_STRING
    00133 , USB_MANUFACTURER_NAME
    00134 };
    00135
    00136
    00137                                       // usb_user_product_string_descriptor
    00138
    00139 code S_usb_product_string_descriptor usb_user_product_string_descriptor = {
    00140   sizeof(usb_user_product_string_descriptor)
    00141 , DESCRIPTOR_STRING
    00142 , USB_PRODUCT_NAME
    00143 };
    00144
    00145
    00146                                       // usb_user_serial_number
    00147 #if (USB_DEVICE_SN_USE==ENABLE)
    00148 code S_usb_serial_number usb_user_serial_number = {
    00149 #if (USE_DEVICE_SN_UNIQUE==ENABLE)
    00150   sizeof(usb_user_serial_number)+4*SN_LENGTH
    00151 , DESCRIPTOR_STRING
    00152 #else
    00153 sizeof(usb_user_serial_number)
    00154 , DESCRIPTOR_STRING
    00155 , USB_SERIAL_NUMBER
    00156 #endif
    00157 };
    00158 #endif
    00159
    00160                                       // usb_user_language_id
    00161
    00162 code S_usb_language_id usb_user_language_id = {
    00163   sizeof(usb_user_language_id)
    00164 , DESCRIPTOR_STRING
    00165 , Usb_write_word_enum_struc(LANGUAGE_ID)
    00166 };
    00167
    00168
    00169