[fix] fix adc/usb/spi/i2s demo

This commit is contained in:
jzlv 2021-04-27 12:39:22 +08:00
parent d98495bbb4
commit ca849b3ed8
24 changed files with 673 additions and 116 deletions

View file

@ -28,7 +28,6 @@ static const char *parity_name[] = {"N","O","E","M","S"};
/* Device data structure */
struct cdc_acm_cfg_private {
// /* Interface data buffer */
/* CDC ACM line coding properties. LE order */
struct cdc_line_coding line_coding;
/* CDC ACM line state bitmap, DTE side */
@ -50,6 +49,7 @@ static void usbd_cdc_acm_reset(void)
usbd_cdc_acm_cfg.line_coding.bDataBits = 8;
usbd_cdc_acm_cfg.line_coding.bParityType = 0;
usbd_cdc_acm_cfg.line_coding.bCharFormat = 0;
usbd_cdc_acm_cfg.configured = false;
}
/**
@ -61,7 +61,7 @@ static void usbd_cdc_acm_reset(void)
*
* @return 0 on success, negative errno code on fail.
*/
int cdc_acm_class_request_handler(struct usb_setup_packet *pSetup,uint8_t **data,uint32_t *len)
static int cdc_acm_class_request_handler(struct usb_setup_packet *pSetup,uint8_t **data,uint32_t *len)
{
switch (pSetup->bRequest)
{
@ -123,14 +123,13 @@ int cdc_acm_class_request_handler(struct usb_setup_packet *pSetup,uint8_t **data
return 0;
}
void cdc_notify_handler(uint8_t event, void* arg)
static void cdc_notify_handler(uint8_t event, void* arg)
{
switch (event)
{
case USB_EVENT_RESET:
usbd_cdc_acm_reset();
break;
default:
break;
}
@ -166,24 +165,3 @@ void usbd_cdc_add_acm_interface(usbd_class_t *class, usbd_interface_t *intf)
usbd_class_add_interface(class,intf);
}
void usbd_cdc_add_custom_interface(usbd_class_t *class, usbd_interface_t *intf)
{
static usbd_class_t *last_class = NULL;
if(last_class != class)
{
last_class = class;
usbd_class_register(class);
}
intf->class_handler = cdc_acm_class_request_handler;
intf->custom_handler = NULL;
intf->vendor_handler = NULL;
intf->notify_handler = cdc_notify_handler;
usbd_class_add_interface(class,intf);
}
void usbd_cdc_add_endpoint(usbd_interface_t *intf, usbd_endpoint_t *ep)
{
usbd_interface_add_endpoint(intf,ep);
}

View file

@ -369,8 +369,6 @@ struct cdc_ecm_descriptor {
0x01 /* bInterval */
void usbd_cdc_add_acm_interface(usbd_class_t *class, usbd_interface_t *intf);
void usbd_cdc_add_custom_interface(usbd_class_t *class, usbd_interface_t *intf);
void usbd_cdc_add_endpoint(usbd_interface_t *intf, usbd_endpoint_t *ep);
void usbd_cdc_acm_set_line_coding(uint32_t baudrate, uint8_t databits, uint8_t parity, uint8_t stopbits);
void usbd_cdc_acm_set_dtr(bool dtr);

View file

@ -78,6 +78,7 @@ static struct usbd_core_cfg_priv
static usb_slist_t usbd_class_head= USB_SLIST_OBJECT_INIT(usbd_class_head);
static struct usb_msosv1_descriptor *msosv1_desc;
static struct usb_bos_descriptor *bos_desc;
static volatile uint32_t sof_tick = 0;
/**
* @brief print the contents of a setup packet
*
@ -840,6 +841,7 @@ static int usbd_vendor_request_handler(struct usb_setup_packet *setup, uint8_t *
}
usb_slist_t *i, *j;
usb_slist_for_each(i,&usbd_class_head)
{
usbd_class_t* class= usb_slist_entry(i,struct usbd_class,list);
@ -847,8 +849,10 @@ static int usbd_vendor_request_handler(struct usb_setup_packet *setup, uint8_t *
usb_slist_for_each(j,&class->intf_list)
{
usbd_interface_t* intf = usb_slist_entry(j,struct usbd_interface,list);
if(intf->vendor_handler && ((intf->intf_num == (setup->wValue & 0xFF)) || (intf->intf_num == (setup->wIndex & 0xFF))))
return intf->vendor_handler(setup, data, len);
if(intf->vendor_handler && !intf->vendor_handler(setup, data, len))
{
return 0;
}
}
}
@ -1162,12 +1166,16 @@ void usbd_event_notify_handler(uint8_t event, void* arg)
{
switch (event)
{
case USB_EVENT_SOF:
sof_tick++;
USBD_LOG_DBG("tick: %d\r\n", sof_tick);
break;
case USB_EVENT_RESET:
usbd_set_address(0);
#if USBD_EP_CALLBACK_SEARCH_METHOD == 1
usbd_ep_callback_register();
#endif
case USB_EVENT_ERROR:
case USB_EVENT_SOF:
case USB_EVENT_CONNECTED:
case USB_EVENT_CONFIGURED:
case USB_EVENT_SUSPEND:
@ -1230,3 +1238,13 @@ void usbd_interface_add_endpoint(usbd_interface_t *intf,usbd_endpoint_t *ep)
{
usb_slist_add_tail(&intf->ep_list,&ep->list);
}
bool usb_device_is_configured(void)
{
return usbd_core_cfg.configured;
}
uint32_t usbd_get_sof_tick(void)
{
return sof_tick;
}

View file

@ -130,6 +130,8 @@ void usbd_class_register(usbd_class_t *class);
void usbd_msosv1_desc_register(struct usb_msosv1_descriptor *desc);
void usbd_class_add_interface(usbd_class_t *class,usbd_interface_t *intf);
void usbd_interface_add_endpoint(usbd_interface_t *intf,usbd_endpoint_t *ep);
bool usb_device_is_configured(void);
uint32_t usbd_get_sof_tick(void);
/**
* @}
*/