diff options
| author | sakumisu <[email protected]> | 2024-11-11 21:50:13 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2024-11-11 21:50:13 +0800 |
| commit | 24fc172ad84551b439cd632a9f445395b735fb67 (patch) | |
| tree | 19c66b0e03a32d02e159a963be2cec57e26265d6 | |
| parent | 58d552d03dc43cad33987f30c237ff48c0702803 (diff) | |
update(demo/usbd_rndis): update send & recv done api, add check for this demo
| -rw-r--r-- | class/wireless/usbd_rndis.c | 13 | ||||
| -rw-r--r-- | class/wireless/usbd_rndis.h | 3 | ||||
| -rw-r--r-- | demo/cdc_rndis_template.c | 12 |
3 files changed, 22 insertions, 6 deletions
diff --git a/class/wireless/usbd_rndis.c b/class/wireless/usbd_rndis.c index 61bcd290..43849706 100644 --- a/class/wireless/usbd_rndis.c +++ b/class/wireless/usbd_rndis.c @@ -478,7 +478,7 @@ void rndis_bulk_out(uint8_t busid, uint8_t ep, uint32_t nbytes) g_rndis_rx_data_buffer += hdr->DataOffset + sizeof(rndis_generic_msg_t); g_rndis_rx_data_length = hdr->DataLength; - usbd_rndis_data_recv_done(); + usbd_rndis_data_recv_done(g_rndis_rx_data_length); } void rndis_bulk_in(uint8_t busid, uint8_t ep, uint32_t nbytes) @@ -489,6 +489,7 @@ void rndis_bulk_in(uint8_t busid, uint8_t ep, uint32_t nbytes) /* send zlp */ usbd_ep_start_write(0, ep, NULL, 0); } else { + usbd_rndis_data_send_done(g_rndis_tx_data_length); g_rndis_tx_data_length = 0; } } @@ -592,3 +593,13 @@ struct usbd_interface *usbd_rndis_init_intf(struct usbd_interface *intf, return intf; } + +__WEAK void usbd_rndis_data_recv_done(uint32_t len) +{ + (void)len; +} + +__WEAK void usbd_rndis_data_send_done(uint32_t len) +{ + (void)len; +}
\ No newline at end of file diff --git a/class/wireless/usbd_rndis.h b/class/wireless/usbd_rndis.h index 8a9581f6..72b89eab 100644 --- a/class/wireless/usbd_rndis.h +++ b/class/wireless/usbd_rndis.h @@ -18,7 +18,8 @@ struct usbd_interface *usbd_rndis_init_intf(struct usbd_interface *intf, const uint8_t in_ep, const uint8_t int_ep, uint8_t mac[6]); -void usbd_rndis_data_recv_done(void); +void usbd_rndis_data_recv_done(uint32_t len); +void usbd_rndis_data_send_done(uint32_t len); #ifdef CONFIG_USBDEV_RNDIS_USING_LWIP struct pbuf *usbd_rndis_eth_rx(void); diff --git a/demo/cdc_rndis_template.c b/demo/cdc_rndis_template.c index 31078836..a83a7555 100644 --- a/demo/cdc_rndis_template.c +++ b/demo/cdc_rndis_template.c @@ -6,6 +6,10 @@ #include "usbd_core.h" #include "usbd_rndis.h" +#ifndef CONFIG_USBDEV_RNDIS_USING_LWIP +#error "Please enable CONFIG_USBDEV_RNDIS_USING_LWIP for this demo" +#endif + /*!< endpoint address */ #define CDC_IN_EP 0x81 #define CDC_OUT_EP 0x02 @@ -170,7 +174,7 @@ rt_err_t rt_usbd_rndis_eth_tx(rt_device_t dev, struct pbuf *p) return usbd_rndis_eth_tx(p); } -void usbd_rndis_data_recv_done(void) +void usbd_rndis_data_recv_done(uint32_t len) { eth_device_ready(&rndis_dev); } @@ -258,12 +262,12 @@ void rndis_lwip_init(void) while (!netif_is_up(netif)) { } - // while (dhserv_init(&dhcp_config)) {} + while (dhserv_init(&dhcp_config)) {} - // while (dnserv_init(&ipaddr, PORT_DNS, dns_query_proc)) {} + while (dnserv_init(&ipaddr, PORT_DNS, dns_query_proc)) {} } -void usbd_rndis_data_recv_done(void) +void usbd_rndis_data_recv_done(uint32_t len) { } |
