📄 usb_descriptors.c
字号:
, ENDPOINT_NB_6 , EP_ATTRIBUTES_6 , Usb_write_word_enum_struc(EP_SIZE_6) , EP_INTERVAL_6 }};/****************** NETWORK-ONLY DEVICE DESCRIPTORS **************************/FLASH S_usb_device_descriptor usb_dev_desc_network ={ sizeof(usb_dev_desc_network), DEVICE_DESCRIPTOR, Usb_write_word_enum_struc(USB_SPECIFICATION), NETWORK_DEVICE_CLASS, NETWORK_DEVICE_SUB_CLASS, NETWORK_DEVICE_PROTOCOL, EP_CONTROL_LENGTH, Usb_write_word_enum_struc(VENDOR_ID), Usb_write_word_enum_struc(NETWORK_PRODUCT_ID), Usb_write_word_enum_struc(RELEASE_NUMBER), MAN_INDEX, PROD_INDEX, SN_INDEX, NB_CONFIGURATION};// usb_user_configuration_descriptor FSFLASH S_usb_user_configuration_descriptor_network usb_conf_desc_network = { { sizeof(S_usb_configuration_descriptor) , CONFIGURATION_DESCRIPTOR , Usb_write_word_enum_struc(sizeof(S_usb_user_configuration_descriptor_network)) //, 0x0043 //TODO: Change to generic codewith sizeof , NETWORK_NB_INTERFACE , CONF_NB , CONF_INDEX , CONF_ATTRIBUTES , MAX_POWER },//9 /// RNDIS DEVICE { sizeof(S_usb_interface_descriptor) , INTERFACE_DESCRIPTOR , INTERFACE0_NB , ALTERNATE0 , NB_ENDPOINT0 , INTERFACE0_CLASS , INTERFACE0_SUB_CLASS , INTERFACE0_PROTOCOL , INTERFACE0_INDEX } //9,{// Header Functional Descriptor (marks beginning of the concatenated set of Functional Descriptors)0x05, // bFunctionLength, Descriptor size in bytes0x24, // bDescriptorType, CS_INTERFACE0x00, // bDescriptorSubtype, Header Functional Descriptor0x10,0x01, // bcdCDC, CDC specification release number in BCD format (1,1)// Call Management Functional Descriptor0x05, // bFunctionLength, Descriptor size in bytes0x24, // bDescriptorType, CS_INTERFACE0x01, // bDescriptorSubtype, Call Management Functional Descriptor0x00, // bmCapabilities0x01, // bDataInterface, Interface used for call management// Abstract Control Management Functional Descriptor0x04, // bDescriptorLength, Descriptor size in bytes0x24, // bDescriptorType, CS_INTERFACE0x02, // bDescriptorSubtype, Abstract Control Management Functional Descriptor0x00, // bmCapabilities// Union Functional Descriptor0x05, // bFunctionLength, Descriptor size in bytes0x24, // bDescriptorType, CS_INTERFACE0x06, // bDescriptorSubtype, Union Functional Descriptor0x00, // bMasterInterface, The controlling interface for the union (bInterfaceNumber of a Communication or Data Class interface in this configuration)0x01, // bSlaveInterface0, The controlled interace in the union (bInterfaceNumber of an interface in this configuration)},{ sizeof(S_usb_endpoint_descriptor) , ENDPOINT_DESCRIPTOR , ENDPOINT_NB_1 , EP_ATTRIBUTES_1 , Usb_write_word_enum_struc(EP_SIZE_1) , EP_INTERVAL_1 } //7 , { sizeof(S_usb_interface_descriptor) , INTERFACE_DESCRIPTOR , INTERFACE1_NB , ALTERNATE1 , NB_ENDPOINT1 , INTERFACE1_CLASS , INTERFACE1_SUB_CLASS , INTERFACE1_PROTOCOL , INTERFACE1_INDEX }, { sizeof(S_usb_endpoint_descriptor) , ENDPOINT_DESCRIPTOR , ENDPOINT_NB_2 , EP_ATTRIBUTES_2 , Usb_write_word_enum_struc(EP_SIZE_2) , EP_INTERVAL_2 },{ sizeof(S_usb_endpoint_descriptor) , ENDPOINT_DESCRIPTOR , ENDPOINT_NB_3 , EP_ATTRIBUTES_3 , Usb_write_word_enum_struc(EP_SIZE_3) , EP_INTERVAL_3 }};/****************** MASS-STORAGE DEVICE DESCRIPTORS **************************/FLASH S_usb_device_descriptor usb_dev_desc_mass ={ sizeof(usb_dev_desc_mass), DEVICE_DESCRIPTOR, Usb_write_word_enum_struc(USB_SPECIFICATION), MASS_DEVICE_CLASS, MASS_DEVICE_SUB_CLASS, MASS_DEVICE_PROTOCOL, EP_CONTROL_LENGTH, Usb_write_word_enum_struc(VENDOR_ID), Usb_write_word_enum_struc(MASS_PRODUCT_ID), Usb_write_word_enum_struc(RELEASE_NUMBER), MAN_INDEX, PROD_INDEX, SN_INDEX, NB_CONFIGURATION};// usb_user_configuration_descriptor FSFLASH S_usb_user_configuration_descriptor_mass usb_conf_desc_mass = { { sizeof(S_usb_configuration_descriptor) , CONFIGURATION_DESCRIPTOR , Usb_write_word_enum_struc(sizeof(S_usb_user_configuration_descriptor_mass)) , MASS_NB_INTERFACE , CONF_NB , CONF_INDEX , CONF_ATTRIBUTES , MAX_POWER },//9 /// Mass storage { sizeof(S_usb_interface_descriptor) , INTERFACE_DESCRIPTOR , MS_INTERFACE_NB , MS_ALTERNATE , MS_NB_ENDPOINT , MS_INTERFACE_CLASS , MS_INTERFACE_SUB_CLASS , MS_INTERFACE_PROTOCOL , MS_INTERFACE_INDEX } //9,{ sizeof(S_usb_endpoint_descriptor) , ENDPOINT_DESCRIPTOR , MS_ENDPOINT_NB_1 , MS_EP_ATTRIBUTES_1 , Usb_write_word_enum_struc(MS_EP_SIZE_1) , MS_EP_INTERVAL_1 } //7 , { sizeof(S_usb_endpoint_descriptor) , ENDPOINT_DESCRIPTOR , MS_ENDPOINT_NB_2 , MS_EP_ATTRIBUTES_2 , Usb_write_word_enum_struc(MS_EP_SIZE_2) , MS_EP_INTERVAL_2 }};/************* COMMON *****************/ // usb_user_manufacturer_string_descriptorFLASH S_usb_manufacturer_string_descriptor usb_user_manufacturer_string_descriptor = { sizeof(usb_user_manufacturer_string_descriptor), STRING_DESCRIPTOR, USB_MANUFACTURER_NAME}; // usb_user_product_string_descriptorFLASH S_usb_product_string_descriptor usb_user_product_string_descriptor = { sizeof(usb_user_product_string_descriptor), STRING_DESCRIPTOR, USB_PRODUCT_NAME}; // usb_user_serial_numberFLASH S_usb_serial_number usb_user_serial_number = { sizeof(usb_user_serial_number), STRING_DESCRIPTOR, USB_SERIAL_NUMBER}; // usb_user_language_idFLASH S_usb_language_id usb_user_language_id = { sizeof(usb_user_language_id), STRING_DESCRIPTOR, Usb_write_word_enum_struc(LANGUAGE_ID)};PGM_VOID_P Usb_get_dev_desc_pointer(void) { if (usb_mode == rndis_only) return &(usb_dev_desc_network.bLength); if (usb_mode == rndis_debug) return &(usb_dev_desc_composite.bLength); return &(usb_dev_desc_mass.bLength);}U8 Usb_get_dev_desc_length(void){ if (usb_mode == rndis_only) return sizeof(usb_dev_desc_network); if (usb_mode == rndis_debug) return sizeof(usb_dev_desc_composite); return sizeof(usb_dev_desc_mass);}PGM_VOID_P Usb_get_conf_desc_pointer(void) { if (usb_mode == rndis_only) return &(usb_conf_desc_network.cfg.bLength); if (usb_mode == rndis_debug) return &(usb_conf_desc_composite.cfg.bLength); return &(usb_conf_desc_mass.cfg.bLength);}U8 Usb_get_conf_desc_length(void){ if (usb_mode == rndis_only) return sizeof (usb_conf_desc_network); if (usb_mode == rndis_debug) return sizeof(usb_conf_desc_composite); return sizeof(usb_conf_desc_mass);}/** @} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -