summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2024-11-11 21:50:13 +0800
committersakumisu <[email protected]>2024-11-11 21:50:13 +0800
commit24fc172ad84551b439cd632a9f445395b735fb67 (patch)
tree19c66b0e03a32d02e159a963be2cec57e26265d6
parent58d552d03dc43cad33987f30c237ff48c0702803 (diff)
update(demo/usbd_rndis): update send & recv done api, add check for this demo
-rw-r--r--class/wireless/usbd_rndis.c13
-rw-r--r--class/wireless/usbd_rndis.h3
-rw-r--r--demo/cdc_rndis_template.c12
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)
{
}