Просмотр исходного кода

update(demo/usbd_rndis): update send & recv done api, add check for this demo

sakumisu 1 год назад
Родитель
Сommit
24fc172ad8
3 измененных файлов с 22 добавлено и 6 удалено
  1. 12 1
      class/wireless/usbd_rndis.c
  2. 2 1
      class/wireless/usbd_rndis.h
  3. 8 4
      demo/cdc_rndis_template.c

+ 12 - 1
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;
+}

+ 2 - 1
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);

+ 8 - 4
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)
 {
 }