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 AND FITNESS FOR A PARTICULAR PURPOSE 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_user_configuration_descriptor)                              )
00089  , NB_INTERFACE
00090  , CONF_NB
00091  , CONF_INDEX
00092  , CONF_ATTRIBUTES
00093  , MAX_POWER
00094  }
00095  ,
00096  { sizeof(S_usb_interface_descriptor)
00097  , DESCRIPTOR_INTERFACE
00098  , INTERFACE_NB_KBD
00099  , ALTERNATE_KBD
00100  , NB_ENDPOINT_KBD
00101  , INTERFACE_CLASS_KBD
00102  , INTERFACE_SUB_CLASS_KBD
00103  , INTERFACE_PROTOCOL_KBD
00104  , INTERFACE_INDEX_KBD
00105  }
00106  ,
00107  { sizeof(S_usb_hid_descriptor)
00108  , DESCRIPTOR_HID
00109  , HID_BDC
00110  , HID_NO_COUNTRY_CODE
00111  , HID_CLASS_DESC_NB_DEFAULT
00112  , DESCRIPTOR_REPORT
00113  , Usb_write_word_enum_struc(sizeof(S_usb_hid_report_descriptor_kbd))
00114  }
00115  ,
00116  { sizeof(S_usb_endpoint_descriptor)
00117  , DESCRIPTOR_ENDPOINT
00118  , ENDPOINT_NB_1
00119  , EP_ATTRIBUTES_1
00120  , Usb_write_word_enum_struc(EP_SIZE_1)
00121  , EP_INTERVAL_1
00122  }
00123 };
00124 
00125 
00126 
00127                                       // usb_user_manufacturer_string_descriptor
00128 code S_usb_manufacturer_string_descriptor usb_user_manufacturer_string_descriptor = {
00129   sizeof(usb_user_manufacturer_string_descriptor)
00130 , DESCRIPTOR_STRING
00131 , USB_MANUFACTURER_NAME
00132 };
00133 
00134 
00135                                       // usb_user_product_string_descriptor
00136 
00137 code S_usb_product_string_descriptor usb_user_product_string_descriptor = {
00138   sizeof(usb_user_product_string_descriptor)
00139 , DESCRIPTOR_STRING
00140 , USB_PRODUCT_NAME
00141 };
00142 
00143 
00144                                       // usb_user_serial_number
00145 #if (USB_DEVICE_SN_USE==ENABLE)
00146 code S_usb_serial_number usb_user_serial_number = {
00147 #if (USE_DEVICE_SN_UNIQUE==ENABLE)
00148   sizeof(usb_user_serial_number)+4*SN_LENGTH
00149 , DESCRIPTOR_STRING
00150 #else
00151 sizeof(usb_user_serial_number)
00152 , DESCRIPTOR_STRING
00153 , USB_SERIAL_NUMBER
00154 #endif
00155 };
00156 #endif
00157 
00158                                       // usb_user_language_id
00159 
00160 code S_usb_language_id usb_user_language_id = {
00161   sizeof(usb_user_language_id)
00162 , DESCRIPTOR_STRING
00163 , Usb_write_word_enum_struc(LANGUAGE_ID)
00164 };
00165 
00166 
00167 
00168 code S_usb_hid_report_descriptor_kbd usb_hid_report_descriptor_kbd =
00169  {{ 0x05,0x01,          /* Usage Page (Generic Desktop)      */
00170    0x09,0x06,          /* Usage (Keyboard)                  */
00171    0xA1,0x01,          /* Collection (Application)          */
00172    0x05,0x07,          /* Usage Page (Keyboard)             */
00173    0x19,224,           /* Usage Minimum (224)               */
00174    0x29,231,           /* Usage Maximum (231)               */
00175    0x15,0x00,          /* Logical Minimum (0)               */
00176    0x25,0x01,          /* Logical Maximum (1)               */
00177    0x75,0x01,          /* Report Size (1)                   */
00178    0x95,0x08,          /* Report Count (8)                  */
00179    0x81,0x02,          /* Input (Data, Variable, Absolute)  */
00180    0x81,0x01,          /* Input (Constant)                  */
00181    0x19,0x00,          /* Usage Minimum (0)                 */
00182    0x29,101,           /* Usage Maximum (101)               */
00183    0x15,0x00,          /* Logical Minimum (0)               */
00184    0x25,101,           /* Logical Maximum (101)             */
00185    0x75,0x08,          /* Report Size (8)                   */
00186    0x95,0x06,          /* Report Count (6)                  */
00187    0x81,0x00,          /* Input (Data, Array)               */
00188    0x05,0x08,          /* Usage Page (LED)                  */
00189    0x19,0x01,          /* Usage Minimum (1)                 */
00190    0x29,0x05,          /* Usage Maximum (5)                 */
00191    0x15,0x00,          /* Logical Minimum (0)               */
00192    0x25,0x01,          /* Logical Maximum (1)               */
00193    0x75,0x01,          /* Report Size (1)                   */
00194    0x95,0x05,          /* Report Count (5)                  */
00195    0x91,0x02,          /* Output (Data, Variable, Absolute) */
00196    0x95,0x03,          /* Report Count (3)                  */
00197    0x91,0x01,          /* Output (Constant)                 */
00198    0xC0                /* End Collection                    */
00199  }};
00200 
00201 
00202 

Generated on Fri Oct 31 15:59:42 2008 for ATMEL by  doxygen 1.5.3