Эх сурвалжийг харах

fix:Fix RNDIS DHCP dependency,and delay implementation

Rbb666 2 сар өмнө
parent
commit
eec89fd768

+ 10 - 3
demo/cdc_rndis_template.c

@@ -189,14 +189,14 @@ void usbd_rndis_data_send_done(uint32_t len)
 #error rndis must enable RT_LWIP_DHCP
 #endif
 
-#ifndef LWIP_USING_DHCPD
-#error rndis must enable LWIP_USING_DHCPD
+#ifdef LWIP_USING_DHCPD
+#include <dhcp_server.h>
 #endif
 
 #include <rtthread.h>
 #include <rtdevice.h>
 #include <netif/ethernetif.h>
-#include <dhcp_server.h>
+#include <netdev.h>
 
 struct eth_device rndis_dev;
 
@@ -250,7 +250,14 @@ void rndis_lwip_init(void)
     eth_device_init(&rndis_dev, "u0");
 
     eth_device_linkchange(&rndis_dev, RT_TRUE);
+#ifdef LWIP_USING_DHCPD
     dhcpd_start("u0");
+#else
+    struct netdev *netdev = netdev_get_by_name("u0");
+    if (netdev) {
+        netdev_dhcp_enabled(netdev, RT_TRUE);
+    }
+#endif
 }
 
 void usbd_rndis_data_recv_done(uint32_t len)

+ 8 - 0
port/kinetis/usb_glue_mcx.c

@@ -82,4 +82,12 @@ void usb_dc_low_level_deinit(uint8_t busid)
 
 void usbd_kinetis_delay_ms(uint8_t ms)
 {
+#ifdef __RTTHREAD__
+    rt_thread_mdelay(ms);
+#else
+    for (uint32_t i = 0; i < ms; i++)
+    {
+        for (volatile uint32_t j = 0; j < 10000; j++);
+    }
+#endif
 }