update(demo): remove all old desc api
Signed-off-by: sakumisu <1203593632@qq.com>
This commit is contained in:
211
core/usbd_core.c
211
core/usbd_core.c
@@ -48,16 +48,10 @@ USB_NOCACHE_RAM_SECTION struct usbd_core_priv {
|
|||||||
uint32_t ep0_data_buf_len;
|
uint32_t ep0_data_buf_len;
|
||||||
/** Zero length packet flag of control transfer */
|
/** Zero length packet flag of control transfer */
|
||||||
bool zlp_flag;
|
bool zlp_flag;
|
||||||
|
|
||||||
/** Pointer to registered descriptors */
|
/** Pointer to registered descriptors */
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
const struct usb_descriptor *descriptors;
|
const struct usb_descriptor *descriptors;
|
||||||
#else
|
|
||||||
const uint8_t *descriptors;
|
|
||||||
struct usb_msosv1_descriptor *msosv1_desc;
|
|
||||||
struct usb_msosv2_descriptor *msosv2_desc;
|
|
||||||
struct usb_bos_descriptor *bos_desc;
|
|
||||||
struct usb_webusb_descriptor *webusb_url_desc;
|
|
||||||
#endif
|
|
||||||
/* Buffer used for storing standard, class and vendor request data */
|
/* Buffer used for storing standard, class and vendor request data */
|
||||||
USB_MEM_ALIGNX uint8_t req_data[USB_ALIGN_UP(CONFIG_USBDEV_REQUEST_BUFFER_LEN, CONFIG_USB_ALIGN_SIZE)];
|
USB_MEM_ALIGNX uint8_t req_data[USB_ALIGN_UP(CONFIG_USBDEV_REQUEST_BUFFER_LEN, CONFIG_USB_ALIGN_SIZE)];
|
||||||
|
|
||||||
@@ -69,9 +63,7 @@ USB_NOCACHE_RAM_SECTION struct usbd_core_priv {
|
|||||||
bool remote_wakeup_support;
|
bool remote_wakeup_support;
|
||||||
bool remote_wakeup_enabled;
|
bool remote_wakeup_enabled;
|
||||||
bool is_suspend;
|
bool is_suspend;
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
uint8_t speed;
|
uint8_t speed;
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_USBDEV_TEST_MODE
|
#ifdef CONFIG_USBDEV_TEST_MODE
|
||||||
bool test_req;
|
bool test_req;
|
||||||
#endif
|
#endif
|
||||||
@@ -180,7 +172,6 @@ static bool usbd_reset_endpoint(uint8_t busid, const struct usb_endpoint_descrip
|
|||||||
*
|
*
|
||||||
* @return true if the descriptor was found, false otherwise
|
* @return true if the descriptor was found, false otherwise
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static bool usbd_get_descriptor(uint8_t busid, uint16_t type_index, uint8_t **data, uint32_t *len)
|
static bool usbd_get_descriptor(uint8_t busid, uint16_t type_index, uint8_t **data, uint32_t *len)
|
||||||
{
|
{
|
||||||
uint8_t type = 0U;
|
uint8_t type = 0U;
|
||||||
@@ -326,93 +317,6 @@ static bool usbd_get_descriptor(uint8_t busid, uint16_t type_index, uint8_t **da
|
|||||||
}
|
}
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
static bool usbd_get_descriptor(uint8_t busid, uint16_t type_index, uint8_t **data, uint32_t *len)
|
|
||||||
{
|
|
||||||
uint8_t type = 0U;
|
|
||||||
uint8_t index = 0U;
|
|
||||||
uint8_t *p = NULL;
|
|
||||||
uint32_t cur_index = 0U;
|
|
||||||
bool found = false;
|
|
||||||
|
|
||||||
type = HI_BYTE(type_index);
|
|
||||||
index = LO_BYTE(type_index);
|
|
||||||
|
|
||||||
if ((type == USB_DESCRIPTOR_TYPE_STRING) && (index == USB_OSDESC_STRING_DESC_INDEX)) {
|
|
||||||
if (!g_usbd_core[busid].msosv1_desc) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
*data = (uint8_t *)g_usbd_core[busid].msosv1_desc->string;
|
|
||||||
//memcpy(*data, (uint8_t *)g_usbd_core[busid].msosv1_desc->string, g_usbd_core[busid].msosv1_desc->string[0]);
|
|
||||||
*len = g_usbd_core[busid].msosv1_desc->string[0];
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} else if (type == USB_DESCRIPTOR_TYPE_BINARY_OBJECT_STORE) {
|
|
||||||
if (!g_usbd_core[busid].bos_desc) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
*data = (uint8_t *)g_usbd_core[busid].bos_desc->string;
|
|
||||||
//memcpy(*data, (uint8_t *)g_usbd_core[busid].bos_desc->string, g_usbd_core[busid].bos_desc->string_len);
|
|
||||||
*len = g_usbd_core[busid].bos_desc->string_len;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Invalid types of descriptors,
|
|
||||||
* see USB Spec. Revision 2.0, 9.4.3 Get Descriptor
|
|
||||||
*/
|
|
||||||
else if ((type == USB_DESCRIPTOR_TYPE_INTERFACE) || (type == USB_DESCRIPTOR_TYPE_ENDPOINT) ||
|
|
||||||
#ifndef CONFIG_USB_HS
|
|
||||||
(type > USB_DESCRIPTOR_TYPE_ENDPOINT)) {
|
|
||||||
#else
|
|
||||||
(type > USB_DESCRIPTOR_TYPE_OTHER_SPEED)) {
|
|
||||||
#endif
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
p = (uint8_t *)g_usbd_core[busid].descriptors;
|
|
||||||
|
|
||||||
cur_index = 0U;
|
|
||||||
|
|
||||||
while (p[DESC_bLength] != 0U) {
|
|
||||||
if (p[DESC_bDescriptorType] == type) {
|
|
||||||
if (cur_index == index) {
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
cur_index++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* skip to next descriptor */
|
|
||||||
p += p[DESC_bLength];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (found) {
|
|
||||||
if ((type == USB_DESCRIPTOR_TYPE_CONFIGURATION) || ((type == USB_DESCRIPTOR_TYPE_OTHER_SPEED))) {
|
|
||||||
/* configuration or other speed descriptor is an
|
|
||||||
* exception, length is at offset 2 and 3
|
|
||||||
*/
|
|
||||||
*len = (p[CONF_DESC_wTotalLength]) |
|
|
||||||
(p[CONF_DESC_wTotalLength + 1] << 8);
|
|
||||||
|
|
||||||
g_usbd_core[busid].self_powered = (p[7] & USB_CONFIG_POWERED_MASK) ? true : false;
|
|
||||||
g_usbd_core[busid].remote_wakeup_support = (p[7] & USB_CONFIG_REMOTE_WAKEUP) ? true : false;
|
|
||||||
} else {
|
|
||||||
/* normally length is at offset 0 */
|
|
||||||
*len = p[DESC_bLength];
|
|
||||||
}
|
|
||||||
*data = p;
|
|
||||||
//memcpy(*data, p, *len);
|
|
||||||
} else {
|
|
||||||
/* nothing found */
|
|
||||||
USB_LOG_ERR("descriptor <type:0x%02x,index:0x%02x> not found!\r\n", type, index);
|
|
||||||
}
|
|
||||||
|
|
||||||
return found;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief set USB configuration
|
* @brief set USB configuration
|
||||||
@@ -436,11 +340,8 @@ static bool usbd_set_configuration(uint8_t busid, uint8_t config_index, uint8_t
|
|||||||
uint32_t desc_len = 0;
|
uint32_t desc_len = 0;
|
||||||
uint32_t current_desc_len = 0;
|
uint32_t current_desc_len = 0;
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
p = g_usbd_core[busid].descriptors->config_descriptor_callback(g_usbd_core[busid].speed);
|
p = g_usbd_core[busid].descriptors->config_descriptor_callback(g_usbd_core[busid].speed);
|
||||||
#else
|
|
||||||
p = (uint8_t *)g_usbd_core[busid].descriptors;
|
|
||||||
#endif
|
|
||||||
/* configure endpoints for this configuration/altsetting */
|
/* configure endpoints for this configuration/altsetting */
|
||||||
while (p[DESC_bLength] != 0U) {
|
while (p[DESC_bLength] != 0U) {
|
||||||
switch (p[DESC_bDescriptorType]) {
|
switch (p[DESC_bDescriptorType]) {
|
||||||
@@ -508,11 +409,8 @@ static bool usbd_set_interface(uint8_t busid, uint8_t iface, uint8_t alt_setting
|
|||||||
uint32_t desc_len = 0;
|
uint32_t desc_len = 0;
|
||||||
uint32_t current_desc_len = 0;
|
uint32_t current_desc_len = 0;
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
p = g_usbd_core[busid].descriptors->config_descriptor_callback(g_usbd_core[busid].speed);
|
p = g_usbd_core[busid].descriptors->config_descriptor_callback(g_usbd_core[busid].speed);
|
||||||
#else
|
|
||||||
p = (uint8_t *)g_usbd_core[busid].descriptors;
|
|
||||||
#endif
|
|
||||||
USB_LOG_DBG("iface %u alt_setting %u\r\n", iface, alt_setting);
|
USB_LOG_DBG("iface %u alt_setting %u\r\n", iface, alt_setting);
|
||||||
|
|
||||||
while (p[DESC_bLength] != 0U) {
|
while (p[DESC_bLength] != 0U) {
|
||||||
@@ -683,11 +581,7 @@ static bool usbd_std_interface_req_handler(uint8_t busid, struct usb_setup_packe
|
|||||||
uint32_t current_desc_len = 0;
|
uint32_t current_desc_len = 0;
|
||||||
uint8_t cur_iface = 0xFF;
|
uint8_t cur_iface = 0xFF;
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
p = g_usbd_core[busid].descriptors->config_descriptor_callback(g_usbd_core[busid].speed);
|
p = g_usbd_core[busid].descriptors->config_descriptor_callback(g_usbd_core[busid].speed);
|
||||||
#else
|
|
||||||
p = (uint8_t *)g_usbd_core[busid].descriptors;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Only when device is configured, then interface requests can be valid. */
|
/* Only when device is configured, then interface requests can be valid. */
|
||||||
if (!is_device_configured(busid)) {
|
if (!is_device_configured(busid)) {
|
||||||
@@ -925,7 +819,7 @@ static int usbd_class_request_handler(uint8_t busid, struct usb_setup_packet *se
|
|||||||
static int usbd_vendor_request_handler(uint8_t busid, struct usb_setup_packet *setup, uint8_t **data, uint32_t *len)
|
static int usbd_vendor_request_handler(uint8_t busid, struct usb_setup_packet *setup, uint8_t **data, uint32_t *len)
|
||||||
{
|
{
|
||||||
uint32_t desclen;
|
uint32_t desclen;
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
if (g_usbd_core[busid].descriptors->msosv1_descriptor) {
|
if (g_usbd_core[busid].descriptors->msosv1_descriptor) {
|
||||||
if (setup->bRequest == g_usbd_core[busid].descriptors->msosv1_descriptor->vendor_code) {
|
if (setup->bRequest == g_usbd_core[busid].descriptors->msosv1_descriptor->vendor_code) {
|
||||||
switch (setup->wIndex) {
|
switch (setup->wIndex) {
|
||||||
@@ -982,61 +876,7 @@ static int usbd_vendor_request_handler(uint8_t busid, struct usb_setup_packet *s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
if (g_usbd_core[busid].msosv1_desc) {
|
|
||||||
if (setup->bRequest == g_usbd_core[busid].msosv1_desc->vendor_code) {
|
|
||||||
switch (setup->wIndex) {
|
|
||||||
case 0x04:
|
|
||||||
*data = (uint8_t *)g_usbd_core[busid].msosv1_desc->compat_id;
|
|
||||||
desclen = g_usbd_core[busid].msosv1_desc->compat_id[0] +
|
|
||||||
(g_usbd_core[busid].msosv1_desc->compat_id[1] << 8) +
|
|
||||||
(g_usbd_core[busid].msosv1_desc->compat_id[2] << 16) +
|
|
||||||
(g_usbd_core[busid].msosv1_desc->compat_id[3] << 24);
|
|
||||||
//memcpy(*data, g_usbd_core[busid].msosv1_desc->compat_id, desclen);
|
|
||||||
*len = desclen;
|
|
||||||
return 0;
|
|
||||||
case 0x05:
|
|
||||||
*data = (uint8_t *)g_usbd_core[busid].msosv1_desc->comp_id_property[setup->wValue];
|
|
||||||
desclen = g_usbd_core[busid].msosv1_desc->comp_id_property[setup->wValue][0] +
|
|
||||||
(g_usbd_core[busid].msosv1_desc->comp_id_property[setup->wValue][1] << 8) +
|
|
||||||
(g_usbd_core[busid].msosv1_desc->comp_id_property[setup->wValue][2] << 16) +
|
|
||||||
(g_usbd_core[busid].msosv1_desc->comp_id_property[setup->wValue][3] << 24);
|
|
||||||
//memcpy(*data, g_usbd_core[busid].msosv1_desc->comp_id_property[setup->wValue], desclen);
|
|
||||||
*len = desclen;
|
|
||||||
return 0;
|
|
||||||
default:
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (g_usbd_core[busid].msosv2_desc) {
|
|
||||||
if (setup->bRequest == g_usbd_core[busid].msosv2_desc->vendor_code) {
|
|
||||||
switch (setup->wIndex) {
|
|
||||||
case WINUSB_REQUEST_GET_DESCRIPTOR_SET:
|
|
||||||
*data = (uint8_t *)g_usbd_core[busid].msosv2_desc->compat_id;
|
|
||||||
//memcpy(*data, g_usbd_core[busid].msosv2_desc->compat_id, g_usbd_core[busid].msosv2_desc->compat_id_len);
|
|
||||||
*len = g_usbd_core[busid].msosv2_desc->compat_id_len;
|
|
||||||
return 0;
|
|
||||||
default:
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g_usbd_core[busid].webusb_url_desc) {
|
|
||||||
if (setup->bRequest == g_usbd_core[busid].webusb_url_desc->vendor_code) {
|
|
||||||
switch (setup->wIndex) {
|
|
||||||
case WEBUSB_REQUEST_GET_URL:
|
|
||||||
desclen = g_usbd_core[busid].webusb_url_desc->string_len;
|
|
||||||
*data = (uint8_t *)g_usbd_core[busid].webusb_url_desc->string;
|
|
||||||
//memcpy(*data, g_usbd_core[busid].webusb_url_desc->string, desclen);
|
|
||||||
*len = desclen;
|
|
||||||
return 0;
|
|
||||||
default:
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
for (uint8_t i = 0; i < g_usbd_core[busid].intf_offset; i++) {
|
for (uint8_t i = 0; i < g_usbd_core[busid].intf_offset; i++) {
|
||||||
struct usbd_interface *intf = g_usbd_core[busid].intf[i];
|
struct usbd_interface *intf = g_usbd_core[busid].intf[i];
|
||||||
|
|
||||||
@@ -1151,7 +991,6 @@ void usbd_event_reset_handler(uint8_t busid)
|
|||||||
g_usbd_core[busid].device_address = 0;
|
g_usbd_core[busid].device_address = 0;
|
||||||
g_usbd_core[busid].configuration = 0;
|
g_usbd_core[busid].configuration = 0;
|
||||||
g_usbd_core[busid].ep0_next_state = USBD_EP0_STATE_SETUP;
|
g_usbd_core[busid].ep0_next_state = USBD_EP0_STATE_SETUP;
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
g_usbd_core[busid].speed = USB_SPEED_UNKNOWN;
|
g_usbd_core[busid].speed = USB_SPEED_UNKNOWN;
|
||||||
|
|
||||||
USB_ASSERT_MSG(g_usbd_core[busid].descriptors->device_descriptor_callback != NULL,
|
USB_ASSERT_MSG(g_usbd_core[busid].descriptors->device_descriptor_callback != NULL,
|
||||||
@@ -1159,9 +998,6 @@ void usbd_event_reset_handler(uint8_t busid)
|
|||||||
|
|
||||||
struct usb_device_descriptor *device_desc = (struct usb_device_descriptor *)g_usbd_core[busid].descriptors->device_descriptor_callback(g_usbd_core[busid].speed);
|
struct usb_device_descriptor *device_desc = (struct usb_device_descriptor *)g_usbd_core[busid].descriptors->device_descriptor_callback(g_usbd_core[busid].speed);
|
||||||
ep0.wMaxPacketSize = device_desc->bMaxPacketSize0;
|
ep0.wMaxPacketSize = device_desc->bMaxPacketSize0;
|
||||||
#else
|
|
||||||
ep0.wMaxPacketSize = USB_CTRL_EP_MPS;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ep0.bLength = 7;
|
ep0.bLength = 7;
|
||||||
ep0.bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT;
|
ep0.bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT;
|
||||||
@@ -1377,7 +1213,6 @@ void usbd_event_ep_out_complete_handler(uint8_t busid, uint8_t ep, uint32_t nbyt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
void usbd_desc_register(uint8_t busid, const struct usb_descriptor *desc)
|
void usbd_desc_register(uint8_t busid, const struct usb_descriptor *desc)
|
||||||
{
|
{
|
||||||
memset(&g_usbd_core[busid], 0, sizeof(struct usbd_core_priv));
|
memset(&g_usbd_core[busid], 0, sizeof(struct usbd_core_priv));
|
||||||
@@ -1390,42 +1225,6 @@ void usbd_desc_register(uint8_t busid, const struct usb_descriptor *desc)
|
|||||||
g_usbd_core[busid].rx_msg[0].ep = 0x00;
|
g_usbd_core[busid].rx_msg[0].ep = 0x00;
|
||||||
g_usbd_core[busid].rx_msg[0].cb = usbd_event_ep0_out_complete_handler;
|
g_usbd_core[busid].rx_msg[0].cb = usbd_event_ep0_out_complete_handler;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
void usbd_desc_register(uint8_t busid, const uint8_t *desc)
|
|
||||||
{
|
|
||||||
memset(&g_usbd_core[busid], 0, sizeof(struct usbd_core_priv));
|
|
||||||
|
|
||||||
g_usbd_core[busid].descriptors = desc;
|
|
||||||
g_usbd_core[busid].intf_offset = 0;
|
|
||||||
|
|
||||||
g_usbd_core[busid].tx_msg[0].ep = 0x80;
|
|
||||||
g_usbd_core[busid].tx_msg[0].cb = usbd_event_ep0_in_complete_handler;
|
|
||||||
g_usbd_core[busid].rx_msg[0].ep = 0x00;
|
|
||||||
g_usbd_core[busid].rx_msg[0].cb = usbd_event_ep0_out_complete_handler;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Register MS OS Descriptors version 1 */
|
|
||||||
void usbd_msosv1_desc_register(uint8_t busid, struct usb_msosv1_descriptor *desc)
|
|
||||||
{
|
|
||||||
g_usbd_core[busid].msosv1_desc = desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Register MS OS Descriptors version 2 */
|
|
||||||
void usbd_msosv2_desc_register(uint8_t busid, struct usb_msosv2_descriptor *desc)
|
|
||||||
{
|
|
||||||
g_usbd_core[busid].msosv2_desc = desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
void usbd_bos_desc_register(uint8_t busid, struct usb_bos_descriptor *desc)
|
|
||||||
{
|
|
||||||
g_usbd_core[busid].bos_desc = desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
void usbd_webusb_desc_register(uint8_t busid, struct usb_webusb_descriptor *desc)
|
|
||||||
{
|
|
||||||
g_usbd_core[busid].webusb_url_desc = desc;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void usbd_add_interface(uint8_t busid, struct usbd_interface *intf)
|
void usbd_add_interface(uint8_t busid, struct usbd_interface *intf)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -96,15 +96,7 @@ extern struct usbd_bus g_usbdev_bus[];
|
|||||||
#error USBD_IRQHandler is obsolete, please call USBD_IRQHandler(xxx) in your irq
|
#error USBD_IRQHandler is obsolete, please call USBD_IRQHandler(xxx) in your irq
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
void usbd_desc_register(uint8_t busid, const struct usb_descriptor *desc);
|
void usbd_desc_register(uint8_t busid, const struct usb_descriptor *desc);
|
||||||
#else
|
|
||||||
void usbd_desc_register(uint8_t busid, const uint8_t *desc);
|
|
||||||
void usbd_msosv1_desc_register(uint8_t busid, struct usb_msosv1_descriptor *desc);
|
|
||||||
void usbd_msosv2_desc_register(uint8_t busid, struct usb_msosv2_descriptor *desc);
|
|
||||||
void usbd_bos_desc_register(uint8_t busid, struct usb_bos_descriptor *desc);
|
|
||||||
void usbd_webusb_desc_register(uint8_t busid, struct usb_webusb_descriptor *desc);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void usbd_add_interface(uint8_t busid, struct usbd_interface *intf);
|
void usbd_add_interface(uint8_t busid, struct usbd_interface *intf);
|
||||||
void usbd_add_endpoint(uint8_t busid, struct usbd_endpoint *ep);
|
void usbd_add_endpoint(uint8_t busid, struct usbd_endpoint *ep);
|
||||||
|
|||||||
@@ -108,7 +108,6 @@ struct usb_msosv1_descriptor msosv1_desc = {
|
|||||||
.comp_id_property = WINUSB_IFx_WCIDProperties,
|
.comp_id_property = WINUSB_IFx_WCIDProperties,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0100, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0100, 0x01)
|
||||||
};
|
};
|
||||||
@@ -171,80 +170,6 @@ const struct usb_descriptor adb_descriptor = {
|
|||||||
.string_descriptor_callback = string_descriptor_callback,
|
.string_descriptor_callback = string_descriptor_callback,
|
||||||
.msosv1_descriptor = &msosv1_desc
|
.msosv1_descriptor = &msosv1_desc
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
static const uint8_t adb_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0100, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x01, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
ADB_DESCRIPTOR_INIT(ADB_INTF_NUM, WINUSB_IN_EP, WINUSB_OUT_EP, WINUSB_MAX_MPS),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'A', 0x00, /* wcChar6 */
|
|
||||||
'D', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x1C, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'A', 0x00, /* wcChar6 */
|
|
||||||
'D', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
'2', 0x00, /* wcChar9 */
|
|
||||||
'0', 0x00, /* wcChar10 */
|
|
||||||
'2', 0x00, /* wcChar11 */
|
|
||||||
'4', 0x00, /* wcChar12 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void usbd_event_handler(uint8_t busid, uint8_t event)
|
static void usbd_event_handler(uint8_t busid, uint8_t event)
|
||||||
{
|
{
|
||||||
@@ -294,14 +219,9 @@ void cherryadb_init(uint8_t busid, uint32_t reg_base)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &adb_descriptor);
|
usbd_desc_register(busid, &adb_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, adb_descriptor);
|
|
||||||
#endif
|
|
||||||
#ifndef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_msosv1_desc_register(busid, &msosv1_desc);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_adb_init_intf(busid, &intf0, WINUSB_IN_EP, WINUSB_OUT_EP));
|
usbd_add_interface(busid, usbd_adb_init_intf(busid, &intf0, WINUSB_IN_EP, WINUSB_OUT_EP));
|
||||||
usbd_initialize(busid, reg_base, usbd_event_handler);
|
usbd_initialize(busid, reg_base, usbd_event_handler);
|
||||||
}
|
}
|
||||||
@@ -69,7 +69,6 @@
|
|||||||
AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(IN_CHANNEL_NUM, 1) + \
|
AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(IN_CHANNEL_NUM, 1) + \
|
||||||
AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC)
|
AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC)
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
||||||
};
|
};
|
||||||
@@ -135,89 +134,6 @@ const struct usb_descriptor audio_v1_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t audio_v1_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
AUDIO_AC_DESCRIPTOR_INIT(0x00, 0x02, AUDIO_AC_SIZ, 0x00, 0x01),
|
|
||||||
AUDIO_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x01, AUDIO_INTERM_MIC, IN_CHANNEL_NUM, INPUT_CH_ENABLE),
|
|
||||||
AUDIO_AC_FEATURE_UNIT_DESCRIPTOR_INIT(AUDIO_IN_FU_ID, 0x01, 0x01, INPUT_CTRL),
|
|
||||||
AUDIO_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x03, AUDIO_TERMINAL_STREAMING, AUDIO_IN_FU_ID),
|
|
||||||
AUDIO_AS_DESCRIPTOR_INIT(0x01, 0x03, IN_CHANNEL_NUM, AUDIO_MIC_FRAME_SIZE_BYTE, AUDIO_MIC_RESOLUTION_BIT, AUDIO_IN_EP, 0x05, AUDIO_IN_PACKET, EP_INTERVAL, AUDIO_SAMPLE_FREQ_3B(AUDIO_MIC_FREQ)),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'U', 0x00, /* wcChar10 */
|
|
||||||
'A', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'0' + IN_CHANNEL_NUM, 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
volatile bool tx_flag = 0;
|
volatile bool tx_flag = 0;
|
||||||
volatile bool ep_tx_busy_flag = false;
|
volatile bool ep_tx_busy_flag = false;
|
||||||
@@ -306,11 +222,8 @@ struct audio_entity_info audio_entity_table[] = {
|
|||||||
|
|
||||||
void audio_v1_init(uint8_t busid, uintptr_t reg_base)
|
void audio_v1_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &audio_v1_descriptor);
|
usbd_desc_register(busid, &audio_v1_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, audio_v1_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf0, 0x0100, audio_entity_table, 1));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf0, 0x0100, audio_entity_table, 1));
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf1, 0x0100, audio_entity_table, 1));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf1, 0x0100, audio_entity_table, 1));
|
||||||
usbd_add_endpoint(busid, &audio_in_ep);
|
usbd_add_endpoint(busid, &audio_in_ep);
|
||||||
|
|||||||
@@ -131,7 +131,6 @@
|
|||||||
AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(OUT_CHANNEL_NUM, 1) + \
|
AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(OUT_CHANNEL_NUM, 1) + \
|
||||||
AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC)
|
AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC)
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
||||||
};
|
};
|
||||||
@@ -208,104 +207,6 @@ const struct usb_descriptor audio_v1_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t audio_v1_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x03, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
AUDIO_AC_DESCRIPTOR_INIT(0x00, 0x03, AUDIO_AC_SIZ, 0x00, 0x01, 0x02),
|
|
||||||
AUDIO_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x01, AUDIO_INTERM_MIC, IN_CHANNEL_NUM, INPUT_CH_ENABLE),
|
|
||||||
AUDIO_AC_FEATURE_UNIT_DESCRIPTOR_INIT(AUDIO_IN_FU_ID, 0x01, 0x01, INPUT_CTRL),
|
|
||||||
AUDIO_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x03, AUDIO_TERMINAL_STREAMING, AUDIO_IN_FU_ID),
|
|
||||||
AUDIO_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x04, AUDIO_TERMINAL_STREAMING, OUT_CHANNEL_NUM, OUTPUT_CH_ENABLE),
|
|
||||||
AUDIO_AC_FEATURE_UNIT_DESCRIPTOR_INIT(AUDIO_OUT_FU_ID, 0x04, 0x01, OUTPUT_CTRL),
|
|
||||||
AUDIO_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x06, AUDIO_OUTTERM_SPEAKER, AUDIO_OUT_FU_ID),
|
|
||||||
AUDIO_AS_DESCRIPTOR_INIT(0x01, 0x03, IN_CHANNEL_NUM, AUDIO_MIC_FRAME_SIZE_BYTE, AUDIO_MIC_RESOLUTION_BIT, AUDIO_IN_EP, 0x05, AUDIO_IN_PACKET,
|
|
||||||
EP_INTERVAL, AUDIO_SAMPLE_FREQ_3B(AUDIO_MIC_FREQ)),
|
|
||||||
#if USING_FEEDBACK == 0
|
|
||||||
AUDIO_AS_DESCRIPTOR_INIT(0x02, 0x04, OUT_CHANNEL_NUM, AUDIO_SPEAKER_FRAME_SIZE_BYTE, AUDIO_SPEAKER_RESOLUTION_BIT, AUDIO_OUT_EP, 0x09, AUDIO_OUT_PACKET,
|
|
||||||
EP_INTERVAL, AUDIO_SAMPLE_FREQ_3B(AUDIO_SPEAKER_FREQ)),
|
|
||||||
#else
|
|
||||||
AUDIO_AS_FEEDBACK_DESCRIPTOR_INIT(0x02, 0x04, OUT_CHANNEL_NUM, AUDIO_SPEAKER_FRAME_SIZE_BYTE, AUDIO_SPEAKER_RESOLUTION_BIT, AUDIO_OUT_EP, AUDIO_OUT_PACKET,
|
|
||||||
EP_INTERVAL, AUDIO_OUT_FEEDBACK_EP, AUDIO_SAMPLE_FREQ_3B(AUDIO_SPEAKER_FREQ)),
|
|
||||||
#endif
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'U', 0x00, /* wcChar10 */
|
|
||||||
'A', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
#if USING_FEEDBACK == 0
|
|
||||||
'1', 0x00, /* wcChar9 */
|
|
||||||
#else
|
|
||||||
'2', 0x00, /* wcChar9 */
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[AUDIO_OUT_PACKET];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[AUDIO_OUT_PACKET];
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[AUDIO_IN_PACKET];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[AUDIO_IN_PACKET];
|
||||||
@@ -453,11 +354,8 @@ struct audio_entity_info audio_entity_table[] = {
|
|||||||
|
|
||||||
void audio_v1_init(uint8_t busid, uintptr_t reg_base)
|
void audio_v1_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &audio_v1_descriptor);
|
usbd_desc_register(busid, &audio_v1_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, audio_v1_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf0, 0x0100, audio_entity_table, 2));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf0, 0x0100, audio_entity_table, 2));
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf1, 0x0100, audio_entity_table, 2));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf1, 0x0100, audio_entity_table, 2));
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf2, 0x0100, audio_entity_table, 2));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf2, 0x0100, audio_entity_table, 2));
|
||||||
|
|||||||
@@ -72,7 +72,6 @@
|
|||||||
AUDIO_V2_SIZEOF_AC_FEATURE_UNIT_DESC(IN_CHANNEL_NUM) + \
|
AUDIO_V2_SIZEOF_AC_FEATURE_UNIT_DESC(IN_CHANNEL_NUM) + \
|
||||||
AUDIO_V2_SIZEOF_AC_OUTPUT_TERMINAL_DESC)
|
AUDIO_V2_SIZEOF_AC_OUTPUT_TERMINAL_DESC)
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01)
|
||||||
};
|
};
|
||||||
@@ -139,90 +138,6 @@ const struct usb_descriptor audio_v2_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t audio_v2_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
AUDIO_V2_AC_DESCRIPTOR_INIT(0x00, 0x02, AUDIO_AC_SIZ, AUDIO_CATEGORY_MICROPHONE, 0x00, 0x00),
|
|
||||||
AUDIO_V2_AC_CLOCK_SOURCE_DESCRIPTOR_INIT(AUDIO_IN_CLOCK_ID, 0x03, 0x03),
|
|
||||||
AUDIO_V2_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x02, AUDIO_INTERM_MIC, AUDIO_IN_CLOCK_ID, IN_CHANNEL_NUM, INPUT_CH_ENABLE, 0x0000),
|
|
||||||
AUDIO_V2_AC_FEATURE_UNIT_DESCRIPTOR_INIT(AUDIO_IN_FU_ID, 0x02, INPUT_CTRL),
|
|
||||||
AUDIO_V2_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x04, AUDIO_TERMINAL_STREAMING, AUDIO_IN_FU_ID, AUDIO_IN_CLOCK_ID, 0x0000),
|
|
||||||
AUDIO_V2_AS_DESCRIPTOR_INIT(0x01, 0x04, IN_CHANNEL_NUM, INPUT_CH_ENABLE, AUDIO_MIC_FRAME_SIZE_BYTE, AUDIO_MIC_RESOLUTION_BIT, AUDIO_IN_EP, 0x05, (AUDIO_IN_PACKET + 4), EP_INTERVAL),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'U', 0x00, /* wcChar10 */
|
|
||||||
'A', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'1', 0x00, /* wcChar3 */
|
|
||||||
'0', 0x00, /* wcChar4 */
|
|
||||||
'3', 0x00, /* wcChar5 */
|
|
||||||
'1', 0x00, /* wcChar6 */
|
|
||||||
'0', 0x00, /* wcChar7 */
|
|
||||||
'0', 0x00, /* wcChar8 */
|
|
||||||
'4', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const uint8_t mic_default_sampling_freq_table[] = {
|
static const uint8_t mic_default_sampling_freq_table[] = {
|
||||||
AUDIO_SAMPLE_FREQ_NUM(5),
|
AUDIO_SAMPLE_FREQ_NUM(5),
|
||||||
@@ -339,11 +254,8 @@ struct audio_entity_info audio_entity_table[] = {
|
|||||||
|
|
||||||
void audio_v2_init(uint8_t busid, uintptr_t reg_base)
|
void audio_v2_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &audio_v2_descriptor);
|
usbd_desc_register(busid, &audio_v2_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, audio_v2_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf0, 0x0200, audio_entity_table, 2));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf0, 0x0200, audio_entity_table, 2));
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf1, 0x0200, audio_entity_table, 2));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf1, 0x0200, audio_entity_table, 2));
|
||||||
usbd_add_endpoint(busid, &audio_in_ep);
|
usbd_add_endpoint(busid, &audio_in_ep);
|
||||||
|
|||||||
@@ -138,7 +138,6 @@
|
|||||||
AUDIO_V2_SIZEOF_AC_FEATURE_UNIT_DESC(IN_CHANNEL_NUM) + \
|
AUDIO_V2_SIZEOF_AC_FEATURE_UNIT_DESC(IN_CHANNEL_NUM) + \
|
||||||
AUDIO_V2_SIZEOF_AC_OUTPUT_TERMINAL_DESC)
|
AUDIO_V2_SIZEOF_AC_OUTPUT_TERMINAL_DESC)
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01)
|
||||||
};
|
};
|
||||||
@@ -214,103 +213,6 @@ const struct usb_descriptor audio_v2_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
uint8_t audio_v2_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x03, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
AUDIO_V2_AC_DESCRIPTOR_INIT(0x00, 0x03, AUDIO_AC_SIZ, AUDIO_CATEGORY_UNDEF, 0x00, 0x00),
|
|
||||||
AUDIO_V2_AC_CLOCK_SOURCE_DESCRIPTOR_INIT(AUDIO_OUT_CLOCK_ID, 0x03, 0x03),
|
|
||||||
AUDIO_V2_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x02, AUDIO_TERMINAL_STREAMING, AUDIO_OUT_CLOCK_ID, OUT_CHANNEL_NUM, OUTPUT_CH_ENABLE, 0x0000),
|
|
||||||
AUDIO_V2_AC_FEATURE_UNIT_DESCRIPTOR_INIT(AUDIO_OUT_FU_ID, 0x02, OUTPUT_CTRL),
|
|
||||||
AUDIO_V2_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x04, AUDIO_OUTTERM_SPEAKER, AUDIO_OUT_FU_ID, AUDIO_OUT_CLOCK_ID, 0x0000),
|
|
||||||
AUDIO_V2_AC_CLOCK_SOURCE_DESCRIPTOR_INIT(AUDIO_IN_CLOCK_ID, 0x03, 0x03),
|
|
||||||
AUDIO_V2_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x06, AUDIO_INTERM_MIC, AUDIO_IN_CLOCK_ID, IN_CHANNEL_NUM, INPUT_CH_ENABLE, 0x0000),
|
|
||||||
AUDIO_V2_AC_FEATURE_UNIT_DESCRIPTOR_INIT(AUDIO_IN_FU_ID, 0x06, INPUT_CTRL),
|
|
||||||
AUDIO_V2_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x08, AUDIO_TERMINAL_STREAMING, AUDIO_IN_FU_ID, AUDIO_IN_CLOCK_ID, 0x0000),
|
|
||||||
#if USING_FEEDBACK == 0
|
|
||||||
AUDIO_V2_AS_DESCRIPTOR_INIT(0x01, 0x02, OUT_CHANNEL_NUM, OUTPUT_CH_ENABLE, AUDIO_SPEAKER_FRAME_SIZE_BYTE, AUDIO_SPEAKER_RESOLUTION_BIT, AUDIO_OUT_EP, 0x09, AUDIO_OUT_PACKET, EP_INTERVAL),
|
|
||||||
#else
|
|
||||||
AUDIO_V2_AS_FEEDBACK_DESCRIPTOR_INIT(0x01, 0x02, OUT_CHANNEL_NUM, OUTPUT_CH_ENABLE, AUDIO_SPEAKER_FRAME_SIZE_BYTE, AUDIO_SPEAKER_RESOLUTION_BIT, AUDIO_OUT_EP, 0x09, AUDIO_OUT_PACKET, EP_INTERVAL, AUDIO_OUT_FEEDBACK_EP),
|
|
||||||
#endif
|
|
||||||
AUDIO_V2_AS_DESCRIPTOR_INIT(0x02, 0x08, IN_CHANNEL_NUM, INPUT_CH_ENABLE, AUDIO_MIC_FRAME_SIZE_BYTE, AUDIO_MIC_RESOLUTION_BIT, AUDIO_IN_EP, 0x05, (AUDIO_IN_PACKET + 4), EP_INTERVAL),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'U', 0x00, /* wcChar10 */
|
|
||||||
'A', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'1', 0x00, /* wcChar3 */
|
|
||||||
'0', 0x00, /* wcChar4 */
|
|
||||||
'3', 0x00, /* wcChar5 */
|
|
||||||
'1', 0x00, /* wcChar6 */
|
|
||||||
'0', 0x00, /* wcChar7 */
|
|
||||||
'0', 0x00, /* wcChar8 */
|
|
||||||
#if USING_FEEDBACK == 0
|
|
||||||
'3', 0x00, /* wcChar9 */
|
|
||||||
#else
|
|
||||||
'4', 0x00, /* wcChar9 */
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const uint8_t speaker_default_sampling_freq_table[] = {
|
static const uint8_t speaker_default_sampling_freq_table[] = {
|
||||||
AUDIO_SAMPLE_FREQ_NUM(5),
|
AUDIO_SAMPLE_FREQ_NUM(5),
|
||||||
@@ -519,11 +421,8 @@ struct audio_entity_info audio_entity_table[] = {
|
|||||||
|
|
||||||
void audio_v2_init(uint8_t busid, uintptr_t reg_base)
|
void audio_v2_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &audio_v2_descriptor);
|
usbd_desc_register(busid, &audio_v2_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, audio_v2_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf0, 0x0200, audio_entity_table, 4));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf0, 0x0200, audio_entity_table, 4));
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf1, 0x0200, audio_entity_table, 4));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf1, 0x0200, audio_entity_table, 4));
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf2, 0x0200, audio_entity_table, 4));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf2, 0x0200, audio_entity_table, 4));
|
||||||
|
|||||||
@@ -87,7 +87,6 @@
|
|||||||
AUDIO_V2_SIZEOF_AC_FEATURE_UNIT_DESC(OUT_CHANNEL_NUM) + \
|
AUDIO_V2_SIZEOF_AC_FEATURE_UNIT_DESC(OUT_CHANNEL_NUM) + \
|
||||||
AUDIO_V2_SIZEOF_AC_OUTPUT_TERMINAL_DESC)
|
AUDIO_V2_SIZEOF_AC_OUTPUT_TERMINAL_DESC)
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01)
|
||||||
};
|
};
|
||||||
@@ -158,98 +157,6 @@ const struct usb_descriptor audio_v2_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t audio_v2_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
AUDIO_V2_AC_DESCRIPTOR_INIT(0x00, 0x02, AUDIO_AC_SIZ, AUDIO_CATEGORY_SPEAKER, 0x00, 0x00),
|
|
||||||
AUDIO_V2_AC_CLOCK_SOURCE_DESCRIPTOR_INIT(AUDIO_OUT_CLOCK_ID, 0x03, 0x03),
|
|
||||||
AUDIO_V2_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x02, AUDIO_TERMINAL_STREAMING, AUDIO_OUT_CLOCK_ID, OUT_CHANNEL_NUM, OUTPUT_CH_ENABLE, 0x0000),
|
|
||||||
AUDIO_V2_AC_FEATURE_UNIT_DESCRIPTOR_INIT(AUDIO_OUT_FU_ID, 0x02, OUTPUT_CTRL),
|
|
||||||
AUDIO_V2_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x04, AUDIO_OUTTERM_SPEAKER, AUDIO_OUT_FU_ID, AUDIO_OUT_CLOCK_ID, 0x0000),
|
|
||||||
#if USING_FEEDBACK == 0
|
|
||||||
AUDIO_V2_AS_DESCRIPTOR_INIT(0x01, 0x02, OUT_CHANNEL_NUM, OUTPUT_CH_ENABLE, HALF_WORD_BYTES, SAMPLE_BITS, AUDIO_OUT_EP, 0x09, AUDIO_OUT_PACKET, EP_INTERVAL),
|
|
||||||
#else
|
|
||||||
AUDIO_V2_AS_FEEDBACK_DESCRIPTOR_INIT(0x01, 0x02, OUT_CHANNEL_NUM, OUTPUT_CH_ENABLE, HALF_WORD_BYTES, SAMPLE_BITS, AUDIO_OUT_EP, AUDIO_OUT_PACKET, EP_INTERVAL, AUDIO_OUT_FEEDBACK_EP),
|
|
||||||
#endif
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'U', 0x00, /* wcChar10 */
|
|
||||||
'A', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'1', 0x00, /* wcChar3 */
|
|
||||||
'0', 0x00, /* wcChar4 */
|
|
||||||
'3', 0x00, /* wcChar5 */
|
|
||||||
'1', 0x00, /* wcChar6 */
|
|
||||||
'0', 0x00, /* wcChar7 */
|
|
||||||
'0', 0x00, /* wcChar8 */
|
|
||||||
#if USING_FEEDBACK == 0
|
|
||||||
'3', 0x00, /* wcChar9 */
|
|
||||||
#else
|
|
||||||
'4', 0x00, /* wcChar9 */
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const uint8_t default_sampling_freq_table[] = {
|
static const uint8_t default_sampling_freq_table[] = {
|
||||||
AUDIO_SAMPLE_FREQ_NUM(5),
|
AUDIO_SAMPLE_FREQ_NUM(5),
|
||||||
@@ -401,11 +308,8 @@ struct audio_entity_info audio_entity_table[] = {
|
|||||||
|
|
||||||
void audio_v2_init(uint8_t busid, uintptr_t reg_base)
|
void audio_v2_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &audio_v2_descriptor);
|
usbd_desc_register(busid, &audio_v2_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, audio_v2_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf0, 0x0200, audio_entity_table, 2));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf0, 0x0200, audio_entity_table, 2));
|
||||||
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf1, 0x0200, audio_entity_table, 2));
|
usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf1, 0x0200, audio_entity_table, 2));
|
||||||
usbd_add_endpoint(busid, &audio_out_ep);
|
usbd_add_endpoint(busid, &audio_out_ep);
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
#define MSC_MAX_MPS 64
|
#define MSC_MAX_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01)
|
||||||
};
|
};
|
||||||
@@ -85,85 +84,6 @@ const struct usb_descriptor msc_bootuf2_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t msc_bootuf2_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x01, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
MSC_DESCRIPTOR_INIT(0x00, MSC_OUT_EP, MSC_IN_EP, MSC_MAX_MPS, 0x02),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'U', 0x00, /* wcChar10 */
|
|
||||||
'F', 0x00, /* wcChar11 */
|
|
||||||
'2', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void usbd_event_handler(uint8_t busid, uint8_t event)
|
static void usbd_event_handler(uint8_t busid, uint8_t event)
|
||||||
{
|
{
|
||||||
@@ -215,11 +135,9 @@ static struct usbd_interface intf0;
|
|||||||
void msc_bootuf2_init(uint8_t busid, uintptr_t reg_base)
|
void msc_bootuf2_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
boot2uf2_flash_init();
|
boot2uf2_flash_init();
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &msc_bootuf2_descriptor);
|
usbd_desc_register(busid, &msc_bootuf2_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, msc_bootuf2_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_msc_init_intf(busid, &intf0, MSC_OUT_EP, MSC_IN_EP));
|
usbd_add_interface(busid, usbd_msc_init_intf(busid, &intf0, MSC_OUT_EP, MSC_IN_EP));
|
||||||
|
|
||||||
usbd_initialize(busid, reg_base, usbd_event_handler);
|
usbd_initialize(busid, reg_base, usbd_event_handler);
|
||||||
|
|||||||
@@ -43,7 +43,6 @@
|
|||||||
#define MSC_MAX_MPS 64
|
#define MSC_MAX_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01)
|
||||||
};
|
};
|
||||||
@@ -107,87 +106,6 @@ const struct usb_descriptor cdc_acm_hid_msc_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t cdc_acm_hid_msc_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x04, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
CDC_ACM_DESCRIPTOR_INIT(0x00, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP, CDC_MAX_MPS, 0x02),
|
|
||||||
MSC_DESCRIPTOR_INIT(0x02, MSC_OUT_EP, MSC_IN_EP, MSC_MAX_MPS, 0x02),
|
|
||||||
HID_MOUSE_DESCRIPTOR_INIT(0x03, 0x01, HID_MOUSE_REPORT_DESC_SIZE, HID_INT_EP, HID_INT_EP_SIZE, HID_INT_EP_INTERVAL),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'C', 0x00, /* wcChar10 */
|
|
||||||
'M', 0x00, /* wcChar11 */
|
|
||||||
'H', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*!< hid mouse report descriptor */
|
/*!< hid mouse report descriptor */
|
||||||
static const uint8_t hid_mouse_report_desc[HID_MOUSE_REPORT_DESC_SIZE] = {
|
static const uint8_t hid_mouse_report_desc[HID_MOUSE_REPORT_DESC_SIZE] = {
|
||||||
@@ -339,11 +257,8 @@ struct usbd_interface intf3;
|
|||||||
|
|
||||||
void cdc_acm_hid_msc_descriptor_init(uint8_t busid, uintptr_t reg_base)
|
void cdc_acm_hid_msc_descriptor_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &cdc_acm_hid_msc_descriptor);
|
usbd_desc_register(busid, &cdc_acm_hid_msc_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, cdc_acm_hid_msc_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
||||||
usbd_add_endpoint(busid, &cdc_out_ep);
|
usbd_add_endpoint(busid, &cdc_out_ep);
|
||||||
|
|||||||
@@ -27,7 +27,6 @@
|
|||||||
#define CDC_MAX_MPS 64
|
#define CDC_MAX_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
||||||
};
|
};
|
||||||
@@ -89,86 +88,6 @@ const struct usb_descriptor cdc_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
static const uint8_t cdc_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
CDC_ACM_DESCRIPTOR_INIT(0x00, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP, CDC_MAX_MPS, 0x02),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'C', 0x00, /* wcChar10 */
|
|
||||||
'D', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
chry_ringbuffer_t usb_rx_rb;
|
chry_ringbuffer_t usb_rx_rb;
|
||||||
uint8_t usb_rx_buffer[2048];
|
uint8_t usb_rx_buffer[2048];
|
||||||
@@ -243,11 +162,9 @@ static struct usbd_interface intf1;
|
|||||||
void cdc_acm_mavlink_init(uint8_t busid, uintptr_t reg_base)
|
void cdc_acm_mavlink_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
chry_ringbuffer_init(&usb_rx_rb, usb_rx_buffer, sizeof(usb_rx_buffer));
|
chry_ringbuffer_init(&usb_rx_rb, usb_rx_buffer, sizeof(usb_rx_buffer));
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &cdc_descriptor);
|
usbd_desc_register(busid, &cdc_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, cdc_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
||||||
usbd_add_endpoint(busid, &cdc_out_ep);
|
usbd_add_endpoint(busid, &cdc_out_ep);
|
||||||
|
|||||||
@@ -35,7 +35,6 @@
|
|||||||
#define MSC_MAX_MPS 64
|
#define MSC_MAX_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
||||||
};
|
};
|
||||||
@@ -98,87 +97,6 @@ const struct usb_descriptor cdc_msc_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
static const uint8_t cdc_msc_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x03, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
CDC_ACM_DESCRIPTOR_INIT(0x00, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP, CDC_MAX_MPS, 0x02),
|
|
||||||
MSC_DESCRIPTOR_INIT(0x02, MSC_OUT_EP, MSC_IN_EP, MSC_MAX_MPS, 0x00),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'C', 0x00, /* wcChar10 */
|
|
||||||
'-', 0x00, /* wcChar11 */
|
|
||||||
'M', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048]; /* 2048 is only for test speed , please use CDC_MAX_MPS for common*/
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048]; /* 2048 is only for test speed , please use CDC_MAX_MPS for common*/
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
||||||
@@ -249,11 +167,8 @@ struct usbd_interface intf2;
|
|||||||
|
|
||||||
void cdc_acm_msc_init(uint8_t busid, uintptr_t reg_base)
|
void cdc_acm_msc_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &cdc_msc_descriptor);
|
usbd_desc_register(busid, &cdc_msc_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, cdc_msc_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
||||||
usbd_add_endpoint(busid, &cdc_out_ep);
|
usbd_add_endpoint(busid, &cdc_out_ep);
|
||||||
|
|||||||
@@ -37,7 +37,6 @@
|
|||||||
#define CDC_MAX_MPS 64
|
#define CDC_MAX_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
||||||
};
|
};
|
||||||
@@ -102,89 +101,6 @@ const struct usb_descriptor cdc_multi_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
static const uint8_t cdc_multi_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x08, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
CDC_ACM_DESCRIPTOR_INIT(0x00, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP, CDC_MAX_MPS, 0x02),
|
|
||||||
CDC_ACM_DESCRIPTOR_INIT(0x02, CDC_INT_EP2, CDC_OUT_EP2, CDC_IN_EP2, CDC_MAX_MPS, 0x02),
|
|
||||||
CDC_ACM_DESCRIPTOR_INIT(0x04, CDC_INT_EP3, CDC_OUT_EP3, CDC_IN_EP3, CDC_MAX_MPS, 0x02),
|
|
||||||
CDC_ACM_DESCRIPTOR_INIT(0x06, CDC_INT_EP4, CDC_OUT_EP4, CDC_IN_EP4, CDC_MAX_MPS, 0x02),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'C', 0x00, /* wcChar10 */
|
|
||||||
'D', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[4][2048];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[4][2048];
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[4][2048];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[4][2048];
|
||||||
@@ -292,11 +208,8 @@ struct usbd_interface intf7;
|
|||||||
|
|
||||||
void cdc_acm_multi_init(uint8_t busid, uintptr_t reg_base)
|
void cdc_acm_multi_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &cdc_multi_descriptor);
|
usbd_desc_register(busid, &cdc_multi_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, cdc_multi_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
||||||
usbd_add_endpoint(busid, &cdc_out_ep1);
|
usbd_add_endpoint(busid, &cdc_out_ep1);
|
||||||
|
|||||||
@@ -25,7 +25,6 @@
|
|||||||
#define CDC_MAX_MPS 64
|
#define CDC_MAX_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
||||||
};
|
};
|
||||||
@@ -87,86 +86,6 @@ const struct usb_descriptor cdc_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
static const uint8_t cdc_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
CDC_ACM_DESCRIPTOR_INIT(0x00, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP, CDC_MAX_MPS, 0x02),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'C', 0x00, /* wcChar10 */
|
|
||||||
'D', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void usbd_event_handler(uint8_t busid, uint8_t event)
|
static void usbd_event_handler(uint8_t busid, uint8_t event)
|
||||||
{
|
{
|
||||||
@@ -198,11 +117,8 @@ extern void usbd_cdc_acm_serial_init(uint8_t busid, uint8_t in_ep, uint8_t out_e
|
|||||||
|
|
||||||
void cdc_acm_chardev_init(uint8_t busid, uintptr_t reg_base)
|
void cdc_acm_chardev_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &cdc_descriptor);
|
usbd_desc_register(busid, &cdc_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, cdc_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_cdc_acm_serial_init(busid, CDC_IN_EP, CDC_OUT_EP);
|
usbd_cdc_acm_serial_init(busid, CDC_IN_EP, CDC_OUT_EP);
|
||||||
usbd_initialize(busid, reg_base, usbd_event_handler);
|
usbd_initialize(busid, reg_base, usbd_event_handler);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,6 @@
|
|||||||
#define CDC_MAX_MPS 64
|
#define CDC_MAX_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
||||||
};
|
};
|
||||||
@@ -87,86 +86,6 @@ const struct usb_descriptor cdc_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
static const uint8_t cdc_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
CDC_ACM_DESCRIPTOR_INIT(0x00, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP, CDC_MAX_MPS, 0x02),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'C', 0x00, /* wcChar10 */
|
|
||||||
'D', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048]; /* 2048 is only for test speed , please use CDC_MAX_MPS for common*/
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048]; /* 2048 is only for test speed , please use CDC_MAX_MPS for common*/
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
||||||
@@ -245,11 +164,8 @@ void cdc_acm_init(uint8_t busid, uintptr_t reg_base)
|
|||||||
memcpy(&write_buffer[0], data, 10);
|
memcpy(&write_buffer[0], data, 10);
|
||||||
memset(&write_buffer[10], 'a', 2038);
|
memset(&write_buffer[10], 'a', 2038);
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &cdc_descriptor);
|
usbd_desc_register(busid, &cdc_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, cdc_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
||||||
usbd_add_endpoint(busid, &cdc_out_ep);
|
usbd_add_endpoint(busid, &cdc_out_ep);
|
||||||
|
|||||||
@@ -32,7 +32,6 @@
|
|||||||
/* str idx = 4 is for mac address: aa:bb:cc:dd:ee:ff*/
|
/* str idx = 4 is for mac address: aa:bb:cc:dd:ee:ff*/
|
||||||
#define CDC_ECM_MAC_STRING_INDEX 4
|
#define CDC_ECM_MAC_STRING_INDEX 4
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
||||||
};
|
};
|
||||||
@@ -95,107 +94,6 @@ const struct usb_descriptor cdc_ecm_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
static const uint8_t cdc_ecm_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
CDC_ECM_DESCRIPTOR_INIT(0x00, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP, CDC_MAX_MPS, CDC_ECM_MAC_STRING_INDEX),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x2E, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'C', 0x00, /* wcChar10 */
|
|
||||||
'D', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'E', 0x00, /* wcChar14 */
|
|
||||||
'C', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
' ', 0x00, /* wcChar17 */
|
|
||||||
'D', 0x00, /* wcChar18 */
|
|
||||||
'E', 0x00, /* wcChar19 */
|
|
||||||
'M', 0x00, /* wcChar20 */
|
|
||||||
'O', 0x00, /* wcChar21 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string4 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x1A, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'a', 0x00, /* wcChar0 */
|
|
||||||
'a', 0x00, /* wcChar1 */
|
|
||||||
'b', 0x00, /* wcChar2 */
|
|
||||||
'b', 0x00, /* wcChar3 */
|
|
||||||
'c', 0x00, /* wcChar4 */
|
|
||||||
'c', 0x00, /* wcChar5 */
|
|
||||||
'd', 0x00, /* wcChar6 */
|
|
||||||
'd', 0x00, /* wcChar7 */
|
|
||||||
'e', 0x00, /* wcChar8 */
|
|
||||||
'e', 0x00, /* wcChar9 */
|
|
||||||
'f', 0x00, /* wcChar10 */
|
|
||||||
'f', 0x00, /* wcChar11 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const uint8_t mac[6] = { 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff };
|
const uint8_t mac[6] = { 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff };
|
||||||
|
|
||||||
@@ -459,11 +357,8 @@ void cdc_ecm_init(uint8_t busid, uintptr_t reg_base)
|
|||||||
{
|
{
|
||||||
cdc_ecm_lwip_init();
|
cdc_ecm_lwip_init();
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &cdc_ecm_descriptor);
|
usbd_desc_register(busid, &cdc_ecm_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, cdc_ecm_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_cdc_ecm_init_intf(&intf0, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP));
|
usbd_add_interface(busid, usbd_cdc_ecm_init_intf(&intf0, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP));
|
||||||
usbd_add_interface(busid, usbd_cdc_ecm_init_intf(&intf1, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP));
|
usbd_add_interface(busid, usbd_cdc_ecm_init_intf(&intf1, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP));
|
||||||
usbd_initialize(busid, reg_base, usbd_event_handler);
|
usbd_initialize(busid, reg_base, usbd_event_handler);
|
||||||
|
|||||||
@@ -29,7 +29,6 @@
|
|||||||
#define CDC_MAX_MPS 64
|
#define CDC_MAX_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
||||||
};
|
};
|
||||||
@@ -91,88 +90,6 @@ const struct usb_descriptor cdc_rndis_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
static const uint8_t cdc_rndis_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
CDC_RNDIS_DESCRIPTOR_INIT(0x00, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP, CDC_MAX_MPS, 0x02),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x2A, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'R', 0x00, /* wcChar10 */
|
|
||||||
'N', 0x00, /* wcChar11 */
|
|
||||||
'D', 0x00, /* wcChar12 */
|
|
||||||
'I', 0x00, /* wcChar13 */
|
|
||||||
'S', 0x00, /* wcChar14 */
|
|
||||||
' ', 0x00, /* wcChar15 */
|
|
||||||
'D', 0x00, /* wcChar16 */
|
|
||||||
'E', 0x00, /* wcChar17 */
|
|
||||||
'M', 0x00, /* wcChar18 */
|
|
||||||
'O', 0x00, /* wcChar19 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const uint8_t mac[6] = { 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff };
|
const uint8_t mac[6] = { 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff };
|
||||||
|
|
||||||
@@ -438,11 +355,8 @@ void cdc_rndis_init(uint8_t busid, uintptr_t reg_base)
|
|||||||
{
|
{
|
||||||
rndis_lwip_init();
|
rndis_lwip_init();
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &cdc_rndis_descriptor);
|
usbd_desc_register(busid, &cdc_rndis_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, cdc_rndis_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_rndis_init_intf(&intf0, CDC_OUT_EP, CDC_IN_EP, CDC_INT_EP, (uint8_t *)mac));
|
usbd_add_interface(busid, usbd_rndis_init_intf(&intf0, CDC_OUT_EP, CDC_IN_EP, CDC_INT_EP, (uint8_t *)mac));
|
||||||
usbd_add_interface(busid, usbd_rndis_init_intf(&intf1, CDC_OUT_EP, CDC_IN_EP, CDC_INT_EP, (uint8_t *)mac));
|
usbd_add_interface(busid, usbd_rndis_init_intf(&intf1, CDC_OUT_EP, CDC_IN_EP, CDC_INT_EP, (uint8_t *)mac));
|
||||||
usbd_initialize(busid, reg_base, usbd_event_handler);
|
usbd_initialize(busid, reg_base, usbd_event_handler);
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
|
|
||||||
#define USB_CONFIG_SIZE (9 + 9 + 9)
|
#define USB_CONFIG_SIZE (9 + 9 + 9)
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01)
|
||||||
};
|
};
|
||||||
@@ -77,134 +76,6 @@ const struct usb_descriptor dfu_flash_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t dfu_flash_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x01, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
DFU_DESCRIPTOR_INIT(),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x1e, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'D', 0x00, /* wcChar0 */
|
|
||||||
'F', 0x00, /* wcChar1 */
|
|
||||||
'U', 0x00, /* wcChar2 */
|
|
||||||
'W', 0x00, /* wcChar3 */
|
|
||||||
'i', 0x00, /* wcChar4 */
|
|
||||||
't', 0x00, /* wcChar5 */
|
|
||||||
'h', 0x00, /* wcChar6 */
|
|
||||||
's', 0x00, /* wcChar7 */
|
|
||||||
't', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
't', 0x00, /* wcChar10 */
|
|
||||||
'o', 0x00, /* wcChar11 */
|
|
||||||
'o', 0x00, /* wcChar12 */
|
|
||||||
'l', 0x00, /* wcChar13 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string4 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x60, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'@', 0x00, /* wcChar0 */
|
|
||||||
'I', 0x00, /* wcChar1 */
|
|
||||||
'n', 0x00, /* wcChar2 */
|
|
||||||
't', 0x00, /* wcChar3 */
|
|
||||||
'e', 0x00, /* wcChar4 */
|
|
||||||
'r', 0x00, /* wcChar5 */
|
|
||||||
'n', 0x00, /* wcChar6 */
|
|
||||||
'a', 0x00, /* wcChar7 */
|
|
||||||
'l', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'F', 0x00, /* wcChar10 */
|
|
||||||
'l', 0x00, /* wcChar11*/
|
|
||||||
'a', 0x00, /* wcChar12 */
|
|
||||||
's', 0x00, /* wcChar13 */
|
|
||||||
'h', 0x00, /* wcChar14 */
|
|
||||||
' ', 0x00, /* wcChar15 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
' ', 0x00, /* wcChar17 */
|
|
||||||
'/', 0x00, /* wcChar18 */
|
|
||||||
'0', 0x00, /* wcChar19 */
|
|
||||||
'x', 0x00, /* wcChar20 */
|
|
||||||
'0', 0x00, /* wcChar21*/
|
|
||||||
'8', 0x00, /* wcChar22 */
|
|
||||||
'0', 0x00, /* wcChar23 */
|
|
||||||
'0', 0x00, /* wcChar24 */
|
|
||||||
'0', 0x00, /* wcChar25 */
|
|
||||||
'0', 0x00, /* wcChar26 */
|
|
||||||
'0', 0x00, /* wcChar27 */
|
|
||||||
'0', 0x00, /* wcChar28 */
|
|
||||||
'/', 0x00, /* wcChar29 */
|
|
||||||
'1', 0x00, /* wcChar30 */
|
|
||||||
'6', 0x00, /* wcChar31*/
|
|
||||||
'*', 0x00, /* wcChar32 */
|
|
||||||
'0', 0x00, /* wcChar33 */
|
|
||||||
'0', 0x00, /* wcChar34 */
|
|
||||||
'1', 0x00, /* wcChar35 */
|
|
||||||
'K', 0x00, /* wcChar36 */
|
|
||||||
'a', 0x00, /* wcChar37 */
|
|
||||||
',', 0x00, /* wcChar38 */
|
|
||||||
'1', 0x00, /* wcChar39 */
|
|
||||||
'1', 0x00, /* wcChar40 */
|
|
||||||
'2', 0x00, /* wcChar41*/
|
|
||||||
'*', 0x00, /* wcChar42 */
|
|
||||||
'0', 0x00, /* wcChar43 */
|
|
||||||
'1', 0x00, /* wcChar44 */
|
|
||||||
'K', 0x00, /* wcChar45 */
|
|
||||||
'g', 0x00, /* wcChar46 */
|
|
||||||
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void usbd_event_handler(uint8_t busid, uint8_t event)
|
static void usbd_event_handler(uint8_t busid, uint8_t event)
|
||||||
{
|
{
|
||||||
@@ -235,11 +106,8 @@ struct usbd_interface intf0;
|
|||||||
|
|
||||||
void dfu_flash_init(uint8_t busid, uintptr_t reg_base)
|
void dfu_flash_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &dfu_flash_descriptor);
|
usbd_desc_register(busid, &dfu_flash_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, dfu_flash_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_dfu_init_intf(&intf0));
|
usbd_add_interface(busid, usbd_dfu_init_intf(&intf0));
|
||||||
usbd_initialize(busid, reg_base, usbd_event_handler);
|
usbd_initialize(busid, reg_base, usbd_event_handler);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
#define HIDRAW_IN_INTERVAL 1
|
#define HIDRAW_IN_INTERVAL 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01)
|
||||||
};
|
};
|
||||||
@@ -92,86 +91,6 @@ const struct usb_descriptor hid_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
static const uint8_t hid_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x01, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
HID_CUSTOM_INOUT_DESCRIPTOR_INIT(0x00, 0x01, HID_CUSTOM_REPORT_DESC_SIZE, HIDRAW_OUT_EP, HIDRAW_IN_EP, HID_MAX_MPS, HIDRAW_IN_INTERVAL),
|
|
||||||
/*
|
|
||||||
* string0 descriptor
|
|
||||||
*/
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
/*
|
|
||||||
* string1 descriptor
|
|
||||||
*/
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
/*
|
|
||||||
* string2 descriptor
|
|
||||||
*/
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'H', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'D', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
/*
|
|
||||||
* string3 descriptor
|
|
||||||
*/
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
/*
|
|
||||||
* device qualifier descriptor
|
|
||||||
*/
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*!< custom hid report descriptor */
|
/*!< custom hid report descriptor */
|
||||||
static const uint8_t hid_custom_report_desc[HID_CUSTOM_REPORT_DESC_SIZE] = {
|
static const uint8_t hid_custom_report_desc[HID_CUSTOM_REPORT_DESC_SIZE] = {
|
||||||
@@ -295,11 +214,8 @@ struct usbd_interface intf0;
|
|||||||
|
|
||||||
void hid_custom_init(uint8_t busid, uintptr_t reg_base)
|
void hid_custom_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &hid_descriptor);
|
usbd_desc_register(busid, &hid_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, hid_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_hid_init_intf(busid, &intf0, hid_custom_report_desc, HID_CUSTOM_REPORT_DESC_SIZE));
|
usbd_add_interface(busid, usbd_hid_init_intf(busid, &intf0, hid_custom_report_desc, HID_CUSTOM_REPORT_DESC_SIZE));
|
||||||
usbd_add_endpoint(busid, &custom_in_ep);
|
usbd_add_endpoint(busid, &custom_in_ep);
|
||||||
usbd_add_endpoint(busid, &custom_out_ep);
|
usbd_add_endpoint(busid, &custom_out_ep);
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
#define USB_CONFIG_SIZE 34
|
#define USB_CONFIG_SIZE 34
|
||||||
#define HID_KEYBOARD_REPORT_DESC_SIZE 63
|
#define HID_KEYBOARD_REPORT_DESC_SIZE 63
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01)
|
||||||
};
|
};
|
||||||
@@ -80,85 +79,6 @@ const struct usb_descriptor hid_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
static const uint8_t hid_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x01, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
HID_KEYBOARD_DESCRIPTOR_INIT(0x00, 0x01, HID_KEYBOARD_REPORT_DESC_SIZE, HID_INT_EP, HID_INT_EP_SIZE, HID_INT_EP_INTERVAL),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'H', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'D', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* USB HID device Configuration Descriptor */
|
/* USB HID device Configuration Descriptor */
|
||||||
static uint8_t hid_desc[9] __ALIGN_END = {
|
static uint8_t hid_desc[9] __ALIGN_END = {
|
||||||
@@ -255,11 +175,8 @@ struct usbd_interface intf0;
|
|||||||
|
|
||||||
void hid_keyboard_init(uint8_t busid, uintptr_t reg_base)
|
void hid_keyboard_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &hid_descriptor);
|
usbd_desc_register(busid, &hid_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, hid_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_hid_init_intf(busid, &intf0, hid_keyboard_report_desc, HID_KEYBOARD_REPORT_DESC_SIZE));
|
usbd_add_interface(busid, usbd_hid_init_intf(busid, &intf0, hid_keyboard_report_desc, HID_KEYBOARD_REPORT_DESC_SIZE));
|
||||||
usbd_add_endpoint(busid, &hid_in_ep);
|
usbd_add_endpoint(busid, &hid_in_ep);
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
/*!< report descriptor size */
|
/*!< report descriptor size */
|
||||||
#define HID_MOUSE_REPORT_DESC_SIZE 74
|
#define HID_MOUSE_REPORT_DESC_SIZE 74
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01)
|
||||||
};
|
};
|
||||||
@@ -83,86 +82,6 @@ const struct usb_descriptor hid_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
const uint8_t hid_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x01, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
HID_MOUSE_DESCRIPTOR_INIT(0x00, 0x01, HID_MOUSE_REPORT_DESC_SIZE, HID_INT_EP, HID_INT_EP_SIZE, HID_INT_EP_INTERVAL),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'H', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'D', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*!< hid mouse report descriptor */
|
/*!< hid mouse report descriptor */
|
||||||
static const uint8_t hid_mouse_report_desc[HID_MOUSE_REPORT_DESC_SIZE] = {
|
static const uint8_t hid_mouse_report_desc[HID_MOUSE_REPORT_DESC_SIZE] = {
|
||||||
@@ -273,11 +192,8 @@ struct usbd_interface intf0;
|
|||||||
|
|
||||||
void hid_mouse_init(uint8_t busid, uintptr_t reg_base)
|
void hid_mouse_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &hid_descriptor);
|
usbd_desc_register(busid, &hid_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, hid_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_hid_init_intf(busid, &intf0, hid_mouse_report_desc, HID_MOUSE_REPORT_DESC_SIZE));
|
usbd_add_interface(busid, usbd_hid_init_intf(busid, &intf0, hid_mouse_report_desc, HID_MOUSE_REPORT_DESC_SIZE));
|
||||||
usbd_add_endpoint(busid, &hid_in_ep);
|
usbd_add_endpoint(busid, &hid_in_ep);
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
/*!< report descriptor size */
|
/*!< report descriptor size */
|
||||||
#define HID_MOUSE_REPORT_DESC_SIZE 74
|
#define HID_MOUSE_REPORT_DESC_SIZE 74
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01)
|
||||||
};
|
};
|
||||||
@@ -83,86 +82,6 @@ const struct usb_descriptor hid_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
const uint8_t hid_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x01, 0x01, USB_CONFIG_REMOTE_WAKEUP | USB_CONFIG_SELF_POWERED, USBD_MAX_POWER),
|
|
||||||
HID_MOUSE_DESCRIPTOR_INIT(0x00, 0x01, HID_MOUSE_REPORT_DESC_SIZE, HID_INT_EP, HID_INT_EP_SIZE, HID_INT_EP_INTERVAL),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'H', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'D', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*!< hid mouse report descriptor */
|
/*!< hid mouse report descriptor */
|
||||||
static const uint8_t hid_mouse_report_desc[HID_MOUSE_REPORT_DESC_SIZE] = {
|
static const uint8_t hid_mouse_report_desc[HID_MOUSE_REPORT_DESC_SIZE] = {
|
||||||
@@ -273,11 +192,8 @@ static struct usbd_interface intf0;
|
|||||||
|
|
||||||
void hid_mouse_init(uint8_t busid, uintptr_t reg_base)
|
void hid_mouse_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &hid_descriptor);
|
usbd_desc_register(busid, &hid_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, hid_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_hid_init_intf(busid, &intf0, hid_mouse_report_desc, HID_MOUSE_REPORT_DESC_SIZE));
|
usbd_add_interface(busid, usbd_hid_init_intf(busid, &intf0, hid_mouse_report_desc, HID_MOUSE_REPORT_DESC_SIZE));
|
||||||
usbd_add_endpoint(busid, &hid_in_ep);
|
usbd_add_endpoint(busid, &hid_in_ep);
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,6 @@
|
|||||||
#define MIDI_EP_MPS 64
|
#define MIDI_EP_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0100, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0100, 0x01)
|
||||||
};
|
};
|
||||||
@@ -100,96 +99,6 @@ const struct usb_descriptor midi_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t midi_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0100, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
AUDIO_AC_DESCRIPTOR_INIT(0x00, 0x02, AUDIO_AC_SIZ, 0x00, 0x01),
|
|
||||||
MIDI_STANDARD_DESCRIPTOR_INIT(0x01, 0x02),
|
|
||||||
MIDI_CS_HEADER_DESCRIPTOR_INIT(AUDIO_MS_SIZ),
|
|
||||||
MIDI_JACK_DESCRIPTOR_INIT(0x01),
|
|
||||||
// OUT endpoint descriptor
|
|
||||||
0x09, 0x05, MIDI_OUT_EP, 0x02, WBVAL(MIDI_EP_MPS), 0x00, 0x00, 0x00,
|
|
||||||
0x05, 0x25, 0x01, 0x01, 0x01,
|
|
||||||
|
|
||||||
// IN endpoint descriptor
|
|
||||||
0x09, 0x05, MIDI_IN_EP, 0x02, WBVAL(MIDI_EP_MPS), 0x00, 0x00, 0x00,
|
|
||||||
0x05, 0x25, 0x01, 0x01, 0x03
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x28, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'M', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'D', 0x00, /* wcChar12 */
|
|
||||||
'I', 0x00, /* wcChar13 */
|
|
||||||
' ', 0x00, /* wcChar14 */
|
|
||||||
'D', 0x00, /* wcChar15 */
|
|
||||||
'E', 0x00, /* wcChar16 */
|
|
||||||
'M', 0x00, /* wcChar17 */
|
|
||||||
'O', 0x00, /* wcChar18 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'1', 0x00, /* wcChar3 */
|
|
||||||
'0', 0x00, /* wcChar4 */
|
|
||||||
'3', 0x00, /* wcChar5 */
|
|
||||||
'1', 0x00, /* wcChar6 */
|
|
||||||
'0', 0x00, /* wcChar7 */
|
|
||||||
'0', 0x00, /* wcChar8 */
|
|
||||||
'0', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[MIDI_EP_MPS];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[MIDI_EP_MPS];
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[MIDI_EP_MPS];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[MIDI_EP_MPS];
|
||||||
@@ -244,11 +153,8 @@ struct usbd_endpoint midi_in_ep = {
|
|||||||
|
|
||||||
void midi_init(uint8_t busid, uintptr_t reg_base)
|
void midi_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &midi_descriptor);
|
usbd_desc_register(busid, &midi_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, midi_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, &intf0);
|
usbd_add_interface(busid, &intf0);
|
||||||
usbd_add_interface(busid, &intf1);
|
usbd_add_interface(busid, &intf1);
|
||||||
usbd_add_endpoint(busid, &midi_out_ep);
|
usbd_add_endpoint(busid, &midi_out_ep);
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
#define MSC_MAX_MPS 64
|
#define MSC_MAX_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01)
|
||||||
};
|
};
|
||||||
@@ -84,85 +83,6 @@ const struct usb_descriptor msc_ram_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t msc_ram_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x01, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
MSC_DESCRIPTOR_INIT(0x00, MSC_OUT_EP, MSC_IN_EP, MSC_MAX_MPS, 0x02),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'M', 0x00, /* wcChar10 */
|
|
||||||
'S', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void usbd_event_handler(uint8_t busid, uint8_t event)
|
static void usbd_event_handler(uint8_t busid, uint8_t event)
|
||||||
{
|
{
|
||||||
@@ -267,11 +187,8 @@ void msc_ram_init(uint8_t busid, uintptr_t reg_base)
|
|||||||
res = rt_device_open(blk_dev, RT_DEVICE_OFLAG_RDWR);
|
res = rt_device_open(blk_dev, RT_DEVICE_OFLAG_RDWR);
|
||||||
RT_ASSERT(res == RT_EOK);
|
RT_ASSERT(res == RT_EOK);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &msc_ram_descriptor);
|
usbd_desc_register(busid, &msc_ram_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, msc_ram_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_msc_init_intf(busid, &intf0, MSC_OUT_EP, MSC_IN_EP));
|
usbd_add_interface(busid, usbd_msc_init_intf(busid, &intf0, MSC_OUT_EP, MSC_IN_EP));
|
||||||
|
|
||||||
usbd_initialize(busid, reg_base, usbd_event_handler);
|
usbd_initialize(busid, reg_base, usbd_event_handler);
|
||||||
|
|||||||
@@ -103,7 +103,6 @@
|
|||||||
|
|
||||||
#define HID_KEYBOARD_REPORT_DESC_SIZE 63
|
#define HID_KEYBOARD_REPORT_DESC_SIZE 63
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
||||||
};
|
};
|
||||||
@@ -185,136 +184,6 @@ const struct usb_descriptor video_audio_hid_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t video_audio_hid_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_VIDEO_DESC_SIZ, 0x06, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
//VIDEO_VC_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02),
|
|
||||||
VIDEO_VC_NOEP_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02),
|
|
||||||
VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x00, 0x00),
|
|
||||||
VIDEO_VS_INPUT_HEADER_DESCRIPTOR_INIT(0x01, VS_HEADER_SIZ, VIDEO_IN_EP, 0x00),
|
|
||||||
VIDEO_VS_FORMAT_MJPEG_DESCRIPTOR_INIT(0x01, 0x01),
|
|
||||||
VIDEO_VS_FRAME_MJPEG_DESCRIPTOR_INIT(0x01, WIDTH, HEIGHT, MIN_BIT_RATE, MAX_BIT_RATE, MAX_FRAME_SIZE, DBVAL(INTERVAL), 0x01, DBVAL(INTERVAL)),
|
|
||||||
VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x01, 0x01),
|
|
||||||
/* 1.2.2.2 Standard VideoStream Isochronous Video Data Endpoint Descriptor */
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(VIDEO_IN_EP, 0x05, VIDEO_PACKET_SIZE, 0x01),
|
|
||||||
AUDIO_AC_DESCRIPTOR_INIT(0x02, 0x03, AUDIO_AC_SIZ, 0x00, 0x03, 0x04),
|
|
||||||
AUDIO_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x01, AUDIO_INTERM_MIC, 0x02, 0x0003),
|
|
||||||
AUDIO_AC_FEATURE_UNIT_DESCRIPTOR_INIT(0x02, 0x01, 0x01, 0x03, 0x00, 0x00),
|
|
||||||
AUDIO_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x03, AUDIO_TERMINAL_STREAMING, 0x02),
|
|
||||||
AUDIO_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x04, AUDIO_TERMINAL_STREAMING, 0x02, 0x0003),
|
|
||||||
AUDIO_AC_FEATURE_UNIT_DESCRIPTOR_INIT(0x05, 0x04, 0x01, 0x03, 0x00, 0x00),
|
|
||||||
AUDIO_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x06, AUDIO_OUTTERM_SPEAKER, 0x05),
|
|
||||||
AUDIO_AS_DESCRIPTOR_INIT(0x03, 0x04, 0x02, AUDIO_SPEAKER_FRAME_SIZE_BYTE, AUDIO_SPEAKER_RESOLUTION_BIT, AUDIO_OUT_EP, 0x09, AUDIO_OUT_PACKET,
|
|
||||||
EP_INTERVAL, AUDIO_SAMPLE_FREQ_3B(AUDIO_SPEAKER_FREQ)),
|
|
||||||
AUDIO_AS_DESCRIPTOR_INIT(0x04, 0x03, 0x02, AUDIO_MIC_FRAME_SIZE_BYTE, AUDIO_MIC_RESOLUTION_BIT, AUDIO_IN_EP, 0x05, AUDIO_IN_PACKET,
|
|
||||||
EP_INTERVAL, AUDIO_SAMPLE_FREQ_3B(AUDIO_MIC_FREQ)),
|
|
||||||
/************** Descriptor of Joystick Mouse interface ****************/
|
|
||||||
/* 09 */
|
|
||||||
0x09, /* bLength: Interface Descriptor size */
|
|
||||||
USB_DESCRIPTOR_TYPE_INTERFACE, /* bDescriptorType: Interface descriptor type */
|
|
||||||
0x05, /* bInterfaceNumber: Number of Interface */
|
|
||||||
0x00, /* bAlternateSetting: Alternate setting */
|
|
||||||
0x01, /* bNumEndpoints */
|
|
||||||
0x03, /* bInterfaceClass: HID */
|
|
||||||
0x01, /* bInterfaceSubClass : 1=BOOT, 0=no boot */
|
|
||||||
0x01, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
|
||||||
0, /* iInterface: Index of string descriptor */
|
|
||||||
/******************** Descriptor of Joystick Mouse HID ********************/
|
|
||||||
/* 18 */
|
|
||||||
0x09, /* bLength: HID Descriptor size */
|
|
||||||
HID_DESCRIPTOR_TYPE_HID, /* bDescriptorType: HID */
|
|
||||||
0x11, /* bcdHID: HID Class Spec release number */
|
|
||||||
0x01,
|
|
||||||
0x00, /* bCountryCode: Hardware target country */
|
|
||||||
0x01, /* bNumDescriptors: Number of HID class descriptors to follow */
|
|
||||||
0x22, /* bDescriptorType */
|
|
||||||
HID_KEYBOARD_REPORT_DESC_SIZE, /* wItemLength: Total length of Report descriptor */
|
|
||||||
0x00,
|
|
||||||
/******************** Descriptor of Mouse endpoint ********************/
|
|
||||||
/* 27 */
|
|
||||||
0x07, /* bLength: Endpoint Descriptor size */
|
|
||||||
USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType: */
|
|
||||||
HID_INT_EP, /* bEndpointAddress: Endpoint Address (IN) */
|
|
||||||
0x03, /* bmAttributes: Interrupt endpoint */
|
|
||||||
HID_INT_EP_SIZE, /* wMaxPacketSize: 4 Byte max */
|
|
||||||
0x00,
|
|
||||||
HID_INT_EP_INTERVAL, /* bInterval: Polling Interval */
|
|
||||||
/* 34 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'U', 0x00, /* wcChar10 */
|
|
||||||
'A', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'4', 0x00, /* wcChar3 */
|
|
||||||
'0', 0x00, /* wcChar4 */
|
|
||||||
'3', 0x00, /* wcChar5 */
|
|
||||||
'1', 0x00, /* wcChar6 */
|
|
||||||
'0', 0x00, /* wcChar7 */
|
|
||||||
'0', 0x00, /* wcChar8 */
|
|
||||||
'0', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const uint8_t hid_keyboard_report_desc[HID_KEYBOARD_REPORT_DESC_SIZE] = {
|
static const uint8_t hid_keyboard_report_desc[HID_KEYBOARD_REPORT_DESC_SIZE] = {
|
||||||
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
|
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
|
||||||
@@ -510,11 +379,8 @@ struct audio_entity_info audio_entity_table[] = {
|
|||||||
|
|
||||||
void composite_init(uint8_t busid, uintptr_t reg_base)
|
void composite_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &video_audio_hid_descriptor);
|
usbd_desc_register(busid, &video_audio_hid_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, video_audio_hid_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
||||||
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
||||||
usbd_add_endpoint(busid, &video_in_ep);
|
usbd_add_endpoint(busid, &video_in_ep);
|
||||||
|
|||||||
@@ -48,7 +48,6 @@
|
|||||||
#define USBD_MAX_POWER 100
|
#define USBD_MAX_POWER 100
|
||||||
#define USBD_LANGID_STRING 1033
|
#define USBD_LANGID_STRING 1033
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
||||||
};
|
};
|
||||||
@@ -118,94 +117,6 @@ const struct usb_descriptor video_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t video_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_VIDEO_DESC_SIZ, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
//VIDEO_VC_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02),
|
|
||||||
VIDEO_VC_NOEP_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02),
|
|
||||||
VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x00, 0x00),
|
|
||||||
VIDEO_VS_INPUT_HEADER_DESCRIPTOR_INIT(0x01, VS_HEADER_SIZ, VIDEO_IN_EP, 0x00),
|
|
||||||
VIDEO_VS_FORMAT_H264_DESCRIPTOR_INIT(0x01, 0x01),
|
|
||||||
VIDEO_VS_FRAME_H264_DESCRIPTOR_INIT(0x01, WIDTH, HEIGHT, MIN_BIT_RATE, MAX_BIT_RATE, DBVAL(INTERVAL), 0x01, DBVAL(INTERVAL)),
|
|
||||||
VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x01, 0x01),
|
|
||||||
/* 1.2.2.2 Standard VideoStream Isochronous Video Data Endpoint Descriptor */
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(VIDEO_IN_EP, 0x05, VIDEO_PACKET_SIZE, 0x01),
|
|
||||||
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'U', 0x00, /* wcChar10 */
|
|
||||||
'V', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'1', 0x00, /* wcChar3 */
|
|
||||||
'0', 0x00, /* wcChar4 */
|
|
||||||
'3', 0x00, /* wcChar5 */
|
|
||||||
'1', 0x00, /* wcChar6 */
|
|
||||||
'0', 0x00, /* wcChar7 */
|
|
||||||
'0', 0x00, /* wcChar8 */
|
|
||||||
'0', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
volatile bool tx_flag = 0;
|
volatile bool tx_flag = 0;
|
||||||
volatile bool iso_tx_busy = false;
|
volatile bool iso_tx_busy = false;
|
||||||
@@ -272,11 +183,8 @@ struct usbd_interface intf1;
|
|||||||
|
|
||||||
void video_init(uint8_t busid, uintptr_t reg_base)
|
void video_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &video_descriptor);
|
usbd_desc_register(busid, &video_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, video_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
||||||
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
||||||
usbd_add_endpoint(busid, &video_in_ep);
|
usbd_add_endpoint(busid, &video_in_ep);
|
||||||
|
|||||||
@@ -48,7 +48,6 @@
|
|||||||
#define USBD_MAX_POWER 100
|
#define USBD_MAX_POWER 100
|
||||||
#define USBD_LANGID_STRING 1033
|
#define USBD_LANGID_STRING 1033
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
||||||
};
|
};
|
||||||
@@ -118,94 +117,6 @@ const struct usb_descriptor video_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t video_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_VIDEO_DESC_SIZ, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
//VIDEO_VC_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02),
|
|
||||||
VIDEO_VC_NOEP_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02),
|
|
||||||
VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x00, 0x00),
|
|
||||||
VIDEO_VS_INPUT_HEADER_DESCRIPTOR_INIT(0x01, VS_HEADER_SIZ, VIDEO_IN_EP, 0x00),
|
|
||||||
VIDEO_VS_FORMAT_MJPEG_DESCRIPTOR_INIT(0x01, 0x01),
|
|
||||||
VIDEO_VS_FRAME_MJPEG_DESCRIPTOR_INIT(0x01, WIDTH, HEIGHT, MIN_BIT_RATE, MAX_BIT_RATE, MAX_FRAME_SIZE, DBVAL(INTERVAL), 0x01, DBVAL(INTERVAL)),
|
|
||||||
VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x01, 0x01),
|
|
||||||
/* 1.2.2.2 Standard VideoStream Isochronous Video Data Endpoint Descriptor */
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(VIDEO_IN_EP, 0x05, VIDEO_PACKET_SIZE, 0x01),
|
|
||||||
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'U', 0x00, /* wcChar10 */
|
|
||||||
'V', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'1', 0x00, /* wcChar3 */
|
|
||||||
'0', 0x00, /* wcChar4 */
|
|
||||||
'3', 0x00, /* wcChar5 */
|
|
||||||
'1', 0x00, /* wcChar6 */
|
|
||||||
'0', 0x00, /* wcChar7 */
|
|
||||||
'0', 0x00, /* wcChar8 */
|
|
||||||
'0', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
volatile bool tx_flag = 0;
|
volatile bool tx_flag = 0;
|
||||||
volatile bool iso_tx_busy = false;
|
volatile bool iso_tx_busy = false;
|
||||||
@@ -272,11 +183,8 @@ struct usbd_interface intf1;
|
|||||||
|
|
||||||
void video_init(uint8_t busid, uintptr_t reg_base)
|
void video_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &video_descriptor);
|
usbd_desc_register(busid, &video_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, video_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
||||||
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
||||||
usbd_add_endpoint(busid, &video_in_ep);
|
usbd_add_endpoint(busid, &video_in_ep);
|
||||||
|
|||||||
@@ -49,7 +49,6 @@
|
|||||||
#define USBD_MAX_POWER 100
|
#define USBD_MAX_POWER 100
|
||||||
#define USBD_LANGID_STRING 1033
|
#define USBD_LANGID_STRING 1033
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01)
|
||||||
};
|
};
|
||||||
@@ -121,95 +120,6 @@ const struct usb_descriptor video_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t video_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_VIDEO_DESC_SIZ, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
//VIDEO_VC_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02),
|
|
||||||
VIDEO_VC_NOEP_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02),
|
|
||||||
VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x00, 0x00),
|
|
||||||
VIDEO_VS_INPUT_HEADER_DESCRIPTOR_INIT(0x01, VS_HEADER_SIZ, VIDEO_IN_EP, 0x00),
|
|
||||||
VIDEO_VS_FORMAT_UNCOMPRESSED_DESCRIPTOR_INIT(0x01, 0x01, VIDEO_GUID_YUY2),
|
|
||||||
VIDEO_VS_FRAME_UNCOMPRESSED_DESCRIPTOR_INIT(0x01, WIDTH, HEIGHT, MIN_BIT_RATE, MAX_BIT_RATE, MAX_FRAME_SIZE, DBVAL(INTERVAL), 0x01, DBVAL(INTERVAL)),
|
|
||||||
VIDEO_VS_COLOR_MATCHING_DESCRIPTOR_INIT(),
|
|
||||||
VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x01, 0x01),
|
|
||||||
/* 1.2.2.2 Standard VideoStream Isochronous Video Data Endpoint Descriptor */
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(VIDEO_IN_EP, 0x05, VIDEO_PACKET_SIZE, 0x01),
|
|
||||||
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'U', 0x00, /* wcChar10 */
|
|
||||||
'V', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'1', 0x00, /* wcChar3 */
|
|
||||||
'0', 0x00, /* wcChar4 */
|
|
||||||
'3', 0x00, /* wcChar5 */
|
|
||||||
'1', 0x00, /* wcChar6 */
|
|
||||||
'0', 0x00, /* wcChar7 */
|
|
||||||
'0', 0x00, /* wcChar8 */
|
|
||||||
'0', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
volatile bool tx_flag = 0;
|
volatile bool tx_flag = 0;
|
||||||
volatile bool iso_tx_busy = false;
|
volatile bool iso_tx_busy = false;
|
||||||
@@ -276,11 +186,8 @@ struct usbd_interface intf1;
|
|||||||
|
|
||||||
void video_init(uint8_t busid, uintptr_t reg_base)
|
void video_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &video_descriptor);
|
usbd_desc_register(busid, &video_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, video_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
||||||
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
usbd_add_interface(busid, usbd_video_init_intf(busid, &intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
|
||||||
usbd_add_endpoint(busid, &video_in_ep);
|
usbd_add_endpoint(busid, &video_in_ep);
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ struct usb_bos_descriptor bos_desc = {
|
|||||||
#define USB_CONFIG_SIZE (34 + 9)
|
#define USB_CONFIG_SIZE (34 + 9)
|
||||||
#define HID_KEYBOARD_REPORT_DESC_SIZE 63
|
#define HID_KEYBOARD_REPORT_DESC_SIZE 63
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_1, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_1, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01)
|
||||||
};
|
};
|
||||||
@@ -130,89 +129,6 @@ const struct usb_descriptor webusb_hid_descriptor = {
|
|||||||
.webusb_url_descriptor = &webusb_url_desc,
|
.webusb_url_descriptor = &webusb_url_desc,
|
||||||
.bos_descriptor = &bos_desc
|
.bos_descriptor = &bos_desc
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
static const uint8_t webusb_hid_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_1, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0002, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
HID_KEYBOARD_DESCRIPTOR_INIT(0x00, 0x01, HID_KEYBOARD_REPORT_DESC_SIZE, HID_INT_EP, HID_INT_EP_SIZE, HID_INT_EP_INTERVAL),
|
|
||||||
USB_INTERFACE_DESCRIPTOR_INIT(WEBUSB_INTF_NUM, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x2C, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'W', 0x00, /* wcChar10 */
|
|
||||||
'E', 0x00, /* wcChar11 */
|
|
||||||
'B', 0x00, /* wcChar12 */
|
|
||||||
'U', 0x00, /* wcChar13 */
|
|
||||||
'S', 0x00, /* wcChar14 */
|
|
||||||
'B', 0x00, /* wcChar15 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'D', 0x00, /* wcChar17 */
|
|
||||||
'E', 0x00, /* wcChar18 */
|
|
||||||
'M', 0x00, /* wcChar19 */
|
|
||||||
'O', 0x00, /* wcChar20 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* USB HID device Configuration Descriptor */
|
/* USB HID device Configuration Descriptor */
|
||||||
static uint8_t hid_desc[9] __ALIGN_END = {
|
static uint8_t hid_desc[9] __ALIGN_END = {
|
||||||
@@ -309,16 +225,8 @@ static struct usbd_interface intf0;
|
|||||||
|
|
||||||
void webusb_hid_keyboard_init(uint8_t busid, uintptr_t reg_base)
|
void webusb_hid_keyboard_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &webusb_hid_descriptor);
|
usbd_desc_register(busid, &webusb_hid_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, webusb_hid_descriptor);
|
|
||||||
#endif
|
|
||||||
#ifndef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_bos_desc_register(busid, &bos_desc);
|
|
||||||
usbd_msosv2_desc_register(busid, &msosv2_desc);
|
|
||||||
usbd_webusb_desc_register(busid, &webusb_url_desc);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_hid_init_intf(busid, &intf0, hid_keyboard_report_desc, HID_KEYBOARD_REPORT_DESC_SIZE));
|
usbd_add_interface(busid, usbd_hid_init_intf(busid, &intf0, hid_keyboard_report_desc, HID_KEYBOARD_REPORT_DESC_SIZE));
|
||||||
usbd_add_endpoint(busid, &hid_in_ep);
|
usbd_add_endpoint(busid, &hid_in_ep);
|
||||||
|
|
||||||
|
|||||||
@@ -133,7 +133,6 @@ struct usb_msosv1_descriptor msosv1_desc = {
|
|||||||
#define WINUSB_EP_MPS 64
|
#define WINUSB_EP_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01)
|
||||||
};
|
};
|
||||||
@@ -205,151 +204,6 @@ const struct usb_descriptor winusbv1_descriptor = {
|
|||||||
.string_descriptor_callback = string_descriptor_callback,
|
.string_descriptor_callback = string_descriptor_callback,
|
||||||
.msosv1_descriptor = &msosv1_desc
|
.msosv1_descriptor = &msosv1_desc
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t winusbv1_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, INTF_NUM, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
USB_INTERFACE_DESCRIPTOR_INIT(0x00, 0x00, 0x02, 0xff, 0xff, 0x00, 0x04),
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_IN_EP, 0x02, WINUSB_EP_MPS, 0x00),
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_OUT_EP, 0x02, WINUSB_EP_MPS, 0x00),
|
|
||||||
#if WINUSB_NUM == 2
|
|
||||||
USB_INTERFACE_DESCRIPTOR_INIT(0x01, 0x00, 0x02, 0xff, 0xff, 0x00, 0x05),
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_IN_EP2, 0x02, WINUSB_EP_MPS, 0x00),
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_OUT_EP2, 0x02, WINUSB_EP_MPS, 0x00),
|
|
||||||
#endif
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x2C, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'W', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'N', 0x00, /* wcChar12 */
|
|
||||||
'U', 0x00, /* wcChar13 */
|
|
||||||
'S', 0x00, /* wcChar14 */
|
|
||||||
'B', 0x00, /* wcChar15 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'D', 0x00, /* wcChar17 */
|
|
||||||
'E', 0x00, /* wcChar18 */
|
|
||||||
'M', 0x00, /* wcChar19 */
|
|
||||||
'O', 0x00, /* wcChar20 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'1', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string4 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x30, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'W', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'N', 0x00, /* wcChar12 */
|
|
||||||
'U', 0x00, /* wcChar13 */
|
|
||||||
'S', 0x00, /* wcChar14 */
|
|
||||||
'B', 0x00, /* wcChar15 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'D', 0x00, /* wcChar17 */
|
|
||||||
'E', 0x00, /* wcChar18 */
|
|
||||||
'M', 0x00, /* wcChar19 */
|
|
||||||
'O', 0x00, /* wcChar20 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'1', 0x00, /* wcChar21 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string5 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x30, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'W', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'N', 0x00, /* wcChar12 */
|
|
||||||
'U', 0x00, /* wcChar13 */
|
|
||||||
'S', 0x00, /* wcChar14 */
|
|
||||||
'B', 0x00, /* wcChar15 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'D', 0x00, /* wcChar17 */
|
|
||||||
'E', 0x00, /* wcChar18 */
|
|
||||||
'M', 0x00, /* wcChar19 */
|
|
||||||
'O', 0x00, /* wcChar20 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'2', 0x00, /* wcChar21 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048];
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
||||||
@@ -465,14 +319,8 @@ struct usbd_interface intf1;
|
|||||||
|
|
||||||
void winusbv1_init(uint8_t busid, uintptr_t reg_base)
|
void winusbv1_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &winusbv1_descriptor);
|
usbd_desc_register(busid, &winusbv1_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, winusbv1_descriptor);
|
|
||||||
#endif
|
|
||||||
#ifndef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_msosv1_desc_register(busid, &msosv1_desc);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, &intf0);
|
usbd_add_interface(busid, &intf0);
|
||||||
usbd_add_endpoint(busid, &winusb_out_ep1);
|
usbd_add_endpoint(busid, &winusb_out_ep1);
|
||||||
usbd_add_endpoint(busid, &winusb_in_ep1);
|
usbd_add_endpoint(busid, &winusb_in_ep1);
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ const struct usb_bos_descriptor bos_desc = {
|
|||||||
#define WINUSB_EP_MPS 64
|
#define WINUSB_EP_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_1, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_1, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
||||||
};
|
};
|
||||||
@@ -121,90 +120,6 @@ const struct usb_descriptor winusbv2_cdc_descriptor = {
|
|||||||
.msosv2_descriptor = &msosv2_desc,
|
.msosv2_descriptor = &msosv2_desc,
|
||||||
.bos_descriptor = &bos_desc
|
.bos_descriptor = &bos_desc
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t winusbv2_cdc_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_1, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01),
|
|
||||||
/* Configuration 0 */
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, INTF_NUM, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
/* Interface 0 */
|
|
||||||
USB_INTERFACE_DESCRIPTOR_INIT(0x00, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x02),
|
|
||||||
/* Endpoint OUT 2 */
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_OUT_EP, USB_ENDPOINT_TYPE_BULK, WINUSB_EP_MPS, 0x00),
|
|
||||||
/* Endpoint IN 1 */
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_IN_EP, USB_ENDPOINT_TYPE_BULK, WINUSB_EP_MPS, 0x00),
|
|
||||||
CDC_ACM_DESCRIPTOR_INIT(0x01, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP, WINUSB_EP_MPS, 0x00),
|
|
||||||
/* String 0 (LANGID) */
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
/* String 1 (Manufacturer) */
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x2C, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'W', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'N', 0x00, /* wcChar12 */
|
|
||||||
'U', 0x00, /* wcChar13 */
|
|
||||||
'S', 0x00, /* wcChar14 */
|
|
||||||
'B', 0x00, /* wcChar15 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'D', 0x00, /* wcChar17 */
|
|
||||||
'E', 0x00, /* wcChar18 */
|
|
||||||
'M', 0x00, /* wcChar19 */
|
|
||||||
'O', 0x00, /* wcChar20 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
/* Device Qualifier */
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x10,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
/* End */
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048];
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
||||||
@@ -314,15 +229,8 @@ struct usbd_interface intf2;
|
|||||||
|
|
||||||
void winusbv2_cdc_init(uint8_t busid, uintptr_t reg_base)
|
void winusbv2_cdc_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &winusbv2_cdc_descriptor);
|
usbd_desc_register(busid, &winusbv2_cdc_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, winusbv2_cdc_descriptor);
|
|
||||||
#endif
|
|
||||||
#ifndef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_bos_desc_register(busid, &bos_desc);
|
|
||||||
usbd_msosv2_desc_register(busid, &msosv2_desc);
|
|
||||||
#endif
|
|
||||||
/*!< winusb */
|
/*!< winusb */
|
||||||
usbd_add_interface(busid, &winusb_intf);
|
usbd_add_interface(busid, &winusb_intf);
|
||||||
usbd_add_endpoint(busid, &winusb_out_ep1);
|
usbd_add_endpoint(busid, &winusb_out_ep1);
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ const struct usb_bos_descriptor bos_desc = {
|
|||||||
#define WINUSB_EP_MPS 64
|
#define WINUSB_EP_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_1, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_1, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01)
|
||||||
};
|
};
|
||||||
@@ -135,151 +134,6 @@ const struct usb_descriptor winusbv2_descriptor = {
|
|||||||
.msosv2_descriptor = &msosv2_desc,
|
.msosv2_descriptor = &msosv2_desc,
|
||||||
.bos_descriptor = &bos_desc,
|
.bos_descriptor = &bos_desc,
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
const uint8_t winusbv2_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_1, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0001, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, INTF_NUM, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
USB_INTERFACE_DESCRIPTOR_INIT(0x00, 0x00, 0x02, 0xff, 0xff, 0x00, 0x04),
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_IN_EP, 0x02, WINUSB_EP_MPS, 0x00),
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_OUT_EP, 0x02, WINUSB_EP_MPS, 0x00),
|
|
||||||
#if WINUSB_NUM == 2
|
|
||||||
USB_INTERFACE_DESCRIPTOR_INIT(0x01, 0x00, 0x02, 0xff, 0xff, 0x00, 0x05),
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_IN_EP2, 0x02, WINUSB_EP_MPS, 0x00),
|
|
||||||
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_OUT_EP2, 0x02, WINUSB_EP_MPS, 0x00),
|
|
||||||
#endif
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x2C, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'W', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'N', 0x00, /* wcChar12 */
|
|
||||||
'U', 0x00, /* wcChar13 */
|
|
||||||
'S', 0x00, /* wcChar14 */
|
|
||||||
'B', 0x00, /* wcChar15 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'D', 0x00, /* wcChar17 */
|
|
||||||
'E', 0x00, /* wcChar18 */
|
|
||||||
'M', 0x00, /* wcChar19 */
|
|
||||||
'O', 0x00, /* wcChar20 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'1', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string4 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x30, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'W', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'N', 0x00, /* wcChar12 */
|
|
||||||
'U', 0x00, /* wcChar13 */
|
|
||||||
'S', 0x00, /* wcChar14 */
|
|
||||||
'B', 0x00, /* wcChar15 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'D', 0x00, /* wcChar17 */
|
|
||||||
'E', 0x00, /* wcChar18 */
|
|
||||||
'M', 0x00, /* wcChar19 */
|
|
||||||
'O', 0x00, /* wcChar20 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'1', 0x00, /* wcChar21 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string5 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x30, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'W', 0x00, /* wcChar10 */
|
|
||||||
'I', 0x00, /* wcChar11 */
|
|
||||||
'N', 0x00, /* wcChar12 */
|
|
||||||
'U', 0x00, /* wcChar13 */
|
|
||||||
'S', 0x00, /* wcChar14 */
|
|
||||||
'B', 0x00, /* wcChar15 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'D', 0x00, /* wcChar17 */
|
|
||||||
'E', 0x00, /* wcChar18 */
|
|
||||||
'M', 0x00, /* wcChar19 */
|
|
||||||
'O', 0x00, /* wcChar20 */
|
|
||||||
' ', 0x00, /* wcChar16 */
|
|
||||||
'2', 0x00, /* wcChar21 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048];
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
||||||
@@ -395,15 +249,8 @@ struct usbd_interface intf1;
|
|||||||
|
|
||||||
void winusbv2_init(uint8_t busid, uintptr_t reg_base)
|
void winusbv2_init(uint8_t busid, uintptr_t reg_base)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &winusbv2_descriptor);
|
usbd_desc_register(busid, &winusbv2_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, winusbv2_descriptor);
|
|
||||||
#endif
|
|
||||||
#ifndef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_bos_desc_register(busid, &bos_desc);
|
|
||||||
usbd_msosv2_desc_register(busid, &msosv2_desc);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, &intf0);
|
usbd_add_interface(busid, &intf0);
|
||||||
usbd_add_endpoint(busid, &winusb_out_ep1);
|
usbd_add_endpoint(busid, &winusb_out_ep1);
|
||||||
usbd_add_endpoint(busid, &winusb_in_ep1);
|
usbd_add_endpoint(busid, &winusb_in_ep1);
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ bos描述符,winusb 描述符。
|
|||||||
|
|
||||||
- **desc** 描述符的句柄
|
- **desc** 描述符的句柄
|
||||||
|
|
||||||
.. note:: 当前默认开启 CONFIG_USBDEV_ADVANCE_DESC,如果需要使用旧版本 API 请关闭该宏
|
.. note:: 当前默认开启 CONFIG_USBDEV_ADVANCE_DESC,如果需要使用旧版本 API 请关闭该宏,从 v1.6.0 开始只有开启了 CONFIG_USBDEV_ADVANCE_DESC 的 API
|
||||||
|
|
||||||
usbd_add_interface
|
usbd_add_interface
|
||||||
""""""""""""""""""""""""""""""""""""
|
""""""""""""""""""""""""""""""""""""
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
#define CDC_MAX_MPS 64
|
#define CDC_MAX_MPS 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
static const uint8_t device_descriptor[] = {
|
static const uint8_t device_descriptor[] = {
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01)
|
||||||
};
|
};
|
||||||
@@ -84,86 +83,6 @@ const struct usb_descriptor cdc_descriptor = {
|
|||||||
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
.device_quality_descriptor_callback = device_quality_descriptor_callback,
|
||||||
.string_descriptor_callback = string_descriptor_callback
|
.string_descriptor_callback = string_descriptor_callback
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
/*!< global descriptor */
|
|
||||||
static const uint8_t cdc_descriptor[] = {
|
|
||||||
USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xEF, 0x02, 0x01, USBD_VID, USBD_PID, 0x0100, 0x01),
|
|
||||||
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
|
|
||||||
CDC_ACM_DESCRIPTOR_INIT(0x00, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP, CDC_MAX_MPS, 0x02),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string0 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
USB_LANGID_INIT(USBD_LANGID_STRING),
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string1 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x14, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string2 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x26, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'C', 0x00, /* wcChar0 */
|
|
||||||
'h', 0x00, /* wcChar1 */
|
|
||||||
'e', 0x00, /* wcChar2 */
|
|
||||||
'r', 0x00, /* wcChar3 */
|
|
||||||
'r', 0x00, /* wcChar4 */
|
|
||||||
'y', 0x00, /* wcChar5 */
|
|
||||||
'U', 0x00, /* wcChar6 */
|
|
||||||
'S', 0x00, /* wcChar7 */
|
|
||||||
'B', 0x00, /* wcChar8 */
|
|
||||||
' ', 0x00, /* wcChar9 */
|
|
||||||
'C', 0x00, /* wcChar10 */
|
|
||||||
'D', 0x00, /* wcChar11 */
|
|
||||||
'C', 0x00, /* wcChar12 */
|
|
||||||
' ', 0x00, /* wcChar13 */
|
|
||||||
'D', 0x00, /* wcChar14 */
|
|
||||||
'E', 0x00, /* wcChar15 */
|
|
||||||
'M', 0x00, /* wcChar16 */
|
|
||||||
'O', 0x00, /* wcChar17 */
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// string3 descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x16, /* bLength */
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
|
|
||||||
'2', 0x00, /* wcChar0 */
|
|
||||||
'0', 0x00, /* wcChar1 */
|
|
||||||
'2', 0x00, /* wcChar2 */
|
|
||||||
'2', 0x00, /* wcChar3 */
|
|
||||||
'1', 0x00, /* wcChar4 */
|
|
||||||
'2', 0x00, /* wcChar5 */
|
|
||||||
'3', 0x00, /* wcChar6 */
|
|
||||||
'4', 0x00, /* wcChar7 */
|
|
||||||
'5', 0x00, /* wcChar8 */
|
|
||||||
'6', 0x00, /* wcChar9 */
|
|
||||||
#ifdef CONFIG_USB_HS
|
|
||||||
///////////////////////////////////////
|
|
||||||
/// device qualifier descriptor
|
|
||||||
///////////////////////////////////////
|
|
||||||
0x0a,
|
|
||||||
USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
|
|
||||||
0x00,
|
|
||||||
0x02,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
0x40,
|
|
||||||
0x00,
|
|
||||||
0x00,
|
|
||||||
#endif
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048]; /* 2048 is only for test speed , please use CDC_MAX_MPS for common*/
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_buffer[2048]; /* 2048 is only for test speed , please use CDC_MAX_MPS for common*/
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t write_buffer[2048];
|
||||||
@@ -242,11 +161,8 @@ void cdc_acm_otg_init(uint8_t busid, uintptr_t reg_base)
|
|||||||
memcpy(&write_buffer[0], data, 10);
|
memcpy(&write_buffer[0], data, 10);
|
||||||
memset(&write_buffer[10], 'a', 2038);
|
memset(&write_buffer[10], 'a', 2038);
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV_ADVANCE_DESC
|
|
||||||
usbd_desc_register(busid, &cdc_descriptor);
|
usbd_desc_register(busid, &cdc_descriptor);
|
||||||
#else
|
|
||||||
usbd_desc_register(busid, cdc_descriptor);
|
|
||||||
#endif
|
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf0));
|
||||||
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
usbd_add_interface(busid, usbd_cdc_acm_init_intf(busid, &intf1));
|
||||||
usbd_add_endpoint(busid, &cdc_out_ep);
|
usbd_add_endpoint(busid, &cdc_out_ep);
|
||||||
|
|||||||
Reference in New Issue
Block a user