00001
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #include "config.h"
00051 #include "conf_usb.h"
00052
00053 #include "lib_mcu/usb/usb_drv.h"
00054 #include "usb_descriptors.h"
00055 #include "modules/usb/device_chap9/usb_standard_request.h"
00056 #include "usb_specific_request.h"
00057 #if ((USB_DEVICE_SN_USE==ENABLE) && (USE_DEVICE_SN_UNIQUE==ENABLE))
00058 #include "lib_mcu/flash/flash_drv.h"
00059 #endif
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 code S_usb_device_descriptor usb_dev_desc =
00070 {
00071 sizeof(usb_dev_desc)
00072 , DESCRIPTOR_DEVICE
00073 , Usb_write_word_enum_struc(USB_SPECIFICATION)
00074 , DEVICE_CLASS
00075 , DEVICE_SUB_CLASS
00076 , DEVICE_PROTOCOL
00077 , EP_CONTROL_LENGTH
00078 , Usb_write_word_enum_struc(VENDOR_ID)
00079 , Usb_write_word_enum_struc(PRODUCT_ID)
00080 , Usb_write_word_enum_struc(RELEASE_NUMBER)
00081 , MAN_INDEX
00082 , PROD_INDEX
00083 , SN_INDEX
00084 , NB_CONFIGURATION
00085 };
00086
00087
00088 code S_usb_user_configuration_descriptor usb_conf_desc = {
00089 { sizeof(S_usb_configuration_descriptor)
00090 , DESCRIPTOR_CONFIGURATION
00091 , Usb_write_word_enum_struc(sizeof(S_usb_configuration_descriptor)\
00092 +sizeof(S_usb_interface_descriptor) \
00093 +sizeof(S_usb_hid_descriptor) \
00094 +sizeof(S_usb_endpoint_descriptor) \
00095 +sizeof(S_usb_interface_descriptor) \
00096 +sizeof(S_usb_endpoint_descriptor) \
00097 +sizeof(S_usb_endpoint_descriptor) \
00098 +sizeof(S_usb_interface_descriptor) \
00099 +sizeof(S_usb_hid_descriptor) \
00100 +sizeof(S_usb_endpoint_descriptor) \
00101 +sizeof(S_usb_endpoint_descriptor))
00102 , NB_INTERFACE
00103 , CONF_NB
00104 , CONF_INDEX
00105 , CONF_ATTRIBUTES
00106 , MAX_POWER
00107 }
00108 ,
00109 { sizeof(S_usb_interface_descriptor)
00110 , DESCRIPTOR_INTERFACE
00111 , INTERFACE_NB_MOUSE
00112 , ALTERNATE_MOUSE
00113 , NB_ENDPOINT_MOUSE
00114 , INTERFACE_CLASS_MOUSE
00115 , INTERFACE_SUB_CLASS_MOUSE
00116 , INTERFACE_PROTOCOL_MOUSE
00117 , INTERFACE_INDEX_MOUSE
00118 }
00119 ,
00120 { sizeof(S_usb_hid_descriptor)
00121 , DESCRIPTOR_HID
00122 , HID_BDC
00123 , HID_NO_COUNTRY_CODE
00124 , HID_CLASS_DESC_NB_DEFAULT
00125 , DESCRIPTOR_REPORT
00126 , Usb_write_word_enum_struc(sizeof(S_usb_hid_report_descriptor_mouse))
00127 }
00128 ,
00129 { sizeof(S_usb_endpoint_descriptor)
00130 , DESCRIPTOR_ENDPOINT
00131 , ENDPOINT_NB_1
00132 , EP_ATTRIBUTES_1
00133 , Usb_write_word_enum_struc(EP_SIZE_1)
00134 , EP_INTERVAL_1
00135 }
00136 ,
00137 { sizeof(S_usb_interface_descriptor)
00138 , DESCRIPTOR_INTERFACE
00139 , INTERFACE_NB
00140 , ALTERNATE
00141 , NB_ENDPOINT
00142 , INTERFACE_CLASS
00143 , INTERFACE_SUB_CLASS
00144 , INTERFACE_PROTOCOL
00145 , INTERFACE_INDEX
00146 }
00147 ,
00148 { sizeof(S_usb_endpoint_descriptor)
00149 , DESCRIPTOR_ENDPOINT
00150 , ENDPOINT_NB_2
00151 , EP_ATTRIBUTES_2
00152 , Usb_write_word_enum_struc(EP_SIZE_2)
00153 , EP_INTERVAL_2
00154 }
00155 ,
00156 { sizeof(S_usb_endpoint_descriptor)
00157 , DESCRIPTOR_ENDPOINT
00158 , ENDPOINT_NB_3
00159 , EP_ATTRIBUTES_3
00160 , Usb_write_word_enum_struc(EP_SIZE_3)
00161 , EP_INTERVAL_3
00162 }
00163 ,
00164 { sizeof(S_usb_interface_descriptor)
00165 , DESCRIPTOR_INTERFACE
00166 , INTERFACE_NB_HID
00167 , ALTERNATE
00168 , NB_ENDPOINT
00169 , INTERFACE_CLASS_HID
00170 , INTERFACE_SUB_CLASS_HID
00171 , INTERFACE_PROTOCOL_HID
00172 , INTERFACE_INDEX
00173 }
00174 ,
00175 { sizeof(S_usb_hid_descriptor)
00176 , DESCRIPTOR_HID
00177 , HID_BDC
00178 , HID_NO_COUNTRY_CODE
00179 , HID_CLASS_DESC_NB_DEFAULT
00180 , DESCRIPTOR_REPORT
00181 , Usb_write_word_enum_struc(sizeof(S_usb_hid_report_descriptor))
00182 }
00183 ,
00184 { sizeof(S_usb_endpoint_descriptor)
00185 , DESCRIPTOR_ENDPOINT
00186 , ENDPOINT_NB_4
00187 , EP_ATTRIBUTES_4
00188 , Usb_write_word_enum_struc(EP_SIZE_4)
00189 , EP_INTERVAL_5
00190 }
00191 ,
00192 { sizeof(S_usb_endpoint_descriptor)
00193 , DESCRIPTOR_ENDPOINT
00194 , ENDPOINT_NB_5
00195 , EP_ATTRIBUTES_5
00196 , Usb_write_word_enum_struc(EP_SIZE_5)
00197 , EP_INTERVAL_5
00198 }
00199
00200 };
00201
00202
00203
00204
00205 code S_usb_manufacturer_string_descriptor usb_user_manufacturer_string_descriptor = {
00206 sizeof(usb_user_manufacturer_string_descriptor)
00207 , DESCRIPTOR_STRING
00208 , USB_MANUFACTURER_NAME
00209 };
00210
00211
00212
00213
00214 code S_usb_product_string_descriptor usb_user_product_string_descriptor = {
00215 sizeof(usb_user_product_string_descriptor)
00216 , DESCRIPTOR_STRING
00217 , USB_PRODUCT_NAME
00218 };
00219
00220
00221
00222 #if (USB_DEVICE_SN_USE==ENABLE)
00223 code S_usb_serial_number usb_user_serial_number = {
00224 #if (USE_DEVICE_SN_UNIQUE==ENABLE)
00225 sizeof(usb_user_serial_number)+4*SN_LENGTH
00226 , DESCRIPTOR_STRING
00227 #else
00228 sizeof(usb_user_serial_number)
00229 , DESCRIPTOR_STRING
00230 , USB_SERIAL_NUMBER
00231 #endif
00232 };
00233 #endif
00234
00235
00236
00237 code S_usb_language_id usb_user_language_id = {
00238 sizeof(usb_user_language_id)
00239 , DESCRIPTOR_STRING
00240 , Usb_write_word_enum_struc(LANGUAGE_ID)
00241 };
00242
00243 code S_usb_hid_report_descriptor_mouse usb_hid_report_descriptor_mouse = {{
00244 0x05,0x01,
00245 0x09,0x02,
00246 0xA1,0x01,
00247 0x09,0x01,
00248 0xA1,0x00,
00249 0x05,0x09,
00250 0x19,0x01,
00251 0x29,0x03,
00252 0x15,0x00,
00253 0x25,0x01,
00254 0x75,0x01,
00255 0x95,0x03,
00256 0x81,0x02,
00257 0x75,0x05,
00258 0x95,0x01,
00259 0x81,0x01,
00260 0x05,0x01,
00261 0x09,0x30,
00262 0x09,0x31,
00263 0x09,0x38,
00264 0x15,0x81,
00265 0x25,0x7F,
00266 0x75,0x08,
00267 0x95,0x03,
00268 0x81,0x06,
00269 0xC0,
00270 0xC0
00271 }};
00272
00273
00274 code S_usb_hid_report_descriptor usb_hid_report_descriptor = {{
00275 0x06, 0xFF, 0xFF,
00276 0x09, 0x01,
00277 0xA1, 0x01,
00278
00279 0x09, 0x02,
00280 0x09, 0x03,
00281 0x15, 0x00,
00282 0x26 ,0xFF,0x00,
00283 0x75, 0x08,
00284 0x95, LENGTH_OF_REPORT_IN,
00285 0x81, 0x02,
00286
00287 0x09, 0x04,
00288 0x09, 0x05,
00289 0x15, 0x00,
00290 0x26, 0xFF,0x00,
00291 0x75, 0x08,
00292 0x95, LENGTH_OF_REPORT_OUT,
00293 0x91, 0x02,
00294
00295 0x09, 0x06,
00296 0x09, 0x07,
00297 0x15, 0x00,
00298 0x26, 0xFF,0x00,
00299 0x75, 0x08,
00300 0x95, 0x04,
00301 0xB1, 0x02,
00302 0xC0
00303 }};
00304